武汉工程大学《微机原理与接口技术》课程设计
是否按下5个按键 NO
初始化LCD 初始化计时器,初始化闹铃
扫描显示器更新时间数据, 闹钟时间是不是到了? YSE
K1:调时
K2:调分 K3:完成 K4:打开闹铃 图6 程序流程图
4.2 源代码
#include
9
武汉工程大学《微机原理与接口技术》课程设计
sbit key1=P1^0; sbit key2=P1^1; sbit key3=P1^2; sbit key4=P1^3; sbit lcden=P2^2; sbit lcdrs=P2^0; sbit lcdrw=P2^1; sbit led=P2^4; sbit sound=P2^5;
uint a,b,i,min,hour,minge,minshi,hourge,hourshi,amin,ahour,aminge,aminshi,ahourge,ahourshi,sec; //unsigned
char
code
x[]={0xFF,0xC7,0x83,0x01,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF}; //unsigned
char
code
z[]={0xFF,0xE3,0xC1,0x80,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x7F,0xFF,0xFF}; uchar code table1[]={'0','1','2','3','4','5','6','7','8','9'}; uchar code table2[]=\ \
;
uchar code Alarm_1[]=\ %uchar code nul[]=\ %uchar num1,num2;
void delay(unsigned int xms) //???? {
uint i,j;
for(i=xms;i>0;i--)
10
武汉工程大学《微机原理与接口技术》课程设计
}
for(j=124;j>0;j--);
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) { delay(5); lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0;
}
//?LCD数据控制
11
武汉工程大学《微机原理与接口技术》课程设计
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]);
delay(5);
// 设置时间
12
武汉工程大学《微机原理与接口技术》课程设计
write_com(0x80+5); delay(2);
write_data(table1[hourshi]); while(!key1); //delay(1);
}
}
if(key2==0)
{ delay(10); if(key2==0) {
if(min==59)
min=0;
else
min++; minge=min;
minshi=min/10;
//分钟设置
13