《远程电子钟(电子钟部分)实验报告.doc》由会员分享,可在线阅读,更多相关《远程电子钟(电子钟部分)实验报告.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计报告设计课题:远程电子钟(电子钟部分)专业班级: 学生姓名: 指导教师: 设计时间:题目:远程电子钟(电子钟部分) 一、 课程设计目的1.通过运用单片机编程进一步掌握单片机技术,从而达到熟练使用的目的,通过编写远程电子钟(电子钟部分)程序学会对时钟类程序的编写。2.掌握时钟芯片8563的使用方法。学会RS232串口的使用方法。3.通过做综合性的程序(包括软件,硬件)进一步了解单片机的硬件部分,包括接口地址,总线地址的分布以及硬件焊接,增强动手能力。二、 课程设计题目(问题)描述和要求远程电子钟(2人一组)设计要求:一人设计电子钟,一人设计远程控制端。电子钟应用时钟芯片8563设计电子钟
2、。然后通过485总线将资料传送到远程控制端。远程控制端将所接受的资料在液晶显示器显示年、月、日、时、分、秒,另外,远程控制端需设计看门狗813程序,以保证远程控制端的稳定性。三、系统分析与设计根据课程设计题目问题描述和要求,完成:1: 系统总体设计确定系统功能模块划分及说明;系统模块: 89C52模块、时钟输出模块、显示模块。实验中利用89C52模块的P3.4及P3.5引脚向PCF8563的6脚和5脚传输数据对PCF8563进行初始化,在利用采来的数据将数据传送到远程控制端.PCF8563是低功耗的CMOS实时时钟/日历芯片,它可以提供一个可编程时钟,一个中断输出和掉电检测器,所有的地址和数据
3、通过I2C总线接口串行传递。最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量。2: 系统详细设计在总体设计基础上设计系统总体框架、系统流程图;1)系统总体框架: 图1 PCF8563与单片机连接图图2 单片机与外接器件连接图图3 串口芯片232及其电路 2)系统流程图: 电子钟发送流程:开始LCD初始化定义显示地址函数 定义显示字符函数定义PCF8563地址定义寄存器初值定义端口定义pcf8563驱动函数初始化时钟定义读时钟函数定义显示程序主函数调用时钟初始化、读时钟、8563初始化、LCD初始化程序结束接收程序流程: 3: 源程序清单(每条指令都要加注释,
4、说明其功能,入口参数,返回参数)/*/字符型LCD液晶显示模块 /*/#include #include#include#include#define uchar unsigned char#define uint unsigned int#define ulong unsigned long/*PCF8563程序段*/#definePCF8563_W 0xa2/pcf8563从地址(写)#definePCF8563_R 0xa3/pcf8563从地址(读)#defineWRADDR0x00/定义写单元首地址#defineRDADDR0x02/定义读单元首地址#define _Nop() _n
5、op_()/定义地址#define PCF8563_CONTROL_STATE00x00/控制状态寄存器1#define PCF8563_CONTROL_STATE10x01/控制状态寄存器2#define PCF8563_CLKOUT0x0d/CLKOUT频率寄存器#define PCF8563_TIMER_CONTROL0x0e/定时器控制寄存器#define PCF8563_TIMER_DATA0x0f/定时器倒计数数值寄存器#define PCF8563_SECOND0x02/秒#define PCF8563_MINUTE0x03/分#define PCF8563_HOUR0x04/时
6、#define PCF8563_DATE0x05/日#define PCF8563_WEEK0x06/星期#define PCF8563_MONTH0x07/月/世纪#define PCF8563_YEAR0x08/年#define PCF8563_MINUTE_ALARM0x09/分钟报警#define PCF8563_SECOND_ALARM0x0a/小时报警#define PCF8563_YEAR_ALARM0x0b/日报警#define PCF8563_WEEK_ALARM0x0c/星期报警/定义寄存器初值uchar code CS12=0x00,/普通模式0x28;/时钟停止运行,电
7、源复位有效uchar code CS22=0x12,/INT有效,AF=0;TF=0报警中断有效;定时中断清除。0x02;/INT受TF控制,AF=0;TF=0;报警中断有效;定时中断清除。uchar code CLKOUT4=0x80,/CLKOUT有效,32.768KHz。 0x81,/CLKOUT有效,1024Hz。 0x82,/CLKOUT有效,32KHz。 0x83;/CLKOUT有效,1KHz。/定义端口sbit SDA=P35;sbit SCL=P34;/pcf8563驱动函数bit ack;/起动IICvoid Start_I2c() SDA=1; /*发送起始条件的数据信号*
8、/ _Nop(); SCL=1; _Nop(); /*起始条件建立时间大于4.7us,延时*/ _Nop(); _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()
9、; _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; /*发送I2C总线结束信号*/ _Nop(); _Nop(); _Nop(); _Nop();/写1BYTE数据(上传数据、释放IIC、ack确认)void SendByte(uchar c) uchar idata BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) /*要传送的数据长度为8位*/ if(cBitCnt)&0x80)SDA=1; /*判断发送位*/ else SDA=0; _Nop(); SCL=1; /*置时钟线为高,通知被控器开始接收数据位*/ _Nop(); _No
10、p(); /*保证时钟高电平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); SDA=1; /*8位发送完后释放数据线,准备接收应答位*/ _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA=1)ack=0; else ack=1; /*判断是否接收到应答信号*/ SCL=0; _Nop(); _Nop();/读1BYTE数据(置输入状态、读数据)uchar RcvByte() uchar idata retc=0; uchar idata BitCnt; SDA=1; /*置
11、数据线为输入方式*/ for(BitCnt=0;BitCnt8;BitCnt+) _Nop(); SCL=0; /*置时钟线为低,准备接收数据位*/ _Nop(); _Nop(); /*时钟低电平周期大于4.7s*/ _Nop(); _Nop(); _Nop(); SCL=1; /*置时钟线为高使数据线上数据有效*/ _Nop(); _Nop(); retc=retc1; if(SDA=1)retc=retc+1; /*读数据位,接收的数据位放入retc中 */ _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); return(retc);/确认IIC(输入参数为0表
12、示确认、1表示不确认)void Ack_I2c(bit a) if(a=0)SDA=0; /*在此发出应答或非应答信号 */ else SDA=1; _Nop(); _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); /*时钟低电平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; /*清时钟线,钳住I2C总线以便继续接收*/ _Nop(); _Nop(); bit ISendStr(uchar sla,uchar suba,uchar *s,uchar no) uchar idata i; Start_I2c(); /*启动总线*/ Se
13、ndByte(sla); /*发送器件地址*/ if(ack=0)return(0); SendByte(suba); /*发送器件子地址*/ if(ack=0)return(0); for(i=0;ino;i+) SendByte(*s); /*发送数据*/ if(ack=0)return(0); s+; Stop_I2c(); /*结束总线*/ return(1);/指定地址读状态/数据(地址=从地址+子地址,no为从指针*s的个数)bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no) uchar idata i; Start_I2c();
14、 /*启动总线*/ SendByte(sla); /*发送器件地址*/ if(ack=0)return(0); SendByte(suba); /*发送器件子地址*/ if(ack=0)return(0); Start_I2c(); SendByte(sla+1); if(ack=0)return(0); for(i=0;ino-1;i+) *s=RcvByte(); /*发送数据*/ Ack_I2c(0); /*发送就答位*/ s+; *s=RcvByte(); Ack_I2c(1); /*发送非应位*/ Stop_I2c(); /*结束总线*/ return(1); /初始化模式void
15、init8563()uchar idata init_mod_buf2;init_mod_buf0=CS10;/普通模式,芯片时钟运行,电源复位失效init_mod_buf1=CS20;ISendStr(PCF8563_W,WRADDR,init_mod_buf,0x02);uchar init_timer_buf7=0x40,0x59,0x16,0x04,0x04,0x0c,0x03;/设定初始时间2003年12月4日星期四16时59分40秒uchar read_timer_buf7;/初始化时钟void init_timer()ISendStr(PCF8563_W,RDADDR,init_
16、timer_buf,0x07);/读时钟秒 分 时 日 周 月 年void read_timer()IRcvStr(PCF8563_W,RDADDR,read_timer_buf,0x07);/主程序 main() uchar a,b,c,d,e,f,g,h,i,j,k;init8563();/8563模式初始化 init_timer();/时钟初始化 read_timer();/读时间/ init_lcd();/LCD初始化 while(1)/ / /循环读取时间 read_timer();d=read_timer_buf2&0x9f; /d用于时的显示e=read_timer_buf1&0
17、xff; /e用于分的显示f=read_timer_buf0&0xff; /f用于秒的显示a=d/16+0x30; /显示小时第一位b=d%16+0x30; /显示小时第二位c=:;g=e/16+0x30; /显示分第一位h=e%16+0x30; /显示分第二位i=:;j=f/16+0x30; /显示秒第一位k=f%16+0x30; /显示秒第二位 Send_data_buff0=a&0xff; /发送数据低8位 Send_data(0xa0,1);Send_data_buff0=b&0xff; /发送数据低8位 Send_data(0xa0,1); /发送地址和数据长度Send_data_b
18、uff0=c&0xff; /发送数据低8位 Send_data(0xa0,1);Send_data_buff0=g&0xff; /发送数据低8位 Send_data(0xa0,1);Send_data_buff0=h&0xff; /发送数据低8位 Send_data(0xa0,1);Send_data_buff0=i&0xff; /发送数据低8位 Send_data(0xa0,1);Send_data_buff0=j&0xff; /发送数据低8位 Send_data(0xa0,1); Send_data_buff0=k&0xff; /发送数据低8位 Send_data(0xa0,1);/ di
19、splay(); 四. 系统调试过程中出现的主要问题显示器上的一部分数据出现乱码。五. 系统运行报告与结论特点:本系统通过时钟芯片8563可以显示多个时间信息,并能够从串口读入数据并将其显示在显示器上,实现发送端对其远程控制;六. 总结:1、设计中遇到的问题及解决过程1、设计过程中由于没有了解某些芯片的功能,不能做到程序的连接和正确运用,通过指导教师的指导、解读PDF文档,基本了解芯片的功能及初步运用。程序设计时对子程序的编译;变量的定义、使用都出现了问题,通过查找PDF文档、程序例程,了解器件的时序及电路连接图然后,编写器件的初始化程序,然后能正确对子程序的调用。对串口软件的应用不能掌握,通过指导教师的指点,学会了对串口软件的应用。2、设计中产生的错误及原因分析 显示器上的一部分数据出现乱码,这是由于接受和发送端的数组不区配造成的。3、设计体会和收获。通过本次设计,进一步熟悉了单片机的编程过程以及器件的组合使用,并在亲自焊接电路板的过程中提高了动手能力。七. 参考书目1、马忠梅 单片机的c语言应用程序设计 北京航空航天大学出版社2、王福瑞 单片微机测控系统设计大全 北京航空航天大学出版社3、徐爱钧 单片机高级语言C51应用程序设计 电子工业出版社4、杨振江 智能仪器与数据采集系统中的新器件及应用 西安电子科技大学出版社