毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计

上传人:仙*** 文档编号:33890333 上传时间:2021-10-19 格式:DOC 页数:27 大小:215.03KB
收藏 版权申诉 举报 下载
毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计_第1页
第1页 / 共27页
毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计_第2页
第2页 / 共27页
毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计_第3页
第3页 / 共27页
资源描述:

《毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计(27页珍藏版)》请在装配图网上搜索。

1、图书分类号:密 级:毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR学生姓名学院名称信电工程学院专业名称电子信息工程技术指导教师2010年5月20日大连大学学年论文摘要本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此

2、万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。关键字AT89C51;电子万年历; DS1302I徐州工程学院毕业设计(论文)目 录1 绪论11.1课题研究的背景11.2课题的研究目的与意义11.3课题解决的主要内容12 系统的总体设计22.1系统方案的构想与确定22.2 器件的选用22.2.1单片机的选择23 系统硬件的设计43.1系统硬件电路设计43.1.1系统硬件框图43.1.2 AT89C51单片机43.1.4 ds1302114 系统的软件设计144.1 主程序144.2 从1302读取日期和时间程序15结论23致谢24参考文献25附录26附

3、录126241 绪论1.1 课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2课题的研究目的与意义二十一世纪是数字化

4、技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。1.3课题解决的主要内容本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。(2

5、)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。(4)根据硬件电路图,在开发板上完成器件的焊接。(5)根据设计的硬件电路,编写控制AT89C51芯片的单片机程序。(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。(8)软件设计时必须要有完善的思路,要做到程序简单,调试方便。2 系统的总体设计单片机电子万年历的制作有多种方法,可供选择的器件和运用的技术也有很多种。所以,系统的总体设计方案应在满足系统功能的前提下

6、,充分考虑系统使用的环境,所选的结构要简单使用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。2.1系统方案的构想与确定系统的功能往往决定了系统采用的结构,经过成本,性能,功耗等多方面的考虑决定用三个8位74LS164串行接口外接LED显示器,RESPACK-8对单片机AT89C51进行供电,时间芯片DS1302连接单片机AT89C51。从而实现电子万年历的功能。2.2 器件的选用单片机AT89C51电容RESPACK-8三个74LS164串行接口传感器DS13022.2.1单片机的选择单片机自70年代问世以来以微处理器(MPU)技术及超大规模集成电路技术的发展为

7、先导,用广泛的应用领域拉动得到蓬勃发展,单片机功能正日渐完善。单片机的应用,使许多领域的技术水平和自动化程度大大提高,可以说当今世界正在经受一场以单片机技术为标志的新技术革命浪潮的冲击。主要单片机类型如下:(1)MCS-51系列单片机MCS-51系列单片机主要是指Intel公司生产的以51位内核的单片机芯片,具有8位CPU、4K字节ROM、128字节RAM、可扩展外部64K字节RAM和ROM、2个16位的定时器/计数器、4个8位并行I/O口、1个全双工串行I/O口、21字节的专用寄存器、5个中断源、片内自带振荡器、片内单总线等功能部件。(2)AT89C51单片机AT89C51单片机的主要特性如

8、下:l 与MCS-51产品指令系统完全兼容l 4K字节的在线编程Flash存储器,1000次擦写周期l 4.05.5V的工作电压范围l 全静态工作模式:033MHzl 三级程序存储器锁l 1288字节内部RAM l 32个可编程I/O口线l 2个16位定时/计数器l 6个中断源l 全双工串行UART通道l 低功耗空闲和掉电模式l 中断可从空闲模式唤醒系统l 看门狗(WDT)及双数据指针l 掉电标识和快速编程特性l 具有掉电状态下的中断恢复功能l 灵活的在系统编程(ISP字节或页写模式)由于AT89C51单片机片内有4K字节的在线编程Flash存储器,可以擦写1000次,具有掉电模式,而且具有掉

9、电状态下的中断恢复功能,对设计开发非常实用。所以选用AT89C51单片机作为电子万年历芯片的控制单片机。3 系统硬件的设计根据上述所确定的系统方案构想,下面进行系统硬件电路的具体设计,系统的总体结构框图如图所示。3.1系统硬件电路设计3.1.1系统硬件框图系统硬件框图如图3-1时钟芯片DS1302串口AT89C51P2口LED显示器驱动电路图3-1 系统硬件框图3.1.2 AT89S51单片机本系统采用的是美国ATMEL公司生产的AT89C51单片机,首先我们来熟悉一下AT89C51单片机的外部引脚和内部结构。1.单片机的引脚功能AT89C51单片机有40个引脚。l Vcc:电源电压+5Vl

10、GND:接地l P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线服用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。l P1口:P1口是一个带内部上拉电阻的8位双向I/O,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻

11、,某个引脚被外部信号拉低时会输出一个电流。 Flash 编程和程序校验期间,P1接收低8位地址。l P2口:P2口是一个带内部上拉电阻的8位双向I/O,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flash 编程和程序校验期间,P2亦接收低高位地址和其他控制信号。l P3口:P3口是一组带内部上拉电阻的8位双向I/O,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部的上拉电阻拉高并可作为

12、输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,见表3-1所示:P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。表3-1 P3口的第二功能图端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计时器0外部输入)P3.5T1(定时/计时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)l RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

13、WDT溢出将使引脚输出高电平,设置SFR AUXR的DISRT0(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。l EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的变成电压Vpp.l XTAL1:振荡器反相放大器及内部时钟发生器的输入端。l XTAL2:振荡器反相放大器的输出端。AT89C51单片机内部结构2.A

14、T89C51单片机与MCS-51完全兼容 l 振荡电路:AT89C51系列单片机的内部振荡器,由一个单极反相器组成。XTAL1反相器的输入,XTAL2为反相器的输出。可以利用它内部的振荡器产生时钟,只要XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。另一种方式由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。在电路中,对电容C1和C2的值要求不是很严格,如果使用高质的晶振,则不管频率为多少,C1、C2通常都选择30pF。l 定时

15、/计数器:AT89C51单片机内含有2个16位的定时器/计数器。当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。为了实现定时和计数功能,定时器中含有3种基本的寄存器:控制寄存器、方式寄存器和定时器/计数器。控制寄存器是一个8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分。l 中断系统:AT89C51单片机有6个中断源,中断系统主要由中断允许寄

16、存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成。IE寄存器用于允许或禁止中断;IP寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。在整个中断响应过程中CPU所执行的操作步骤如下:(1)完成当前指令的操作(2)将PC内容压入堆栈(3)保存当前的中断状态(4)阻止同级的中断请求(5)将中断程序入口地址送PC寄存器(6)执行中断服务程序(7)返回3.1.4 ds1302 DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。DS1902与89C2051的连接图,其中,时钟的显示用LED。 DS1302与CP

17、U的连接,实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。 LED还可以换成LCD,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有34线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2A (典型值),省电模式时小于1A,工作电压为2.4V3.3V,显示清晰。4 系统的软件设计电子万年

18、历的功能是在程序控制下实现的。该系统的软件设计方法与硬件设计相对应,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。4.1 主程序主程序如图4-1所示: 开始读年、月、日送第一块LED显示读星期、闰、年、日送第二块LED显示读时、分、秒送第三块LED显示返回图4-1 主程序图4.2 从1302读取日期和时间程序系统初始化开 始需要调整时间吗?读1302日期和时间调整时间和日期YN图4-2 从1302读取程序结论本课题从理论到实际应用,用AT89C51单片机与8位模数转换芯片74LS164等一些电路的

19、组合,成功的设计出了一个电子万年历。而且所设计的电子万年历设计也按当初要求的能够在PROTEUS中进行仿真,并且能够很精确的显示年历。可以说该电子万年历具有很高的实用价值。在软件设计的过程中,利用了Keil这个软件在程序录入和调试的时候的优越性,让我能够在编写软件的时候很方便的发现软件中的错误,现在已经能够使用Keil对所设计的程序进行调试。对于PROTEUS这款软件,也能熟练掌握电路设计仿真。由于平时没有接触过这两个软件,加上毕业设计的时间有限,对于他们的连接调试程序,未能熟练掌握,但以后有机会的话会再好好学习的。本次设计的电子万年历也存在的不足的地方,有待于以后的改进。致谢经过三个多月的时

20、间,毕业设计按照预期完成了,由于本人的知识水平有限,论文和设计中有遗漏和缺陷的地方恳请指正。感谢我的导师高玉芹老师给了我莫大的帮助,在她悉心的指导和严格的要求下,作品和论文顺利完成了。论文从选题和最终完成,凝结着导师的辛勤的汗水,她不辞劳苦的教导、严谨的作风使我终生受益。在此毕业设计完成之际,谨向导师和所有帮助过我的老师致以崇高的敬意和衷心的感谢。还有感谢家人、朋友还有宿舍里所有的室友,是他们给我创造了良好的学习氛围,在学习和生活中给了我支持和帮助。在以后的学习生活中我会时时敦促自己更加努力,不辜负师长、亲人、朋友对我的期望。参考文献1 赵长德.微型计算机原理与接口技术M.北京:机械工业出版社

21、,1999:98-350.2 苏平.单片机的原理与接口技术M.北京:电子工业出版社,2006:1-113.3 王忠民.微型计算机原理M.西安:西安科技大学出版社,2003:15-55.4 胡戴明.计算机组成原理M.北京:经济科学出版社,2005:43-56.5 纪宗南.单片机外围器件使用手册M.北京:北京航空航天大学出版社,622-655.6 周雪.模拟电子技术M西安: 西安电子科技大学出版社,2005:81-95.7 左金生.电子与模拟电子技术M.北京:电子工业出版社,2004:105-131.8 尹勇.单片机开发环境Vision2的开发指南M. 北京:北京航空航天大学出版社,2004:17

22、3-199.9 张斌武.单片机系统Proteus设计与仿真M. 北京:电子工业出版社,2005:52-89. 附录附录1源代码DELAYC#define DELAY_C#include”includesh”#define XTAL 12void delay_lus(void) asm(”nop”): void delay_nus(unsigned int n) unsigned int i=0;for(i=0;in;i+)delay_lus(); void delay_ims(void) unsigned int i; for(i=0:i(unsigned int)(XTAL*143-2);i

23、+); void delay_nms(unsigned int n) unsigned int i=0; for(i=0;in;i+) delay_ims(); DSl302C#include”includesh”#define DSl302_C unsigned char bflag;unsigned char bpm;unsigned char get_hours(void) unsigned char i; unsigned char R_Byte; unsigned char TmpByte; reset(); write(0x85); ddr_set_io(); R_Byte=0x0

24、0; Prt_clear_io(); ddr_clear_io(); for(i:0;i4;i+) TmpByte=0; if(pinp&(1io) TmpByte=1; TmpByte=1;R_Byte I=TmpByte;Prt_set_clk();delay_nus(2);prt_clear_clk();delay_nus(2);bflag=0;if(pinp&(1io) bflag=l;prt_set_clk();delay_nus(2);prt_clear_clk();delay_nus(2); bpm=0;if(pinp&(1=4;return R_Byte;unsigned ch

25、ar readbyte(unsigned char w_byte) unsigned char temp; reset(); write(w_byte); temp=read(); prt_clear_rst(); prt_clear_clk(); return temp;void writebyte(unsigned char w_byte,unsigned char w_2_byte) reset(); write(w_byte); write(w_2_byte); prt_clear_rst(); prt_clear_clk();void reset(void) ddr_set_rst(

26、); prt_clear_clk(); prt_clear_rst(); prt_set_rst();void write(unsigned char W_Byte) unsigned char i; DDRC=0xFF;for(i=0;i=1; unslgned char read(void) unsigned char i; unsigned char R_Byte; unsigned char R_Byte2; unsigned char TmpByte; ddr_set_io(); R_Byte=0x00; R_Byte2=0x00;prt_clear_io();ddr_clear_i

27、o();for(i=0;i4;i+)get the first 4 bits TmpByte=0;if(pinp&(1io) TmpByte=1; TmpByte=0x80; TmpByte1);/R_Byte=1;R_Byte |=TmpByte;prt_set_clk();delay_nus(1);/delay_nus(2);prt_chear_clk();delay_nus(1);delay_nus(2);for(i=0;i4;i+) TmpByte=0; if(pinp&(1io) TmpByte=1; TmpByte=0x80; TmpByte1);R_Byte2=l; R_Byte

28、2 |=TmpByte; Prt_set_clk(); delay_nus(1):delay_nus(2); prt_clear_clk(); delay_nus(1);delay_nus(2); R_Byte=4; R_Byte2=4; R_Byte=(R_Byte2*10)+R_Byte; return R_Byte;HD44780C#include”includesh”#define HD44780_Cvoid lcd_pulse(void) Icdsete()delay_nms(1);Icd_clear_e(); delay_nms(1); void icd_wait(void) as

29、m(”nop”);void icd_send(unsigned char data) Lcd_wait();dataport=data;lcd_pulse();void clrscr(void)lcd_clear_rs();lcd_clear_rw();icd_send(0x01);lcd_wait();void gotoz(unsigned char z)lcd_clear_rs();lcd_clear_rw();lcd_send(z | 0x80);void gotoxy(unsigned char x,unsigned char y)gotoz(x)|(y)(6);void put_ch

30、ar(char c)lcd_clear_rw();lcd_set_rs();lcd_send(c);void outtext(unsigned char*text)unsigned char i;for(i=0; texti&i16;i+) put_char(texti); void initgraph(void) dirport_data:0xFF;dirport_con |=(LCD_E | LCD_RS | LCD_RW);lcd_clear_rs();lcd_clear_rw();lcd_send(0x3C);lcd_send(0x3C);lcd_send(0x3C);lcd_send

31、(0x06);lcd_send(0x0C);#define LCD_C#include”includesh”void LCD_INIT(void)LCD_DIR_PORT=0xff;LCD_0Pl_PORT=0x30;lcd_clear_rw();lcd_clear_rs();lcd_set_e();asm(”nop”);asm(”nop”);icd_clear_e();delay_nus(40);icd_clear_rw();icd_clear_rs();lcd_set_e();asm(”nop”);asm(”nop”);icd_clear_e();delay_nus(40);icd_set

32、_e();asm(”nop”):asm(”nop”);lcd_clear_e();delay_nus(40);LCD_OP_PORT=0x20;icd_set_e();asm(”nop”);asm(”nop“);lcd_clear_e();delay_nus(40);void LCD_Busy(void)unsigned char temp,high;unsigned char low;LCD_DIR_PORT=0x0f;doteap=LCD_OP_PORT;temp=temp&BIT3;LCD_OP_PORT=temp;Lcd_set_rw(); Set LCD to READlcd_cle

33、ar_rs();lcd_set_e();delay_nus(3);high=LCD_IP_PORT;lcd_clear_e();lcd_set_e();asm(”nop”);asm(”nop”);low=LCDIPPORT;lcd_clear_e();while(high0x80);delay_nus(20);void LCD_WriteControl(unsigned char CMD)char temp;LCD_Busy();LCD_DIR_PORT=0xff;temp=LCD_OP_PORT;temp=temp&BIT3:LCD_OP_PORT=(CMD 0xf0)| temp;lcd_

34、clear_rw();lcd_clear_rs();lcd_set_e();asm(”nop”);asm(”nop”);lcd_clear_e();LCD_OP_PORT=(CMD4)|temp;lcd_clear_rw();lcd_clear_rs();lcd_set_e();asm(”nop”);asm(”nop”);lcd_clear_e();void LCD_WriteData(unsiqned char Data)char tempLCD_Busy();LCD_DIR_PORT=0xFF;temp=LCD_OP_PORT;temp=temp&BIT3;LCD_OP_PORT=(Dat

35、a0xf0)| temp; lcd_clear_rw(); Set LCD to write lcd_set_rs();lcd_set_e();asm(”nop”);asm(”nop”);lcd_clear_e();LCD_OP_PORT=(Data4)|temp;lcd_clear_rw();lcd_set_rs();lcd_set_e();asm(”nop”);asm(”nop”);lcd_clear_e();*初始化液晶*void Init_LCD(void)LCD_INIT();LCD_WriteControl(LCD_FUNCTION_SET);LCD_WriteControl(LC

36、D_OFF);LCD_WriteControl(LCD_CLEAR);LCD_WriteControl(LCD_MODE_SET);LCD_WriteControl(LCD_ON);LCD_WrlteControl(LCD_HOME);LCD_WriteControl(0x90);*/ /*清屏 *void LCD_Clear(void)LCD_WriteControl(0x01);*移动光标到0行0列*void LCD_Home(void)LCD_WriteControl(0x02); *显示字符,在当前光标处*void LCD_DisplayCharacter(char Char)LCD_

37、WriteData(Char);*在Flash中、在指定的行和列显示一个字符串*void LCD_DisplayString_F(char rOW,char column,unsigned char_flash*string)LCD_Cursor(row,column);while(*string)LCD_DisplayCharacter(*string+);*在RAM中、在指定的行和列显示一个字符串*void LCD_DisplayString(char row,char column,unsigned char*string)LCD_Cursor(row,column);while(*st

38、ring)LCD_DisplayCharacter(*string+);*定位行和列的光标*void LCD_Cursor(char row,char column)switch (row) case 1:LCD_WriteControl(0x80+column一1);break;case 2:LCD_WriteControl(0xc0+column一1);break;case 3:LCD_WriteControl(0x94+column1);break;case 4:LCD_WriteControl(0xd4+column1);break;default:break;*打开光标*void L

39、CD_Cursor_On(void)LCD_WriteControl(LCD_CURS_ON);*关闭光标*void LCD_Cursor_Off(void)LCD_WriteControl(LCD_ON);*关闭LCD*杀*void LCD_Display_Off(void)LCD_WriteControl(LCD_OFF); *打开LCD*void LCD_Display_On(void)LCD_WriteControl(LCD_ON);MAINC#include”includesh”#define WDR() asm(”wdr”)unsigned char alarm _1_set,al

40、arm_2_set,alarm_3_set;_flash unsigned char test =”DSl302 time is:”;void main(void) unsigned char hour,min,sec; unsigned char date,month;unsigned char flag;flag=1;PORTB=0x00;DDRB=0x00;DDRD=0x7f;PORTD=0xFF;Init_LCD();LCD_DisplayString(0,1,”Initialize OK!”);delay_nms(500); LCD_WriteControl(LCD_CLEAR);W

41、DR();writebyte(w_protect,0x00); 设置时间writebyte(sec_w,0x09);writebyte(min_w,0x09);writebyte(hour_w,0x09);while(1) sec =readbyte(sec_r); 读秒 min =readbyte(min_r); 读分 hour =readbyte(hour_r); 读小时 month =readbyte(month_r); date =readbyte(date_r); WDR();LCD_DisplayString_F(1,1,test);if(flag) LCD_Cursor(2,1)

42、; LCD_DisplayCharacter(+hour10); LCD_DisplayCharacter(+hourlO); LCD_DisplayCharacter(:,); WDR(); LCD_DisplayCharacter(+m10) LCD_DisplayCharacter(+min10); LCD_DisplayCharacter(:); WDR(); LCD_DisplayCharacter(d+s10); LCD_DisplayCharacter(+sec10): LCD_Cursor(2,ii); WDR(); LCD_DisplayCharacter(Y+month10

43、); LCD DisplayCharacter(dY+month10); LCD_DisplayCharacter-0; WDR(); LCD_DisplayCharacter(+date10); LCD_DisplayCharacter(+date10): WDR(); usartc#define USART_C#include”includesh”void usart_putchar(char c) if(c=飞rr) usart_putcharf); while(UCSRA&(15); UDR=c:)void initusart(void) USART initialization Communication Parameters:8 Data,1 Stop。No Parity USART Receiver:Off USART Transmitter:On USART Mode:Asynchronous USART Baud rate:19200 UCSRA=Ox00; UCSRB=Ox08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0C;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!