| 
 
| ///////////////////////////////// //功能描述:键盘扫描程序
 //单 片 机:51系类单片机
 //编 写:ldl
 //日 期:2010
 //版 本:1.0
 /////////////////////////////////
 #i nclude<reg52.h>
 #define uchar unsigned char
 #define uint unsigned int
 uchar code table[]=" the time now";
 uchar code table1[]="    00:00:00";
 uchar num,counter,sec,min,hour;
 sbit lcd_en=P3^4;
 sbit lcd_rs=P3^5;
 sbit duan=P2^6;
 sbit wei=P2^7;
 
 write_time(uchar add,uchar num0);
 /////////////////////////////////
 //函数功能:延时函数
 //输入函数:
 //返回函数:
 /////////////////////////////////
 void delay(uint z)
 {
 uint x,y;
 for(x=z;x>0;x--)
 for(y=110;y>0;y--);
 }
 /////////////////////////////////
 //函数功能:1602写命令函数
 //输入函数:
 //返回函数:
 /////////////////////////////////
 void write_com(uchar com)
 {
 lcd_rs=0;
 P0=com;
 delay(5);
 lcd_en=1;
 delay(5);
 lcd_en=0;
 }
 /////////////////////////////////
 //函数功能:1602写数据函数
 //输入函数:
 //返回函数:
 /////////////////////////////////
 void write_data(uchar date)
 {
 lcd_rs=1;
 P0=date;
 delay(5);
 lcd_en=1;
 delay(5);
 lcd_en=0;
 }
 /////////////////////////////////
 //函数功能:初始化函数
 //输入函数:
 //返回函数:
 /////////////////////////////////
 void init()
 {
 duan=0;         //初始化1602显示
 wei=0;
 lcd_en=0;
 write_com(0x38);
 write_com(0x0e);
 write_com(0x06);
 write_com(0x01);
 write_com(0x80+0x10);
 TMOD=0x01;       //初始化定时器
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;
 ET0=1;
 TR0=1;
 hour=0;
 min=0;
 sec=0;
 write_com(0x80);      //初始化1602显示
 for(num=0;num<13;num++)
 {
 write_data(table[num]);
 delay(5);
 }
 write_com(0x80+0x40);
 for(num=0;num<12;num++)
 {
 write_data(table1[num]);
 delay(5);
 }
 }
 void main()
 {
 init();
 
 while(1);
 }
 write_time(uchar add,uchar num0)
 {
 uchar ge,shi;
 ge=num0%10;
 shi=num0/10;
 write_com(0x80+0x40+add);
 write_data(0x30+shi);
 write_data(0x30+ge);
 
 }
 
 void timer0() interrupt 1
 {
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 counter++;
 if(counter==20)
 {
 counter=0;
 sec++;
 if(sec==60)
 {
 sec=0;
 min++;
 if(min==60)
 {
 min=0;
 hour++;
 if(hour==24)
 {
 hour=0;
 }
 write_time(4,hour);
 }
 write_time(7,min);
 }
 write_time(10,sec);
 }
 
 }
 这段程序是1602显示 计时的程序  但是在程序中  write_time()函数只是一个子函数  是计算时分秒的个位十位的   在主函数中也没有运行该函数  但是为什么在1602的显示中  时间还是一直动呢   希望又人帮我解释下
 | 
 |