智能电子钟LCD显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能电子钟LCD显示,有图,求程序
智能电子钟LCD显示,有图,求汇编程序,各位大虾帮帮忙!
1.?设计要求
以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:
(1)?计时:秒、分、时、天、周、月、年。
(2)?闰年自动判别。
(3)?五路定时输出,可任意关断(最大可到16路)。
(4)?时间、月、日交替显示。
(5)?自定任意时刻自动开/关屏。
(6)?计时精度:误差≤1秒/月(具有微调设置)。
(7)?键盘采用动态扫描方式查询。所有的查询、设置功能均由功能键K1、K2完成。
以前的程序
#include
#define uchar unsigned char
#define uint unsigned int
uchar
sbit lcd_rs=P2^5;
sbit lcd_rw=P2^6;
sbit lcd_en=P2^7; //液晶位定义
sbit Sclk=P1^6;
sbit Io=P3^5;
sbit Rst=P1^7; //DS1302位定义
void init();
uchar ds_read(uchar com);
void ds_write(uchar com,uchar value);
void lcd_write_com(uchar com);
void lcd_write_date(uchar h,uchar w,uchar date);
void delay(uchar z);
void main()
{
init();
while(1)
{
lcd_write_date(0,0,'2');
lcd_write_date(0,1,'0');
lcd_write_date(0,2,table[ds_read(0x8d)/10]);
lcd_write_date(0,3,table[ds_read(0x8d)_x0010_]);
lcd_write_date(0,4,'-');
lcd_write_date(0,5,table[ds_read(0x89)/10]);
lcd_write_date(0,6,table[ds_read(0x89)_x0010_]);
lcd_write_date(0,7,'-');
lcd_write_date(0,8,table[ds_read(0x87)/10]);
lcd_write_date(0,9,table[ds_read(0x87)_x0010_]);
lcd_write_date(0,11,'D');
lcd_write_date(0,12,'a');
lcd_write_date(0,13,'y');
lcd_write_date(0,14,':');
lcd_write_date(0,15,table[ds_read(0x8b)]);
//lcd_write_date(1,0,'c');
//lcd_write_date(1,1,'u');
//lcd_write_date(1,2,'i');
lcd_write_date(1,0,'X');
lcd_write_date(1,1,'i');
lcd_write_date(1,2,'a');
lcd_write_date(1,3,'o');
lcd_write_date(1,4,'D');
lcd_write_date(1,5,'o');
lcd_write_date(1,6,'n');
lcd_write_date(1,7,'g');
lcd_write_date(1,8,table[ds_read(0x85)/10]);
lcd_write_date(1,9,table[ds_read(0x85)_x0010_]);
lcd_write_date(1,10,'-');
lcd_write_date(1,11,table[ds_read(0x83)/10]);
lcd_write_date(1,12,table[ds_read(0x83)_x0010_]);
lcd_write_date(1,13,'-');
lcd_write_date(1,14,table[ds_read(0x81)/10]); lcd_write_date(1,15,table[ds_read(0x81)_x0010_]);
}
}
//*****************液晶写命令操作********************
void lcd_write_com(uchar com)
{
lcd_rs=0;
lcd_rw=0;
lcd_en=0;
P0=com;
delay(5);
lcd_en=1;
delay(5);
lcd_en=0;
}
//*******************液晶写数据操作******************
void lcd_write_date(uchar h,uchar w,uchar date)
{
lcd_write_com(0x80+0x40*h+w);
lcd_rs=1;
lcd_rw=0;
lcd_en=0;
P0=date;
delay(5);
lcd_en=1;
delay(5);
lcd_en=0;
}
//********************初始化*********************
void init()
{
lcd_write_com(0x38);//液晶初始化
lcd_write_com(0x0c);
lcd_write_com(0x06);
lcd_write_com(0x01);
打开写保护ds_write(0x8e,0x00);//
ds_write(0x84,0x00);//选择24时计时