基于ATmega16单片机的电子时钟设计20130504综述_第1页
基于ATmega16单片机的电子时钟设计20130504综述_第2页
基于ATmega16单片机的电子时钟设计20130504综述_第3页
基于ATmega16单片机的电子时钟设计20130504综述_第4页
基于ATmega16单片机的电子时钟设计20130504综述_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于ATmegal羿片机的电子时钟设计物理与电子工程学院 电子信息科学与技术专业(职教) 2009 级 罗德龙指导教师 宋培森摘 要: 随着科学技术的发展电子时钟在日常的生活中应用的相当的多。本文介绍了一款基于ATmega16单片机为主控芯片的数字电子时钟设计。其中主要包括ATmega16单片机、独立键盘、DS1302芯片、LCD1602液晶显示、以及相关外围电路并在 PROTUE仿真平台上运 行。关键词:ATmega16单片机;DS1302芯片;独立键盘; LCD1602Abstract : With the development of science and technology ele

2、ctronic clock in the daily life of the application is quite long. This paper introduces a single chip processor as the main control chip based on ATmega16 digital electronic clock design. Include ATmega16 microcontroller, independent keyboard, DS1302 chip LCD1602, liquid crystal display (LCD), and r

3、elated peripheral circuit and in PROTUES simulation platform operation.Key words : ATmega16 microcontroller ; DS1302 chip; Independent keyboard; LCD16021 前言液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧等许多优点,在 袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。 本文中详细介绍了基于 ATmega16片机控制下的162液晶屏显示设计,此设计基于ds1302的时钟电路 方便实用,电路设计简单。2 AVR 单片机介绍2.1 AVR

4、单片机简介AVF单片机是1997年由ATME公司研发出的增强型内置 Flash的RISC精简指 令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控 制、仪表仪器、通讯设备、家用电器等各个领域。 1997 年,由 Atmel 公司挪威设 计中心的A先生和V先生,利用Atmel公司的Flash新技术,共同研发出RISC精 简指令集高速 8位单片机,简称 AVR。2.2 Atmega16 简介ATmega16是基于增强的AVR RISC结构的低功耗8位CMO微控制器。由于其 先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达 1MIPS/MHz从而可以减

5、缓系统在功耗和处理速度之间的矛盾。ATmega16 AVR内核具有丰富的指令集和 32个通用工作寄存器。所有的寄存 器都直接与运算逻单元 (ALU) 相连接,使得一条指令可以在一个时钟周期内同时 访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的 CISC 微控制器最高至 10 倍的数据吞吐率。ATmega16有如下特点:16K字节的系统内可编程 Flash(具有同时读写的能 力),512 字节 EEPROM1K 字节 SRAM32 个通用 I/O 口线,32 个通用工作寄存 器,用于边界扫描的 JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活 的定时器/计数器(T/

6、C),片内/外中断,可编程串行USART有起始条件检测器的 通用串行接口, 8 路 10位具有可选差分输入级可编程增益的 ADC ,具有片内振荡 器的可编程看门狗定时器, 一个 SPI 串行端口,以及六个可以通过软件进行选择 的省电模式。2.3 ATmega16 产品特性高性能、低功耗的8位AVR微处理器先进的 RISC 结构131 条指令大多数指令执行时间为单个时钟周期32 个 8 位通用工作寄存器全静态工作工作于16MHz时性能高达16MIPS只需两个时钟周期的硬件乘法器 非易失性程序和数据存储器16K 字节的系统内可编程 Flash ,擦写寿命 : 10,000 次 具有独立锁定位的可选

7、 Boot 代码区,通过片上 Boot 程序实现系统内编程, 真正的同时读写操作512字节的EEPRQM擦写寿命:100,000 次1K字节的片内SRAM可以对锁定位进行编程以实现用户程序的加密JTAG 接口( 与 IEEE 1149.1 标准兼容) 符合 JTAG 标准的边界扫描功能 支持扩展的片内调试功能通过JTAG接口实现对Flash、EEPROM熔丝位和锁定位的编程外设特点 两个具有独立预分频器和比较器功能的 8位定时器 /计数器 一个具有预分频器、比较功能和捕捉功能的 16位定时器/计数器 具有独立振荡器的实时计数器 RTC四通道 PWM8路10位ADC 8个单端通道,2个具有可编程

8、增益(1x, 10x,或200x)的 差分通道面向字节的两线接口 两个可编程的串行 USART 可工作于主机 / 从机模式的 SPI 串行接口 具有独立片内振荡器的可编程看门狗定时器片内模拟比较器第 3 页 (共 30 页)特殊的处理器特点上电复位以及可编程的掉电检测片内经过标疋的RC振荡器片内/片外中断源6种睡眠模式:空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby模式u I/O 和圭寸装32个可编程的I/O 口2.4 工作电压:ATmega16L 2.7 - 5.5VATmegal 6 4.5 - 5.5V2.5 ATmega16引脚功能VCC

9、电源正GND电源地端口 A (PA7.PA0)做为A/D 转换器的模拟输入端。端口 A为8位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具一二二二一T-1HjUTrrnnnrnnnnniu92r433?1;17科3,2H*IO1 含34 LTA00: y21 O 9 S y a 4力 iATmega引脚图有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉 电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还 未起振,端口 A处于高阻状态。端口 B(PB7.PB0)为8位双向I/O 口,具有可编程的内部上拉电阻。其输 出缓冲器具有对称的驱动特性,可以输

10、出和吸收大电流。作为输入使用时,若内 部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统 时钟还未起振,端口 B 处于高阻状态。端口 B 也可以用做其他不同的特殊功能 .端口 C(PC7.PC0) 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。 其输 出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内 部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统 时钟还未起振,端口 C 处于高阻状态。如果 JTAG 接口使能,即使复位出现引脚 PC5(TDI)、PC3(TMS与PC2(TCK)的上拉电阻被激活。端口 C也可以用做其他不

11、同的特殊功能。端口 D(PD7.PD0)为8位双向I/O 口,具有可编程的内部上拉电阻。其输 出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内 部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系 统时钟还未起振, 端口 D 处于高阻状态。 端口 D 也可以用做其他不同的特殊功能 .RESET复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复 位。持续时间小于门限间的脉冲不能保证可靠复位。XTAL1 反向振荡放大器与片内时钟操作电路的输入端。XTAL2 反向振荡放大器的输出端。AVCC AVCC是端口 A与A/D转换器的电源。不使用ADC时,该引

12、脚应直接 与VCC连接。使用ADC时应通过一个低通滤波器与 VCC连接。AREF A/D 的模拟基准输入引脚。2.6 AVR 单片机的应用区域AVF单片机应用区域包括:空调控制板、打印机控制板、智能电表、智能手电 筒、LED控制屏和医疗设备等领域。3 162 液晶显示屏介绍第 5 页 (共 30 页)162液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容 量可以分为1行16个字、2行16个字等。3.1 162液晶屏显示屏的引脚定义首先,我们来看162的引脚定义,162的引脚是很整齐的SIP单列直插封装。表1 是液晶屏的引脚定义。表1接口信号说明表编号符号引脚说明编号符号引脚说

13、明1VSS电源地9D2Data 1/02VDD电源正极10D3Data 1/03VEE液晶显示偏压信号11D4Data 1/04RS数据命令/选择端(H/L)12D5Data 1/05R/W读/写信号(H/L)13D6Data 1/06E使能信号14D7Data 1/07D0Data 1/015LEDA背光源正极8D1Data 1/016LEDK背光源该液晶屏采用标准的16脚接口,我们只需要关注一下几个管脚:1脚:VSS为地电源。2脚:VDD接5V正电源。3脚:VEE,液晶屏显示偏压信号,用于调整液晶屏的显示对比度,一般会外界 电位器用以调整偏压信号,接正电源时对比度最弱,接地电源时对比度最高

14、,对 比度过高时会产生“阴影”,使用时可以通过一个10K的电位器调整对比度。4脚:RS,数据/命令选择端,即对寄存器进行选择,高电平时选择数据寄存器、 低电平时选择指令寄存器。5脚:R/W,读写选择端,高电平时进行读操作,低电平时进行写操作。6脚:E,使能信号,其实时162的逐句控制时钟信号,利用该信号的上升沿实 现对液晶屏的数据传输。714脚:8位双向数据线15脚:背光阳极。16脚:背光阴极。3.2 162液晶显示屏的指令说明162液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说 明:1为高电平、0为低电平)。162液晶屏内部模块共有11条控制指令,如表2 所示。表2控制命

15、令表序号指令RSR/WD7D6D5D4D3D2D1D01清屏00000000012光标返回000000001*3输入方式00000001I/DS4显示开关0000001DCB5移位000001S/CR/L*6功能设置00001DLNF*7CGRA地址设置0001A5A4A3A2A1A08DDRAM地址设置001A6 A5A4A3A2A1A09忙标志/读地址计数器01BFAC6 AC5 AC4 AC3 AC2 AC1 AC010CGRAM/DDRAM据写10写数据11CGRAM/DDRAM据读11读数据指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址 00H

16、指令3:光标和显示模式设置I/D :光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。D :控制整体显示的开与关,高电平表示开显示,低电平表示关显示第7页(共30页)C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位S/C :高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令DL高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示 5x10的点阵字符指令7:字符发生器

17、RAM地址设置指令8: DDRA地址设置指令9:读忙信号和光标地址BF:忙标志位,高电平表示忙,此时模块不能接收 命令或者数据,如果为低电平表示不忙。指令10:写数据指令11:读数据3.3 162液晶显示屏的时序在操作液晶屏,我们应该对它的工作时序非常熟悉,这里介绍了162液晶显示屏的两个写时序:写指令和写入数据。写指令,即设置162液晶显示屏的工作方式:需要把 RS置为低电平,RW置为 低电平,然后将数据送到数据口 D0D7最后E引脚一个高脉冲将数据写入。写数据,即在液晶屏上实现显示时:需要把 RS置为高电平,RV置为低电平,然后将数据送到D0D7最后E引脚一个高脉冲将数据写入。DATAIR

18、S-1RWCMD指奢准警好EN(i写捋令时宇囹(2) 写数据时宇圉“图1 162液晶显示屏时序图注意:162液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要 确认模块的忙标志为低电平,表示不忙,否则此指令失效。当然,162提供了读忙信号的方法:当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号。3.4 162液晶屏的RAM地址映射及标准字库表液晶模块内部的字符发生存储器(CGROM已经存储了 128个不同的点阵字符 图形,这些字符有:阿拉伯数字、英文字母的大小写和常用的符号等,每一个字 符都有一个固定的代码,比如大写的英文字母“ A”的代码是

19、01000001B( 41H), 显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“ A” o 要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。液晶屏 第一行的首地址是80H,第二行的首地址是 C0H表3是液晶屏的GROM中的字符 代码与图形对应关系。表3字符代码与图形对应表高位位00000010001101000101011001110000GRAM0Pp0001!1AQaQ00102BRbR0011#3CScS0100$4DTdt0101%5EUeu0110&6FVfv01117GWgw1000(8HXhx1001)9IYiy1010*JZjZ1011+Kk

20、1100NAn1111/?OoJ4 ds1302芯片介绍DS1302是美国DALLAS司推出的一种高性能、低功耗的实时时钟芯片,附加 31字节静态RAM采用SPI三线接口与CPU进行同步通信,并可采用突发方式一 次传送多个字节的时钟信号和 RAM数据。实时时钟可提供秒、分、时、日、星期、 月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式, 提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图2所示及内部结构如图3所示。DS1302用于数据记录,特别是对某些具有特殊意义的数 据点

21、的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量 系统中。图3内部结构VcC2 i8J Vccixt c2 g 7J SCLKX2匸3?6J t/OGND Q4 q 5JCE图2引脚图各引脚的功能为:Vcc1 :主电源;Vcc2:备份电源。当 Vcc2Vcc1+0.2V 时,由 Vcc2 向 DS1302 供电,当 Vcc2DS1302LCD1602本系统所包含模块:主控芯片 ATmega16 LCD1602液晶显示模块、独立键盘模块、指示灯 电路、DS1302时钟模块、以及电源。另外还有背光电压显示电路。6.2 PROTUES仿真图及电路原理图毕业论文设计r4=1-11-r

22、i n0|C匕匚已门匕EC设计者:罗縫龙CIM?卜PROTUE仿 真图电路原理图亡,I Fl 94J r L-厂.1 hl- FE陀PBtEigjEPBFB眶丸爰他忑鷲老器r 吕一_丸I二二色二巴二丈乂6.3独立键盘T5V图7该键盘是三路独立的按键回路,当D端口读取的电平为高电平时不动作,说明没有按键按下;当 任意一个电路的按键按下时,该段口读取的电平 就为低电平执行相应的操作。按钮主要功能:K1:按下此按钮可以执行对时间的更改且相应的 时间指示灯点亮;对应键值为: 00001011。K2:按下此按钮可以实现时间地址的切换并且相 应的指示灯点亮;对应键值为: 00001101。K3:按下此按钮

23、可以执行对时间的增1操作,对应键值为:00001110。6.4背光电压显示读/巧电位器的中间分为两路,一路接液晶的 Vee端,另一路接单片机PA3端。经过软件处理后将值显示在液晶屏上。模数转换:AD 转换结果: ADC=Vi n*1024/VrefADC多工选择寄存器ADMUX7-6$43210| fiefsiREFSP| ADLAR |hlUX4MUX3MUX2MUX1Muxa |R/WR/WR/WR/WR/WRjWrawR/W0000a00图9Bit 7:6-REFS1:0: 参考电压选择如Table 83所示,通过这几位可以选择参考电压。如果在转换过程中改变了 它们的设置,只有等到当前转

24、换结束(ADCSRA寄存器的ADIF置位)之后改变才会起作用。如果在 AREF引脚上施加了外部参考电压,内部参考电压就不 能被选用了。表7参考电压选择REFS1REFS0参考电压选择00AREF内部Vref关闭01AVCC,AREF引脚外加滤波电容10保留112.56V的片内基准电压源,AREF引脚外加滤波电容在本文我们选择 AVCC,AREF引脚外加滤波电容Bit 5- ADLAR: ADC转换结果 左对齐ADLAR置位时转换ADLAR影响ADC转换结果在ADC数据寄存器中的存放形式结果为左对齐,否则为右对齐ADLAR的改变将立即影响ADC数据寄存器的P207 “ ADC数内容,不论是否有转

25、换正在进行。关于这一位的完整描述请见 据寄存器- ADCL及ADCH 。Bits 4:0- MUX4:0:模拟通道与增益选择位通过这几位的设置,可以对连接到ADC的模拟输入进行选择。也可对差分通道增益进行选择。如果在转换过程中改变这几位的值,那么只有到转换结束 (ADCSRA寄存器的ADIF置位)后新的设置才有效。表8模拟通道与增益选择MUX4.0单端输入正差分输入负差分输入增益00000ADC0N/A00001ADC100010ADC200011ADC300100ADC400101ADC500110ADC600111ADC701000N/AADC0ADC010x01001ADC1ADC010

26、x01010ADC0ADC0200x01011ADC1ADC0200x01100ADC2ADC210x01101ADC3ADC210x01110ADC2ADC2200x01111ADC3ADC2200x10000ADC0ADC11x10001ADC1ADC1 11x10010ADC2ADC11x10011ADC3ADC11x10100ADC4ADC1 11x10101ADC5ADC11x10110ADC6ADC11x10111ADC7ADC11x11000ADC0ADC21x11001ADC1ADC21x11010ADC2ADC21x11011ADC3ADC21x11100ADC4ADC21x

27、11101ADC5ADC21x111101.22 V (VBG)N/A111110 V (GND)ADC控制和状态寄存器 A ADCSRA7e543211| AID EHADSC| ADATEAD IFADIEADPS2ADPS1ADP&O |* XR/WRWRMFVWR/WFWVR/WR/WaQOOO0图10Bit 7 ADEN: ADC 使能ADEN置位即启动 ADC否则ADC功能关闭。在转换过程中关闭ADC将立即中止正在进行的转换。Bit 6 ADSC: ADC 开始转换在单次转换模式下,ADSC置位将启动一次 ADC转换。在连续转换模式下,ADSC 置位将启动首次转换。第一次转换(在A

28、DC启动之后置位 ADSC或者在使能ADC的同时置位 ADSC需要25个ADC时钟周期,而不是正常情况下的13个。第一次转换执行 ADC初始化的工作。在转换进行过程中读取 ADSC的返回值为 1 ”,直到转换结束。 ADSC青零不产生任何动作。Bit 5- ADATE: ADC自动触发使能ADATE置位将启动 ADC自动触发功能。触发信号的上跳沿启动ADC转换。触发信号源通过SFIOR寄存器的ADC触发信号源选择位 ADTS设置。Bit 4- ADIF: ADC 中断标志在ADC转换结束,且数据寄存器被更新后,ADIF置位。如果 ADIE及SREG的全局中断使能位I也置位,ADC转换结束中断服

29、务程序即得以执行,同时ADIF硬件清零。此外,还可以通过向此标志写1来清ADIF。要注意的是,如果对ADCSRAtt行读修改写操作,那么待处理的中断会被禁止。这也适用于SBI及CBI指令。Bit 3- ADIE: ADC 中断使能若ADIE及SREG勺位I置位,ADC转换结束中断即被使能。Bits 2:0- ADPS2:0: ADC 预分频器选择位由这几位来确定 XTAL与ADC输入时钟之间的分频因子。表9预分频ADPS2ADPS1ADPS0分频因子0002001201040118100161013211064111128ADC数据寄存器 ADCL及ADCHADLAR = 0Bit151312

30、11110be-ADC9ADCBADC6ADC5A.DG4AJDG3AJDCZA.DC1ADCO76543210I耳1RRRRRRRRRRRRR良Rtnnta0QQ000000DD00ADCHADCL图11ADLAR = 1151413121111098ADG7AJDCSAOC5AOQ4ADC3ADCHADC1*000-AOCL7e543210RRRRR尽RR良RARRR:000000000000000写图12ADC转换结束后,转换结果存于这两个寄存器之中。如果采用差分通道,结 果由2的补码形式表示。读取 ADCL之后,ADC数据寄存器一直要等到ADCH也被读出才可以进行数据更新。因此,如果转

31、换结果为左对齐,且要求的精 度不高于8比特,那么仅需读取 ADCH就足够了。否则必须先读出ADCL再读ADCH ADMUXJ存器的ADLAR及 MUXr会影响转换结果在数据寄存器中的表示方式。如果 ADLAF为1,那么结果为左对齐;反之 (系统缺省设置),结果 为右对齐。6.5指示灯电路每路指示灯指示功能:PCO路:秒寄存器显示PC1路:分寄存器显示PC2路:时寄存器显示PC3路:日寄存器显示PC4路:月寄存器显示PC5路:星期寄存器显示PC6路:年寄存器显示PD4路:是否允许调节时间显示, 灯亮为允许。pcATmega161图1C06.6 DS1302外围电路22pX1SCL32768HZR

32、SX2VCCVCC1X2 VCC122pPAOPA1PA25V3V22pf电容和32768Hz晶振组成振荡电路, 提供ds1302正常工作频率。VCC2为主电源, VCC1为辅助电源。Rst为读写使能端,I/O 为三线接口时的双向数据线,SCLK为串行时 钟,输入,控制数据的输入与输出。图146.7单片机外围电路图1522pf电容和8MHz晶振组成振荡电路,提供 单片机正常工作频率。Reset为上电复位端,当通电后单片即不管以前的程序工作在明E 里,一切复位从“零”开始。AVC(是端口 A与A/D转换器的电源。AREF是 A/D的模拟基准输入引脚。7软件设计在前面几节中,我们了解了 ATmeg

33、a16单片机、162液晶显示屏与ds1302的接口设 计以及液晶屏的时序,那么这部分阐述的是单片机对液晶屏显示和 ds1302的驱动 控制。软件工作流程如下:单片机初始化-液晶屛初姑化-台 ft否UdslS02i取塞文扌居是-驱动液晶旦不-厂4”虫 13皿的逐、査扌青屛程序流程图8 结束语经过几个月的研究与实验,终于完成了这篇论文。在做这个课题的时侯遇到了许多困难,大部分通过查阅资料和看书以及研究别人成功的例子就能解决了,但少部分问题任不能解决,通过老师和同学的帮助终于解决。感谢帮助我的老师和同学。参考文献:1 HS162-4液晶显示使用说明资料.2 DS1302_数据手册.3 ATmega1

34、6中文资料.4 Proteus 中文入门教程. 贺敬凯,刘德新,管明祥.单片机系统设计、仿真与应用。西安电子科技大学出版社,2011.沈文.AVR单片机C语言开发入门指导.清华大学出版社,2003年.7 丁化成,耿德根,李军凯.AVR单片机应用设计.北京航空航天大学出版社,2002年.8 金春林,邱慧芳,张皆喜.AVR系列单片机C语言编程与应用实例.清华大学出版社,2003 年.附件:毕业论文设计zaism:T&rTCflSLJEYL3J00! 015.E0UBATZ H羽1KT A LIXTASP:-OQ:Lr innirch: p ivnP IKH liDOapr li!ra?lF IOB

35、DD ITffiti:ATHBQA-KI abUEQDec i c t i o a i c ssclug “笛访c?PBm Pb-im$F&31ITT1 PUC1| F MOG IA fbOU-P-l 枇工AHET :Atmega!6单片机的电丰时钟设讦 设计者:罗徳龙ISIS/*设计介绍:使用8MHz的晶振,ds1302芯片以及1602液晶屏。使用 独立键盘设置或者调节时间。13个10k的电阻,1个100欧的电阻,8个led指示灯。2个22pf的电容。*/#in elude #define io PORTA.0#define scik PORTA.1#define rst PORTA.2#d

36、efine rs PORTA.5#define rw PORTA.6#define e PORTA.7#define uchar un sig ned char#define uint un sig ned int/*uchar l_dat = BASE ON ;uchar f_dat = ATMEGA16 DESIGN;*/初始时间缓冲区uchar set time 7 = 0x00,0x00,0x13,0x21,0x07,0x06,0x12;uchar address=0x7e;/ 时间地址中间变量uchar QIEHUAN;/ 切换时间标志位第 27 页 (共 30 页)uchar n=

37、0;uchar INT0=0; uchar time8 =0x00;uchar day8=0x00;int d3=0,0,0;/ 定义时间调节变量/ 定义中断变量/ 定义时、分、秒显示缓冲区/ 定义年、月、日、星期显示缓冲区/ 定义电压显示缓冲区延时函数*void delayus(uint us) /1us 延时函数uint i;us=us*5/4; /5/4 是在 8MHz 晶振下,通过软件仿真反复实验得到的数值 for(i=0;ius;i+);void delayms(uint ms) /1ms 延时函数uint i,j;for( i=0;ims;i+)for(j=0;j1141;j+);

38、 /1141 是在 8MHz 晶振下,通过软件仿真反复实验得到的数值 /* 液晶屏判断忙函数 */ void lcd_busy()uchar temp;/ 定义中间变量存取从 lcd 读取的值DDRB=0x00;/ 定义 B 端口为输入rs=0;/ 选择指令寄存器rw=1;/ 进行读操作doe=1;delayms(1); / 延时 1ms temp=PINB; / 读取 B 端口信号 e=0;delayms(1); / 延时 1ms while(temp&0x80); / 判断忙标志位是否为 1 DDRB=0xff; /B 端口置为输出,为想液晶屏写数据准备写指令函数 */void lcd_w

39、cmd(uchar cmd)lcd_busy(); / 判断液晶屏是否忙 delayms(1); / 延时 1ms rs=0; / 选择指令寄存器 rw=0; / 进行写操作e=0;delayms(1); / 延时 1ms/ 开始写指令/ 延时 1msPORTB=cmd; / 把数据赋值给 B 端口e=1;delayms(1);e=0;第 29 页 (共 30 页)delayms(1);/ 延时 1ms写数据函数 */void lcd_wdat(uchar dat)lcd_busy(); / 判断液晶屏是否忙delayms(1); / 延时 1ms rs=1; / 选择数据寄存器 rw=0;

40、/ 进行写操作 e=0;delayms(1); / 延时 1msPORTB=dat; / 把数据赋值给 B 端口 e=1; / 开始写数据 delayms(1); / 延时 1ms e=0;*lcd初始化函数 */delayms(15); lcd_wcmd(0x38); delayms(5); lcd_wcmd(0x0c); delayms(5); lcd_wcmd(0x06); delayms(5); lcd_wcmd(0x01); delayms(5);/等待LCD电源稳定/16*2 显示, 5*7 点阵, 8 位数据/延时5ms/ 显示开,关光标/ 延时 5ms/ 移动光标/ 延时 5ms/清除LCD的显示内容/ 延时 5msvoid lcd_init()写时间函数 */void ds1302writebyte(uchar dat)uchar m;DDRA=0xf7; sclk=0;delayus(10); for(m=0;m=1;/* 读时间函数*/ 读取最低位数据/ 延时 10us/ 时钟低电平为传送数

温馨提示

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

评论

0/150

提交评论