智能电子钟LCD显示

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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时计时

相关文档
最新文档