常熟理工学院单片机实习(3)

2019-03-29 17:39

附录2 源程序(此程序与实验箱相配)

#include #define uint unsigned int #define uchar unsigned char sbit key1=P3^2; sbit key2=P3^3; sbit key3=P3^4; sbit key4=P3^5; sbit lcden=P2^7; sbit lcdrs=P2^6; sbit lcdrw=P2^5; sbit led=P2^2; sbit sound=P1^0;

int a,b,i,min,hour,minge,minshi,hourge,hourshi,sec,secge,secshi,cnt,cnt1, nian=2014,yue=3,ri=7, amin1=1,ahour1,aminge1,aminshi1,ahourge1,ahourshi1, amin2=1,ahour2,aminge2,aminshi2,ahourge2,ahourshi2, amin3=1,ahour3,aminge3,aminshi3,ahourge3,ahourshi3, amin4=1,ahour4,aminge4,aminshi4,ahourge4,ahourshi4;

uchar code table1[]={'0','1','2','3','4','5','6','7','8','9'}; uchar code table2[]=\ \;

uchar code table3[]={0x1F,0x11,0x11,0x1F,0x11,0x11,0x11,0x1F}; uchar code table4[]={0x00,0x0E,0x0A,0x0E,0x00,0x00,0x00,0x00}; uchar code table5[]={0x0F,0x09,0x0f,0x09,0x0f,0x09,0x09,0x11}; uchar code table6[]={0x06,0x09,0x08,0x08,0x09,0x06,0x00,0x00}; uchar code table7[]={0x01,0x1E,0x04,0x1F,0x0E,0x15,0x04,0x04}; uchar code table8[]={0x04,0x0E,0x15,0x04,0x02,0x04,0x18,0x00}; uchar code table9[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02}; uchar code Alarm_1[]=\ %uchar code Alarm_2[]=\ %uchar code Alarm_3[]=\ %uchar code Alarm_4[]=\ %uchar code riqi[]=\ \

uchar num1,num2,alarm1,alarm2,alarm3,alarm4; bit flag=0;

void delay(unsigned int z) //延时程序 { uint i,j; for(i=z;i>0;i--) for(j=110;j>0;j--);

11

}

void write_com(uchar com) //LCD命令控制,写指令函数 { delay(5) ; lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }

void write_data(uchar date) //LCD数据控制,写数据函数 { delay(5); lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; }

void write_nian(uchar add , uint date) //年显示函数 {

uchar qian,bai,shi,ge; qian=date/1000;

bai=(date-1000*qian)/100;

shi=(date-qian*1000-bai*100)/10; ge=date;

write_com(0x80+0x40+add); write_data(table1[qian]); write_data(table1[bai]); write_data(table1[shi]); write_data(table1[ge]); }

void write_yue(uchar add , uchar date) //月显示函数 {

uchar shi,ge; shi=date/10; ge=date;

write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge);

12

}

void write_ri(uchar add , uchar date) //日显示函数 {

uchar shi,ge; shi=date/10; ge=date;

write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge); }

void qi() //总日期显示函数 {

write_nian(0,nian); write_yue(5,yue); write_ri(8,ri);

write_com(0x80+0x40+7);

write_data(0x01);//显示自定义“月”字 write_com(0x80+0x40+4); write_data('-'); write_com(0x80+0x40+10); write_data(0x00);//显示自定义“日”字 }

void time() //设置时间函数 { while(1) { if(key1==0) { delay(10); if(key1==0) //按键检测与消抖 { if(hour==23) //\时\设置 hour=0; else hour++; hourge=hour; hourshi=hour/10;

13

write_com(0x0f); //显示开,光标开且闪烁 delay(2); write_com(0x80+6); write_data(table1[hourge]); //\时\个位写入LCD第1行第6位 delay(5); write_com(0x80+5); delay(2); write_data(table1[hourshi]); //\时\十位写入LCD第1行第5位 while(!key1); //松手检测 } } if(key2==0) { delay(10); if(key2==0) { if(min==59) //\分\设置 min=0; else min++; minge=min; minshi=min/10; write_com(0x0f); //显示开,光标开且闪烁 write_com(0x80+9); write_data(table1[minge]); //\分\个位写入LCD第二行第9位 delay(1); write_com(0x80+8); write_data(table1[minshi]); //\分\十位写入LCD第二行第8位 delay(1); while(!key2); //松手检测 } } if(key3==0) { delay(10); if(key3==0) { write_com(0x0c); //整体显示,关光标,不闪烁 TR1=1; //定时计数器1启动 while(!key3); break; //key3松开时,显示时间\时\分\位均已设置完毕

14

} } } }

void display1() //设置闹钟1时间函数 { while(1) { if(key1==0) { delay(10); if(key1==0) { if(ahour1==23) //闹钟\时\设置 ahour1=0; else ahour1++; ahourge1=ahour1; ahourshi1=ahour1/10; write_com(0x0f); //显示开,光标开且闪烁 write_com(0x80+0x40+8); //写入显示地址 write_data(':'); write_com(0x80+0x40+7); write_data(table1[ahourge1]); delay(1); write_com(0x80+0x40+6); write_data(table1[ahourshi1]); delay(1); while(!key1); } } if(key2==0) //闹钟\分\设置 { delay(10); if(key2==0) { if(amin1==59) amin1=0; else amin1++; aminge1=amin1; aminshi1=amin1/10; write_com(0x0f); write_com(0x80+0x40+10);

15


常熟理工学院单片机实习(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:[精品]内蒙古包头市青山区2017-2018学年高一《英语》10月月考试

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: