IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 郭天祥的10天学会51单片机_第十节 -> 正文阅读

[嵌入式]郭天祥的10天学会51单片机_第十节

要多练,多练C语言程序,练习C语言程序编程思路,可以把别人的程序改改,找些电路焊接调试

AD985可以产生方波,三角波,正弦波

低通滤波器是通过低频阻止高频,作用是滤除杂波

液晶显示单片机状态

运算放大器放大波形

积分器将方波积分成三角波

AD985里面有比较器可以将正弦波变成方波

AD985是5伏的,单片机是3伏的,两者之间要有个电压转换器

数码管不仅可以用锁存器来驱动,也可以用三极管来驱动

一个函数用来刷新秒,分,时

键盘调节用三个键:功能键(秒的光标在闪烁,此时可以调节时间,分和小时同理),功能键第一次按键调节秒,第二次调节分,第三次调节小时,第四次恢复(程序中可以用一个变量计数,这个变量是几就执行相应的程序);TX-1C型单片机实验板原理图中因为LCDEN和RS用了,就不用它们做键盘了,可以用S9,S13,S17,使用时将RD置0,只需检测P3.0,P3.1和CSDA,键盘上最右列的三个,检测这三个键哪个键为低电平,就能知道哪个键被按下,这里把矩阵键盘(P3.0,P3.1和CSDA)当独立键盘使用

编程时,先让液晶显示,再利用定时器定时显示时间,先显示秒,再显示分和十,再做键盘调节,先做一个键调节,然后做其它键调节

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

sbit rs=P3^5;

sbit lcden=P3^4;

sbit s1=P3^0;//键盘的三个功能键

sbit s2=P3^1;

sbit s3=P3^2;//对应于CSDA

sbit rd=P3^7;//将RD置0,检测P3.0,P3.1和CSDA的状态是否为低电平

uchar count,s1num;

char miao,shi,fen;

uchar code table[]="? 2007-7-30 MON";//加上空格为向右移动再显示

uchar code table1[]="??? 00:00:00";

void delay(uint z)

{

???????? uint x,y;

???????? for(x=z;x>0;x--)

?????????????????? for(y=110;y>0;y--);

}

void write_com(uchar com)

{

???????? rs=0;

???????? lcden=0;

???????? P0=com;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;??

}

void write_date(uchar date)

{

???????? rs=1;

???????? lcden=0;

???????? P0=date;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;??

}

void init()

{

???????? uchar num;

???????? dula=0;//开始要关断数码管

???????? wela=0;

???????? lcden=0;

//????? fen=59;

//????? miao=53;

//????? shi=23;

???????? write_com(0x38);

???????? write_com(0x0c);

???????? write_com(0x06);

???????? write_com(0x01);

???????? write_com(0x80);

???????? for(num=0;num<15;num++)

?????????????????? {

??????????????????????????? write_date(table[num]);

??????????????????????????? delay(5);

?????????????????? }

???????? write_com(0x80+0x40);

???????? for(num=0;num<12;num++)

?????????????????? {

??????????????????????????? write_date(table1[num]);

??????????????????????????? delay(5);

?????????????????? }

???????? TMOD=0x01;

???????? TH0=(65536-50000)/256;

???????? TL0=(65536-50000)%256;

???????? EA=1;

???????? ET0=1;

???????? TR0=1;

}

void write_sfm(uchar add,uchar date)//写时或分或秒(2位数),add 是位置,date是数值

{

???????? uchar shi,ge;

???????? shi=date/10;//因为数码管一位一位显示,时,分,秒都是两位数,要分开

???????? ge=date%10;

???????? write_com(0x80+0x40+add);

???????? write_date(0x30+shi);//见字符手册的PDF的P11,例如6是30+6

???????? write_date(0x30+ge);

}

void keyscan()

{

???????? rd=0;

???????? if(s1==0)?

???????? {

?????????????????? delay(5);//消抖

?????????????????? if(s1==0)//第一个功能键的作用,让秒钟停止闪烁

?????????????????? {???????

s1num++;

??????????????????????????? while(!s1);//键盘松手才开始执行功能键的下列程序

??????????????????????????? if(s1num==1)

??????????????????????????? {

???????????????????????????????????? TR0=0;

???????????????????????????????????? write_com(0x80+0x40+10);//光标的地址,因为写一下光标就跳到后一位,为了让光标在秒那要重写下光标的地址

???????????????????????????????????? write_com(0x0f);//光标闪烁

??????????????????????????? }

?????????????????? }

??????????????????????????? if(s1num==2)//第一个功能键的第二次按下,改变分

??????????????????????????? {

?????????????????? ?????????????????? write_com(0x80+0x40+7);

??????????????????????????? }

??????????????????????????? if(s1num==3)//第一个功能键的第三次按下,改变小时

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+4);

??????????????????????????? }

??????????????????????????? if(s1num==4)//光标不再闪烁,计数器继续工作

??????????????????????????? {

???????????????????????????????????? s1num=0;

???????????????????????????????????? write_com(0x0c);

???????????????????????????????????? TR0=1;

??????????????????????????? }

?????????????????? }

?????????????????? if(s1num!=0)//第一个键按下之后,第二个和第三个键才好使,如果把对第二个和第三个键进行控制的程序放在第一个if(s1==0)语句里面,只有当第一个键按下的瞬间第二个或第三个键也被按下,才能执行第二个或第三个键的程序,所以应该在第一个if(s1==0)句并列的位置写程序对第二个和第三个键进行控制

?????????????????? {

??????????????????????????? if(s2==0)

??????????????????????????? {

???????????????????????????????????? delay(5);

???????????????????????????????????? if(s2==0)

???????????????????????????????????? {

?????????????????????????????????????????????? while(!s2);//等待松手,如果不等待松手单片机就会在键盘按下的时

间里程序执行很多次

?????????????????????????????????????????????? if(s1num==1)//当s1num==1,表示第一个键秒钟闪烁,即另两个键的按下可以用s1num的值来判断

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? miao++;

??????????????????????????????????????????????????????? if(miao==60)

???????????????????????????????????????????????????????????????? miao=0;

??????????????????????????????????????????????????????? write_sfm(10,miao);//改变秒的数值后显示,第一个参数不能写成0x10,写成0x10就会出错

??????????????????????????????????????????????????????? write_com(0x80+0x40+10);//光标指到秒的位置,从左往右数,数到秒的十位处

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==2)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? fen++;

??????????????????????????????????????????????????????? if(fen==60)

???????????????????????????????????????????????????????????????? fen=0;

??????????????????????????????????????????????????????? write_sfm(7,fen);

??????????????????????????????????????????????????????? write_com(0x80+0x40+7);

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==3)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? shi++;

??????????????????????????????????????????????????????? if(shi==24)

???????????????????????????????????????????????????????????????? shi=0;

??????????????????????????????????????????????????????? write_sfm(4,shi);

??????????????????????????????????????????????????????? write_com(0x80+0x40+4);

?????????????????????????????????????????????? }

???????????????????????????????????? }

??????????????????????????? }

??????????????????????????? if(s3==0)

??????????????????????????? {

???????????????????????????????????? delay(5);

??????????????????????????? ???????? if(s3==0)

???????????????????????????????????? {

?????????????????????????????????????????????? while(!s3);

?????????????????????????????????????????????? if(s1num==1)

?????????????????????????????????????????????? {

?????????????????????????????????????????????? /*???? if(miao==0)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? miao=59;

???????????????????????????????????????????????????????????????? write_sfm(10,miao);

???????????????????????????????????????????????????????????????? write_com(0x80+0x40+10);

??????????????????????????????????????????????????????? }*/

??????????????????????????????????????????????????????? miao--;

??????????????????????????????????????????????????????? if(miao==-1)

???????????????????????????????????????????????????????????????? miao=59;

??????????????????????????????????????????????????????? write_sfm(10,miao);

??????????????????????????????????????????????????????? write_com(0x80+0x40+10);

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==2)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? fen--;

??????????????????????????????????????????????????????? if(fen==-1)

???????????????????????????????????????????????????????????????? fen=59;

??????????????????????????????????????????????????????? write_sfm(7,fen);

??????????????????????????????????????????????????????? write_com(0x80+0x40+7);

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(s1num==3)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? shi--;

??????????????????????????????????????????????????????? if(shi==-1)

???????????????????????????????????????????????????????????????? shi=23;

??????????????????????????????????????????????????????? write_sfm(4,shi);

??????????????????????????????????????????????????????? write_com(0x80+0x40+4);

?????????????????????????????????????????????? }

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

}

void main()

{

???????? init();

???????? while(1)

???????? {

?????????????????? keyscan();

???????? }

//????? while(1);

}

void timer0() interrupt 1

{

???????? TH0=(65536-50000)/256;

???????? TL0=(65536-50000)%256;

???????? count++;

if(count==18)//因为是12MHZ,所以不是count=20(对应11.0592MHZ)

?????????????????? {

??????????????????????????? count=0;

??????????????????????????? miao++;

??????????????????????????? if(miao==60)

??????????????????????????? {

???????????????????????????????????? miao=0;

???????????????????????????????????? fen++;

???????????????????????????????????? if(fen==60)

???????????????????????????????????? {

?????????????????????????????????????????????? fen=0;

?????????????????????????????????????????????? shi++;

?????????????????????????????????????????????? if(shi==24)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? shi=0;

?????????????????????????????????????????????? }

?????????????????????????????????????????????? write_sfm(4,shi);

???????????????????????????????????? }

???????????????????????????????????? write_sfm(7,fen);

??????????????????????????? }

??????????????????????????? write_sfm(10,miao);//到一秒只要秒不到60秒进位就改变显示,因为 table1[]="??? 00:00:00";

??????????????????????????? //对于秒的位置是十,即前面空了十个空格,所以第一个参数是10,该句和第一个if是并列的关系

?????????????????? }???????

}

星期可以用switch case语句

我的程序:

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^6;

sbit wela=P2^7;

sbit rs=P3^5;

sbit lcden=P3^4;

sbit rd=P3^7;

sbit s1=P3^1;

sbit s2=P3^2;

sbit s3=P3^3;

uchar code table[]=" 2012-12-31 MON";

uchar code table1[]="??? 23:59:50";

uchar code table2[]="MONTUEWEDTHRFRISATSUN";

uchar count,s1num,flag;

char shi,fen,miao,xq,day,month;

int year;

void delay(uint z)

{

???????? uchar x,y;

???????? for(x=z;x>0;x--)

?????????????????? for(y=110;y>0;y--);

}

void write_com(uchar com)

{

???????? rs=0;

???????? lcden=0;

???????? P0=com;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;

}

void write_date(uchar date)

{

???????? rs=1;

???????? lcden=0;

???????? P0=date;

???????? delay(5);

???????? lcden=1;

???????? delay(5);

???????? lcden=0;

}

void init()

{

???????? uchar num;

???????? shi=23;

???????? fen=59;

???????? miao=50;

???????? xq=0;

???????? day=31;

???????? month=12;

???????? year=2012;

???????? dula=0;

???????? wela=0;

???????? write_com(0x38);

???????? write_com(0x0c);

???????? write_com(0x06);

???????? write_com(0x01);

???????? write_com(0x80);

???????? for(num=0;num<15;num++)

???????? {???????

?????????????????? write_date(table[num]);

?????????????????? delay(5);

???????? }

???????? write_com(0x80+0x40);

???????? for(num=0;num<12;num++)

???????? {???????

?????????????????? write_date(table1[num]);

?????????????????? delay(5);

???????? }

???????? TMOD=0x01;

???????? TH0=(65535-50000)/256;

???????? TL0=(65535-50000)%256;

???????? EA=1;

???????? ET0=1;

???????? TR0=1;

}

void write_sfm(uchar add,uchar date)

{

???????? uchar shi,ge;

???????? shi=date/10;

???????? ge=date%10;

???????? write_com(0x80+0x40+add);

???????? write_date(0x30+shi);

???????? write_date(0x30+ge);

}

void displayxq(uchar num)

{

???????? uchar kk;

???????? write_com(0x80+12);//星期的位置是从左数第十二位

???????? for(kk=0;kk<3;kk++)

???????? {

?????????????????? write_date(table2[num+kk]);

???????? }

}

void write_xq(char date)//date是0到6,0到6对应星期一到星期日

{

???????? uchar num;

???????? date++;

???????? if(date==7)

?????????????????? date=0;

???????? switch(date)

???????? {

?????????????????? case 0:num=0;?????????

??????????????????????????? break;

?????????????????? case 1:num=3;?????????

??????????????????????????? break;

?????????????????? case 2:num=6;?????????

??????????????????????????? break;

?????????????????? case 3:num=9;?????????

??????????????????????????? break;

?????????????????? case 4:num=12;??????

??????????????????????????? break;

?????????????????? case 5:num=15;??????

??????????????????????????? break;

?????????????????? case 6:num=18;??????

??????????????????????????? break;

???????? }

???????? displayxq(num);

}

void write_y(uchar add,int date)//这里date是2012,要用合适的类型定义

{

???????? uchar qian,bai,shi,ge;

???????? qian=date/1000;

???????? bai=date%1000/100;

???????? shi=date%100/10;

???????? ge=date%10;

???????? write_com(0x80+add);

???????? write_date(0x30+qian);

???????? write_date(0x30+bai);

???????? write_date(0x30+shi);

???????? write_date(0x30+ge);

}

void write_md(uchar add,uchar date)

{

???????? uchar shi,ge;

???????? shi=date/10;

???????? ge=date%10;

???????? write_com(0x80+add);

???????? write_date(0x30+shi);

???????? write_date(0x30+ge);

}

void write_rq(char date)

{

???????? date++;

???????? if((year%4==0 && year%100!=0) || year%400==0)

?????????????????? flag=1;

???????? if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10)

???????? {

?????????????????? if(date==32)

?????????????????? {

??????????????????????????? date=1;

?????????????????? }

?????????????????? month++;

???????? }

???????? if(month==2)

???????? {

?????????????????? if(flag==1)

?????????????????? {

??????????????????????????? if(date==30)

??????????????????????????? {

???????????????????????????????????? date=1;

??????????????????????????? }

?????????????????? }

?????????????????? if(flag==0)

?????????????????? {

??????????????????????????? if(date==29)

??????????????????????????? {

???????????????????????????????????? date=1;

??????????????????????????? }

?????????????????? }

?????????????????? flag=0;

?????????????????? month++;

???????? }

???????? if(month==4 || month==6 || month==9 || month==11 )

???????? {

?????????????????? if(date==31)

?????????????????? {

??????????????????????????? date=1;

?????????????????? }

?????????????????? month++;

???????? }

???????? if(month==12)

???????? {

?????????????????? if(date==32)

?????????????????? {

???????? ?????????????????? date=1;

??????????????????????????? month=1;

?????????????????? }

?????????????????? year++;???

?????????????????? if(year==10000)

??????????????????????????? year=0;

???????? }

???????? write_md(9,date);

???????? write_md(6,month);

???????? write_y(1,year);

}

void keyscan()

{

???????? uchar num;

???????? rd=0;

???????? if(s1==0)

???????? {

?????????????????? delay(5);

?????????????????? if(s1==0)

?????????????????? {

??????????????????????????? s1num++;

??????????????????????????? while(!s1);

??????????????????????????? if(s1num==1)

??????????????????????????? {

???????????????????????????????????? TR0=0;

???????????????????????????????????? write_com(0x80+0x40+10);???

???????????????????????????????????? write_com(0x0f);

??????????????????????????? }

??????????????????????????? if(s1num==2)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+7);??????

??????????????????????????? }

??????????????????????????? if(s1num==3)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+0x40+4);??????

??????????????????????????? }

??????????????????????????? if(s1num==4)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+12);?????

??????????????????????????? }

??????????????????????????? if(s1num==5)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+9);????????

??????????????????????????? }

??????????????????????????? if(s1num==6)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+6);????????

??????????????????????????? }

??????????????????????????? if(s1num==7)

??????????????????????????? {

???????????????????????????????????? write_com(0x80+1);????????

??????????????????????????? }

??????????????????????????? if(s1num==8)

??????????????????????????? {

???????????????????????????????????? s1num=0;

???????????????????????????????????? write_com(0x0c);

???????????????????????????????????? TR0=1;????

??????????????????????????? }

?????????????????? }???????

???????? }

???????? if(s1num!=0)

???????? {

?????????????????? if(s2==0)

?????????????????? {

??????????????????????????? delay(5);

??????????????????????????? if(s2==0)

??????????????????????????? {

???????????????????????????????????? while(!s2);

???????????????????????????????????? if(s1num==1)

???????????????????????????????????? {

?????????????????????????????????????????????? miao++;

?????????????????????????????????????????????? if(miao==60)

??????????????????????????????????????????????????????? miao=0;

?????????????????????????????????????????????? write_sfm(10,miao);

?????????????????????????????????????????????? write_com(0x80+0x40+10);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==2)

???????????????????????????????????? {

?????????????????????????????????????????????? fen++;

?????????????????????????????????????????????? if(fen==60)

??????????????????????????????????????????????????????? fen=0;

?????????????????????????????????????????????? write_sfm(7,fen);

?????????????????????????????????????????????? write_com(0x80+0x40+7);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==3)

???????????????????????????????????? {

?????????????????????????????????????????????? shi++;

?????????????????????????????????????????????? if(shi==24)

??????????????????????????????????????????????????????? shi=0;

?????????????????????????????????????????????? write_sfm(4,shi);

?????????????????????????????????????????????? write_com(0x80+0x40+4);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==4)

???????????????????????????????????? {

?????????????????????????????????????????????? xq++;

?????????????????????????????????????????????? if(xq==7)

??????????????????????????????????????????????????????? xq=0;

?????????????????????????????????????????????? switch(xq)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? case 0:num=0;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 1:num=3;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 2:num=6;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 3:num=9;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 4:num=12;??????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 5:num=15;??????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 6:num=18;??????

???????????????????????????????????????????????????????????????? break;

?????????????????????????????????????????????? }

?????????????????????????????????????????????? displayxq(num);

???????? ???????????????????????????????????? write_com(0x80+12);?????

???????????????????????????????????? }

???????????????????????????????????? if(s1num==5)

???????????????????????????????????? {

?????????????????????????????????????????????? day++;

?????????????????????????????????????????????? if((year%4==0 && year%100!=0) || year%400==0)

??????????????????????????????????????????????????????? flag=1;

?????????????????????????????????????????????? if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(day==32)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? day=1;

??????????????????????????????????????????????????????? }

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(month==2)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(flag==1)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? if(day==30)

???????????????????????????????????????????????????????????????? {

?????????????????????????????????????????????????????????????????????????? day=1;

???????????????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? if(flag==0)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? if(day==29)

???????????????????????????????????????????????????????????????? {

?????????????????????????????????????????????????????????????????????????? day=1;

???????????????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? flag=0;

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(month==4 || month==6 || month==9 || month==11 )

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(day==31)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? day=1;

??????????????????????????????????????????????????????? }

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(month==12)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(day==32)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? day=1;

??????????????????????????????????????????????????????? }

?????????????????????????????????????????????? }

?????????????????????????????????????????????? write_md(9,day);

?????????????????????????????????????????????? write_com(0x80+9);????????

???????????????????????????????????? }

???????????????????????????????????? if(s1num==6)

???????????????????????????????????? {

??????????????????????????? ?????????????????? month++;

?????????????????????????????????????????????? if(month==13)

??????????????????????????????????????????????????????? month=1;

?????????????????????????????????????????????? write_md(6,month);

?????????????????????????????????????????????? write_com(0x80+6);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==7)

???????????????????????????????????? {

?????????????????????????????????????????????? year++;

?????????????????????????????????????????????? if(year==10000)

??????????????????????????????????????????????????????? year=0;

?????????????????????????????????????????????? write_y(1,year);

?????????????????????????????????????????????? write_com(0x80+1);

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

?????????????????? if(s3==0)

?????????????????? {

??????????????????????????? delay(5);

??????????????????????????? if(s3==0)

??????????????????????????? {

???????????????????????????????????? while(!s3);

???????????????????????????????????? if(s1num==1)

???????????????????????????????????? {

?????????????????????????????????????????????? miao--;

?????????????????????????????????????????????? if(miao==-1)

??????????????????????????????????????????????????????? miao=59;

?????????????????????????????????????????????? write_sfm(10,miao);

?????????????????????????????????????????????? write_com(0x80+0x40+10);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==2)

???????????????????????????????????? {

?????????????????????????????????????????????? fen--;

?????????????????????????????????????????????? if(fen==-1)

??????????????????????????????????????????????????????? fen=59;

?????????????????????????????????????????????? write_sfm(7,fen);

?????????????????????????????????????????????? write_com(0x80+0x40+7);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==3)

???????????????????????????????????? {

?????????????????????????????????????????????? shi--;

?????????????????????????????????????????????? if(shi==-1)

??????????????????????????????????????????????????????? shi=23;

?????????????????????????????????????????????? write_sfm(4,shi);

?????????????????????????????????????????????? write_com(0x80+0x40+4);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==4)

???????????????????????????????????? {

?????????????????????????????????????????????? xq--;

?????????????????????????????????????????????? if(xq==-1)

??????????????????????????????????????????????????????? xq=6;

?????????????????????????????????????????????? switch(xq)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? case 0:num=0;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 1:num=3;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 2:num=6;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 3:num=9;?????????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 4:num=12;??????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 5:num=15;??????

???????????????????????????????????????????????????????????????? break;

??????????????????????????????????????????????????????? case 6:num=18;??????

???????????????????????????????????????????????????????????????? break;

?????????????????????????????????????????????? }

?????????????????????????????????????????????? displayxq(num);

?????????????????????????????????????????????? write_com(0x80+12);?????

???????????????????????????????????? }

???????????????????????????????????? if(s1num==5)

???????????????????????????????????? {

?????????????????????????????????????????????? day--;

?????????????????????????????????????????????? if((year%4==0 && year%100!=0) || year%400==0)

??????????????????????????????????????????????????????? flag=1;

?????????????????????????????????????????????? if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(day==0)

??????????????????????????????????????????????????????? {

???????????????????????????????????? ??????????????????????????? day=31;

??????????????????????????????????????????????????????? }

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(month==2)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(flag==1)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? if(day==0)

???????????????????????????????????????????????????????????????? {

?????????????????????????????????????????????????????????????????????????? day=29;

???????????????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? if(flag==0)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? if(day==0)

???????????????????????????????????????????????????????????????? {

?????????????????????????????????????????????????????????????????????????? day=28;

???????????????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? flag=0;

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(month==4 || month==6 || month==9 || month==11 )

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(day==0)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? day=30;

??????????????????????????????????????????????????????? }

?????????????????????????????????????????????? }

?????????????????????????????????????????????? if(month==12)

?????????????????????????????????????????????? {

??????????????????????????????????????????????????????? if(day==0)

??????????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????????? day=31;

??????????????????????????????????????????????????????? }

?????????????????????????????????????????????? }

?????????????????????????????????????????????? write_md(9,day);

?????????????????????????????????????????????? write_com(0x80+9);????????

???????????????????????????????????? }

???????????????????????????????????? if(s1num==6)

???????????????????????????????????? {

?????????????????????????????????????????????? month--;

?????????????????????????????????????????????? if(month==0)

??????????????????????????????????????????????????????? month=12;

?????????????????????????????????????????????? write_md(6,month);

?????????????????????????????????????????????? write_com(0x80+6);

???????????????????????????????????? }

???????????????????????????????????? if(s1num==7)

???????????????????????????????????? {

?????????????????????????????????????????????? year--;

?????????????????????????????????????????????? if(year==0)

??????????????????????????????????????????????????????? year=9999;

?????????????????????????????????????????????? write_y(1,year);

?????????????????????????????????????????????? write_com(0x80+1);

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

???????? }

}

void main()

{

???????? init();

???????? while(1)

???????? {

?????????????????? keyscan();

???????? }

}

void timer0() interrupt 1

{

???????? TH0=(65535-50000)/256;

???????? TL0=(65535-50000)%256;

???????? count++;

???????? if(count==20)

???????? {

?????????????????? count=0;

?????????????????? miao++;

?????????????????? if(miao==60)

?????????????????? {

??????????????????????????? miao=0;

??????????????????????????? fen++;

??????????????????????????? if(fen==60)

??????????????????????????? {

???????????????????????????????????? fen=0;

???????????????????????????????????? shi++;

???????????????????????????????????? if(shi==24)

???????????????????????????????????? {

?????????????????????????????????????????????? shi=0;

???????????????????????????????????? }

???????????????????????????????????? write_sfm(4,shi);

???????????????????????????????????? write_xq(xq);//星期++的判断和显示都放到子函数里,和放到此中断函数

里效果相同

???????????????????????????????????? write_rq(day);//日期++的判断和显示都放到子函数里,和放到此中断函数里效果相同

??????????????????????????? }

??????????????????????????? write_sfm(7,fen);

?????????????????? }

?????????????????? write_sfm(10,miao);

???????? }

}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:33:24  更:2021-11-20 18:34:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/8 3:49:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码