电子钟 (串口)

上传人:子 文档编号:43559469 上传时间:2018-06-06 格式:DOC 页数:17 大小:117.50KB
返回 下载 相关 举报
电子钟 (串口)_第1页
第1页 / 共17页
电子钟 (串口)_第2页
第2页 / 共17页
电子钟 (串口)_第3页
第3页 / 共17页
电子钟 (串口)_第4页
第4页 / 共17页
电子钟 (串口)_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《电子钟 (串口)》由会员分享,可在线阅读,更多相关《电子钟 (串口)(17页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告设计课题: 电子钟 (串口) 专业班学生姓名: 指导教师: 设计时间: 电子钟(二)一、课程设计目的: 通过对设计电子钟的设计了解89C51,PCF8563及液晶显示的工作原理与编程方 法. 二、课程设计要求: 通过单片机控制应用时钟芯片8563和串口液晶,实现电子钟。要求显示年、月、 日、时、分、秒。 三、系统分析与设计: 1:系统总体设计本实验中的器件:PCB开发板一块;89C51模块;PCF8563时钟芯片一片;串口液晶一个;MAX232芯片一片;该电子钟分为数据产生,数据传输和数据显示三个部分.其中数据产生的是PCF8563模块,数据传输的是89C52和74HC573模块。

2、数据显示的是在串口液晶上。89C51模块:实验中利用89C52模块的P3.4及P3.5引脚向PCF8563的6脚和5脚即SCL和SDA传输数据,来对PCF8563进行初始化,在利用采来的数据将数据地址锁存在74HC573内并在串口液晶上显示。PCF8563模块:该模块是时钟芯片,是低功耗的CMOS时钟芯片,其所有的地址和数据都是通过I2C总线接口串行传递的。每次读写数据后,内嵌的地址寄存器会自动产生增量。本实验就是利用该芯片传来的数据进行显示。串口液晶LCD:该液晶有两行地址,将要显示的数据分别放在这两行中进行显示。2:系统详细设计系统总体框架:系统的总体电路图如图1所示:图1 系统电路图图

3、2 74HC573 与单片机连接图 图 3 GAL16V8 与单片机连接图图 4 单片机与外接器件连接图3:系统流程图:开始8563初始化,LCD初始化向8563写入初始化值读回数据并锁存将数据送入串口液晶显示时间4:原程序清单#include#include#include#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#include #define PCF8563_W 0xa2#define PCF8563_R 0xa3#define WRADDR 0x00#define RDA

4、DDR 0x02#define _Nop() _nop_();/*/#define PCF8563_CONTROL_STATE0 0x00 /控制状态寄存器1#define PCF8563_CONTROL_STATE1 0x01 /控制状态寄存器2#define PCF8563_CLKOUT 0x0d /CLKOUT频率寄存器#define PCF8563_TIMER_CONTROL 0x0e /定时器控制寄存器#define PCF8563_TIMER_DATA 0x0f /定时器倒计数数值寄存器#define PCF8563_MINUTE 0x02 /秒#define PCF8563_SE

5、COND 0x03 /分#define PCF8563_HOUR 0x04 /时#define PCF8563_DATE 0x05 /日#define PCF8563_WEEK 0x06 /星期#define PCF8563_MONTH 0x07 /月/世纪#define PCF8563_YEAR 0x08 /年#define PCF8563_MINUTE_ALARM 0x09 /分钟报警#define PCF8563_SECOND_ALARM 0x0a /小时报警#define PCF8563_YEAR_ALARM 0x0b /日报警#define PCF8563_WEEK_ALARM 0x

6、0c /星期报警uchar b16;/*/uchar code CS12= 0x00,0x28;uchar code CS22=0x12,0x02;uchar code CLKOUT4=0x80,0x81,0x82,0x83 ;/*/sbit SDA=P35;sbit SCL=P34;/*/sbit bflag=ACC7;uchar FUNC(uchar a,uchar b);/右循环n,m位/*/bit ack;/起动IICvoid Start_I2c()SDA=1; /*发送起始条件的数据信号*/_Nop();SCL=1;_Nop(); /*起始条件建立时间大于4.7us,延时*/_Nop

7、();_Nop();_Nop();_Nop(); SDA=0; /*发送起始信号*/_Nop(); /* 起始条件锁定时间大于4s*/_Nop();_Nop();_Nop();_Nop(); SCL=0; /*钳住I2C总线,准备发送或接收数据 */_Nop();_Nop();/*/停止IICvoid Stop_I2c()SDA=0; /*发送结束条件的数据信号*/_Nop(); /*发送结束条件的时钟信号*/SCL=1; /*结束条件建立时间大于4s*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; /*发送I2C总线结束信号*/_Nop();_Nop()

8、;_Nop();_Nop();/写1BYTE数据(上传数据、释放IIC、ack确认)void SendByte(uchar c)uchar idata BitCnt;for(BitCnt=0;BitCnt 失败)bit ISendByte(uchar sla,uchar c)Start_I2c(); /启动总线SendByte(sla); /发送器件地址if(ack=0)return(0);SendByte(c); /发送数据if(ack=0)return(0);Stop_I2c(); /结束总线 return(1);/指定地址写命令/数据(地址=从地址+子地址,no为从指针*s的个数)bit

9、 ISendStr(uchar sla,uchar suba,uchar *s,uchar no)uchar idata i;Start_I2c(); /*启动总线*/SendByte(sla); /*发送器件地址*/if(ack=0)return(0);SendByte(suba); /*发送器件子地址*/if(ack=0)return(0);/ reset_wdt();for(i=0;i4;a1=(b0a2=34;/*读分并处理*/a3=(b1b1=b14;a4=(b1a5=34;/*读时并处理*/a6=(b2b2=b24;a7=(b2/*读日并处理*/a8=(b3b3=b34;a9=(b

10、3a10=34;/*读月并处理*/a11=(b5b5=b54;a12=(b5a13=34;/*读年并处理*/a14=(b6b6=b64;a15=(b6for(n=0;n8;n+) d=a7-n; display_buffn=memd;display_slcd(8);delay_ms(0x80);if(a0=5) for(n=0;n8;n+) d=a15-n; display_buffn=memd;display_slcd(8);delay_ms(0x80);delay_ms(0xff);delay_ms(0xff);delay_ms(0xff);delay_ms(0xff);delay_ms(

11、0xff);delay_ms(0xff);四、系统调试过程中出现的问题1:液晶最初是无显示的,必须通过调节电位器才能显示.GAL在显示是出现了问题,对其进行烧制.2:在显示年月时由于对其有效位未理解透彻,因而出现了显示乱码,在经过改正后得到了结果.五、系统运行报告对程序运行下载到单片机后,串口液晶屏上第一行显示出“DATA/2003/12/4。第二行显示TIME/19:59:50。六、总结1:在对时钟芯片8563的数据读回时未理解程序的读回命令,其实就是读回命令将数据读回对其进行显示就可以了,尝试一个数进行显示,最终将数据显示在了LCD上。2:因为串口液晶只能显示ASII码,因此对其进行转换是必须的。在做时直接进行显示,则显示出乱码。经过查资料修正后得出了正确结果。3:通过本次实验,加深了对电路的整体设计思想。对51单片机的设计流程有了一定的了解。对硬件的调试与软件的修改掌握了一些技巧。对51单片机的C程序设计有了一定的掌握。七、参考书目1:马忠梅, 单片机的 c 语言应用程序设计 ,北京航空航天大学出版社2:王福瑞, 单片微机测控系统设计大全 ,北京航空航天大学出版社3:徐爱钧, 单片机高级语言 C51 应用程序设计 ,电子工业出版社 4:杨振江, 智能仪器与数据采集系统中的新器件及应用 ,西安电子科技大学出版社

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号