可编程作息时间控制器设计 - 图文(4)

2019-03-02 23:34

信息工程学院课程设计

参考文献

[1]《单片机原理及应用(第二版)》 张毅刚 彭喜元 彭宇 北京 高等教育出版社 [2]刘和平. 单片机编程与入门.重庆大学出版社,2002.68-99,111-122

[3]陈明荧. 89C51单片机课程设计实训教材.清华大学出版社,2003.38-67,102-118

附录

#include

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

int a,b,i,min,hour,minge,minshi,hourge,hourshi,sec,secge,secshi,cnt,cnt1, nian=2013,yue=5,ri=5, 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 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--); }

void write_com(uchar com) //LCD命令控制,写指令函数

11

信息工程学院课程设计

{ 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); }

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

12

信息工程学院课程设计

{

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('-');

write_com(0x80+0x40+4); write_data('-'); }

void time() //设置时间函数 { while(1) { if(key1==0) { delay(10); if(key1==0) { if(hour==23) //\时\设置 hour=0; else hour++; hourge=hour; hourshi=hour/10; write_com(0x0f); delay(2); write_com(0x80+6); write_data(table1[hourge]); //\时\个位写入LCD第1行第6位 delay(5); write_com(0x80+5);

13

信息工程学院课程设计

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松开时,显示时间\时\分\位均已设置完毕 } } } }

void display1() //设置闹钟1时间函数 {

14

信息工程学院课程设计

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); write_data(table1[aminge1]); delay(1); write_com(0x80+0x40+9); write_data(table1[aminshi1]); delay(1); while(!key2);

15


可编程作息时间控制器设计 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新编日语第 18 课

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

马上注册会员

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