基于51单片机的1602万年历 下载本文

内容发布更新时间 : 2024/10/26 2:35:01星期一 下面是文章的全部内容请认真阅读。

? 功能描述:本设计完成基于

DS1307作为时钟芯片,以

HD44780为控制器的LCD万年历显示。

? 原理概述:如图一,时钟信号由DS1307模块串行发送到单

片机,单片机处理后,将内容通过并行通讯发送到LCD液晶DDRAM上显示,此过程一直在主函数中循环,从而实现了将“年”、“月”、“日”、“时”、“分”、“秒”在液晶上显示的功能。

? 端口说明单片机的P0作为LCD的并行通讯数据端口、P3口

的P2.0、P2.1、P2.2作为LCD的控制端口,来控制LCD显示模式、功能以及内容;P1.0、P1.1、P1.2作为DS1302的串行通讯的数据端时钟端以及复位端,来获取时钟信息到单片机。

? 效果显示

1

? 图一(电路总图及万年历仿真结果)

? 图二(DS1302时钟电路仿真结果)

? 图三(LCD1602液晶电路仿真结果)

2

? 图四(DS1302与液晶显示数据仿真结果)

? 程序清单

/*************** writer:shopping.w ******************/ #include #include #include

#define uint unsigned int #define uchar unsigned char

sbit IO = P1^0; sbit SCLK = P1^1; sbit RST = P1^2; sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2;

uchar *WEEK[]= {

\};

uchar LCD_DSY_BUFFER1[]={\TE 00-00-00 %uchar LCD_DSY_BUFFER2[]={\ %uchar DateTime[7];

void DelayMS(uint ms) {

uchar i; while(ms--) { for(i=0;i<120;i++); } }

3