1、 大学Tn毕 业 设 计专 业: 班级学号: 班 学生姓名: 成 指导教师: 讲师 二一年六月计基于51单片机的多功能电子钟的开发The development of the multi-function electronic clock based on 51 single chip microcomputer 专业班级:班 学生姓名: 指导教师: 学 院:机械工程学院201 年月摘 要如今的时代,电子技术正在飞快地发展着,特别是伴随着集成电路的高速发展,使得原来笨重的电子电路可以以微小的集成电路的方式展现在我们的眼前。就如同曾经的占地几十平方的电脑,如今可是可以有一个笔记本一般的大小。曾经
2、庞大的计算机中央处理器,可以集成在几十平方厘米的空间里。单片机也就是在人类拥有这种技术下,对于电子产品拥有强大的需求背景下诞生了。它被广泛的运用在家庭电器、仪器仪表、汽车电子、工业控制领域。本次毕业设计的多功能电子钟就是单片机运用的一种,此设计的主要组成部分有:STC89C52单片机、DS1302时钟芯片、1602液晶屏幕显示、红外遥控模块等,通过单片机对时间、温度进行实时的显示以及对时间进行设置。通过测试表明,本设计用c语言编程对于时间的控制与显示方便,良好的满足对于时间显示实时性的要求。关键词:电子时钟;单片机;时钟芯片;液晶屏幕显示;红外遥控模块;C语言 ABSTRACTTodays e
3、ra, electronic technology is developing quickly, especially with the rapid development of the integrated circuit, makes the original bulky electronic circuit can be shown in the form of tiny integrated circuits in front of our eyes.Like once dozens of square of the computer, but can now have a lapto
4、p the size of the general.Once big central processing unit (CPU), can be integrated in dozens of cm square space.Single-chip microcomputer is also under the human have this technology, demand for electronic products with a strong background was born.It is widely used in household appliances, instrum
5、entation, automotive electronics, industrial control fields.The multi-function electronic clock of this graduation design is the use of single-chip microcomputer, the design of the main components are: STC89C52 single-chip microcomputer 1602, DS1302 clock chip, LCD screen display, infrared remote co
6、ntrol module, etc., through single chip microcomputer for real-time display time, temperature, and to set the time.Through test shows that this design with c language programming for time control and display is convenient, good to meet to the requirement of time display real-time.Key Words : Electro
7、nic clock;Single chip microcomputer;The clock chip;LCD screen display;Infrared remote control module;The C language 目 录1 绪 论11.1研究目的与意义11.2研究现状11.3设计的总体工作结构21.4本次设计的任务22硬件电路设计32.1单片机型号的选择32.2最小系统的选择42.3显示器件的选择52.3.1数码管显示52.3.2 LCD屏显示52.3.3 LED点阵显示62.4 DS1302时钟芯片72.5红外遥控模块82.5.1红外光应用原理82.5.2红外遥控通信原理9
8、2.6蜂鸣器模块102.7 DS18B20温度传感器与HS1011湿度传感器112.7.1温度传感器DS18B20112.7.2湿度传感器HS1011123系统的软件设计133.1软件设计的规划133.1.1模块的划分133.1.2软件程序流程133.2 1602液晶显示模块143.2.1液晶的接口时序143.2.2液晶驱动模块操作部分代码163.2.3 1602液晶RAM状态字的说明163.2.4 1602液晶RAM映射区173.2.5 1602液晶初始化183.3 时钟芯片DS1302的操作193.3.1 DS1302寄存器193.3.2 DS1302时序的操作213.4红外通信模块程序设
9、计233.4.1 NEC通信协议233.4.2红外通信流程设计244系统调试265全文总结306致谢31参考文献32附录1: 单片机系统原理图33附录2: 程序代码34附录3: 外文文献翻译71II毕业设计1 绪 论对于人们的平常工作、生产、生活、娱乐等诸多活动的开展,都需要掌握好时间的安排与控制。时钟成了人们弥补可分的生活必须品。特别在如今人们的生活节奏的加快,对于生活作息的调整,从而达到更科学合理的生活状态,时间对于人们是越加的宝贵。与此同时,单片机的应用已经遍布到我们生活的各个领域当中,每个领域当中都会有单片机的踪迹电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟表相
10、比,它的优点:走时准确、显示直观、不含机械传动装置,因此得到了人们的广泛应用。1.1研究目的与意义从有了普遍应用以后,人们的日常生活中电子时钟就变得屡见不鲜了。在数字集成电路技术发展的大背景下,通过电子电路对于时、分、秒等日期进行显示成了钟表产品的可靠手段。而数字钟的精度也伴随着石英晶体震荡电路的应用,在精度、重量及成本上有了较大的优势。从时钟的发展史来看,他经历了以下几个阶段,从机械表到电子表,到晶体管,再到数字电子钟,电子钟表已经遍布市场,传统的机械表已经取代不了人们的需求,因此它有精度高、稳定性好、使用方便、不需要经常调校等优点,数字式电子钟用集成电路计时,译码代替机械式传动,用LED显
11、示器代替指针显示时间,这样子使电子时钟在外观上也与时俱进,不断美化着人们日常生活,在许多场合都可以看到电子时钟。同时在运用数字化技术下,例如定时提醒、自动报警、按时打铃、定时开关照明设施、定时启动等,变得切实可行。 1.2研究现状单片机芯片以其微体积低成本的特点,在微电子技术的高速发展背景下,一时间也风光无限,在电子系统、办公自动化设备、个人终端机通信中,成为现代电子智能化的里程碑,基于单片机的多功能电子时钟孕育而生。单片机技术已经成为励志在电子、电气、通讯领域施展拳脚的专业人员必须掌握的技能。虽然传统的时钟中也有电机传动或者电钟式等,其中也有应用了时间继电器的电子器械部分,但是普遍多数还是运
12、用发条驱动的方式。然而电子时钟的体小、价低、高精度、调整方便灵活、性能可靠安全。如今电子技术的发展下,电子时钟也在不断升级改进,朝着多用途、高精度、小体积方向发展。1.3设计的总体工作结构此次设计结合自己的任务规划可以明确以下一些问题:需要实现电子钟中时间的精确运行,则需运用时钟芯片完成功能;需要将时钟、日期、温湿度信息显示出来,则需要通过屏幕作为媒介。为了体现多功能性,使用屏幕、点阵、数码管、液晶屏幕结合的方式、显示出来,再使用独立LED进行点缀;需要实现时间的调整,则需要使用输入器件,选择使用红外遥控器进行校时。并且为了体现多功能性,结合按键一起实现时间校准;需要实现电子钟的闹铃功能,则使
13、用蜂鸣器作为输出器件完成功能。图1-1为系统框图:图1-1 任务系统结构框图1.4本次设计的任务为了使电子钟多功能化,推进科技和电子行业的发展,为人们的日常生活提供必要的需求,运用巧妙的设计思路和技术方法对基于51单片机的多功能电子钟的开发进行研究。该课题有一定的创新性,成品有较高的实际应用价值。主要任务如下:(1)单片机应用系统的整体方案的设计。(2)单片机应用系统的硬件设计。(3)单片机应用系统的软件程序设计。(4)单片机开发系统的应用和调试。(5) 对调试结果进行分析。(6) 根据参考资料完成上述设计。2 硬件电路设计2.1单片机型号的选择STC89C52是一款基于传统51构架的单片机,
14、是国产STC公司生产的。他的参数如下:1. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V 单片机)。2.工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作频率可达48MHz。3. 用户应用程序空间为8K字节。4. 片上集成512字节RAM。5. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。6. 具有EEPROM 功能。7. 共3个16位定时器/计数器。即定时器T0、T1、T2。8.外部中断4路,下降沿中断或低电平触发电路
15、,Power Down 模式可 由外部中断低电平触发中断方式唤醒。9. 通用异步串行口(UART),还可用定时器软件实现多个UART。10. 工作温度范围:-40+85(工业级)/075(商业级)。图2-1为STC89C52引脚:图2-1 STC89C52引脚封装2.2最小系统的选择最小系统是单片机能够正常工作与运行的最少电气元件所构成的系统电路,它是单片机扩展其他功能的基础电路,它是由晶振、复位、电源3者所构成,图2-2为此次设计的最小系统电路图:图2-1 最小系统电路图1.电源本系统使用的STC89C52单片机的工作电压为5V,我们选择的使用电脑的USB出的5V电压作为单片机的供电电源。电
16、脑的USB口输出电源电压稳定可靠。接到VCC引脚,GND接电源地,VCC与GND之间需要接一个0.1F的电容,作用为抗电源与地之间的干扰。2.复位这里采用了典型的RC电路作为电源的上电复位电路,并且增加了按键K1做按键位的功能。R60的作用为按键按下后限制电流对RST引脚的输入。3.晶振为了满足STC89C52工作频率要求的0至40MHz,选用的常见的12MHz的晶振。此晶振通过与C14、C15组合的谐振电路接到单片机的XTAL1、XTAL2引脚,可以输出稳定的频率为12MHz的震荡作为单片机的工作心跳。2.3 显示器件的选择2.3.1数码管显示数码管为8个或9个LED小灯组合而成,是最常用且
17、价格低廉的显示器件,分为共阴极与共阳极两种。我们采用的是共阳极的数码管,通过COM口接到单片机的5V电压源上。每个COM口有两个支路,连接到数码管的8个LED小灯上,这样设计的目的是为了限制每个COM口的流通电流,确保电路的工作寿命。COM口上是一个三极管,作为每个数码管的使能开关。8个DB控制每个数码管上的LED的点亮,作为共阳极数码管,DB置0时点亮。图2-3为数码管电路:图2-2 数码管显示电路图2.3.2 LCD屏显示采用LCD液晶屏进行显示。LCD液晶屏是一种常用的显示器件,相比较于数码管显示器件,LCD以它的美观和可显示的字形的多样性更多的运用在日常产品中。不仅是如此,LCD液晶屏
18、还是个工作电压2至3V的低压器件,它在低功耗特性上的表现堪称优越。可以显示数字、字母、汉字等多种字型。图2-3是1602液晶屏的接口电路,它可以输出2行,每行可以输出最多16个字符。1602液晶屏接口总体上由电源口、控制口、数据口组成,VCC和GND口为1602提供电源,VO用来调节显示亮度。RS为1602的数据与命令模式的切换、R/W为1602的数据读写模式的切换。E作为液晶屏的总开关,作为使能控制。而具体的命令数据和显示数据用DB总线输出。 图2-3 1602液晶接口电路图2.3.2 LED点阵显示我们常常看到的街道上商店门口各式各样的广告牌,他们可以显示各种特定的图案与字型,还可以做出图
19、案与字型在广告牌上移动的效果。这些广告牌就是一大块的LED点阵,它具有显示面积有各种规格方便个人的需求,造价便宜等特点。我们通过LED点阵显示具体的时间信息直观大方,也很美观时尚。我们选用的LED点阵为8*8规格,即64个独立的LED组成的矩形器件,DB总线为每一行的控制总线,图2-4为LED点阵的电路:图2-4 8*8LED点阵电路2.4 DS1302时钟芯片DS1302时钟芯片是美国达拉斯公司生产的一款低压的涓流充电的IC。操作使用的方法为通过单片机对其进行读写,设置其初始时间后,此芯片内部将会精准的运行记录时间。每次需要获得当前时间信息时,就通过读取芯片内相应的寄存器。如图2-4为DS1
20、302时钟芯片:图2-5 DS1302时钟芯片芯片以下DS1302时钟芯片的性能指标:1. DS1302不仅提供年份、月份、日期、时、分、秒的准确信息,还可以通过选择AM/PM模式选择每日显示时间模块是否使用12小时/24小时计算模式。2. 时钟芯片内部带有31Byte的内存空间。3. 为了节约I/O口的资源,DS1302采用串口读写数据。4. 芯片的工作电压为2到5V,工作电压范围较大。5. DS1302还是低压型器件,当工作电压仅有2V时,工作电流只有几百nA。6. 芯片的封装简单,易于焊接。有8个引脚,可采用DIP与SOP两种封装形式。DS1302时钟芯片有8个引脚,图2-6为DS130
21、2的电路图,其各个引脚的功能如下:VCC2用来连接系统电源,GND连接电路的地端,X1与X2连接晶振电路,CE为使能引脚,VCC1为电源备用引脚,可以连接备用电池。此处没有连接备用电池,而是使用容量10F的电容代替,其作用于电池作用相同,但由于容量的限制,只能在系统掉电后维持1分钟左右时间。6脚与7脚分别为I/O数据口与SCLK时钟口,I/O口需要在SCLK时钟的配合下完成时钟芯片的读写操作。图2-6 DS1302电路图2.5 红外遥控模块2.5.1 红外光应用原理世间万物在温度不低于绝度零度时,于是乎分子与原子就会做毫无规则可寻的运动,都可以辐射出红外光线。红外光是一种电磁光线,它介于微波和
22、可见光之间,是一种波长为760nm到1mm之间的光线,工业上就是运用了红外线的特性来作为操作控制的用途。图2-7所示就是单片机开发中典型的红外线电路:图2-7红外线原理电路如图2-7所示,红外模块分为发送控制与接收检测两个部分。发送控制端是一个三极管,R1为三极管基极的限流电阻,当给发射控制端置低电平时,三极管发射极与集电极导通,红外发射管L1将发射红外光。接收检测端将接收红外光信号,接收端电路中LM393是一个比较器,2口为比较电压值,通过改变滑动电阻的位置改变分压值设定比较电压的值。当红外接收管12未导通时,3口的电压为5V高于2口电压,则接收端输出的是高电平。当红外接收管12接收到发送来
23、的红外信号将导通,3口得到的电压为VCC-I*R3,与比较电压相比较,当红外光强度低时,I值叫小,3口电压仍大于2口电压,接收端输出高电平。当红外光强度愈来愈强,I越来大,3口电压值越来越小,当小于比较电压值时,接收口输出低电平。这也就是红外避障原理。2.5.2 红外遥控通信原理在实际红外通信中,不可以直接将红外光发送。因为实际通信中直接传送红外信号将可能受到干扰或者丢失。正确的做法是将要传送的信号作为基波,将高频的信号与基波进行调制后输出,可保证输出信号的正确性。然后在接收端将高频信号进行解调,得到原有的通信信号。我们这里使用的高频信号为38K作为载波信号,如图2-7所示: 图2-8红外信号
24、调制可以看出图上的原始信号是低频信号,通过38K的载波调制后,调制信号为对应于原始信号特性有了变化。当原始信号为低电平时,输出的调制信号为具有38K载波频率的周期信号,当原始信号为高电平时,输出的调制信号也为高电平。图2-9就是我们实现这种调制信号的红外发送电路图。图2-9红外信号发送电路可以看出图2-8上有2个三极管Q1与Q2。其中Q1的基极与38K载波信号相连接,中间加了一个2K的限流电阻R1。Q1的基极周期的输出38K频率信号,则Q1的集电极与发射集就不停的通断,通断频率同样为38K。Q2的基极连接的是输出信号端,同样连接一个2K的限流电阻R2。当信号输出一个低电平,Q2的集电极与发射集
25、导通,这样L1红外发射管就可以发射出频率为38K的红外信号。当信号输出端为高电平时,Q2的集电极与发射集截止,红外发射管的信号就为0。这样就完成了红外信号的调制。当红外发送完毕后,就需要一个红外接收电路,将接收到的红外信号进行解调,得到原先的基波信号。这里我们使用了HS0038一体化红外信号接收头,它内部可以自行解调红外调制信号,直接在输出端输出基波信号,如图2-10:图2-10红外信号接收电路在这个红外信号接收电路中,VDD与GND直接连接一个10F的电容C26是为了防止由于HS0038内部的高增益带来的VDD与GND的串扰。5V电源与VDD引脚间串联的100电阻也是为此。当有红外信号时IR
26、D就输出高电平,当没有红外信号时,IRD就输出高电平。IRD通过连接单片机的引脚,我们就可以得到红外信号的数据了。2.6 蜂鸣器模块电路蜂鸣器从设计构造上区分为电流比较小的压电式蜂鸣器和体积比较小的电磁式蜂鸣器。按照驱动方式区别则为有源蜂鸣器和无源蜂鸣器两种。这里说的源不是指电源,而是指是否含有振荡源部分。要驱动无源蜂鸣器工作需要给其500Hz至4.5KHz 之间的脉冲频率信号驱动方可。造价上的低廉是无源蜂鸣器的优点,声音频率可以自定,输出的声音频率控制灵活。有源蜂鸣器内部带了振荡源,本系统中所使用的就是有源蜂鸣器。如图2-11蜂鸣器驱动电路所示,BUZZ输出一个低电平信号,蜂鸣器就会被使能驱
27、动发出声音。 图2-11蜂鸣器驱动电路 在上图中,BUZZ就是控制蜂鸣器使能的引脚,串联一个1K的电阻R52作为限流电阻。BUZZ与三极管Q22的基极相连接,当给Q22基极置低电平时候,Q22集电极与发射极导通,电流流经蜂鸣器BZ1之后入地,蜂鸣器便被驱动工作了。值得注意的是D4这个器件,这是一个续流二极管,具有单向导通的特性。当BUZZ将Q22使能以后,因为D4的单向导通性,电流不会经过D4所在的支路,支路被截止,蜂鸣器BZ1正常工作。当蜂鸣器停止使能的瞬间,由于蜂鸣器是一个感性元件,器件内部将产生反向感性电流。此时如果没有消耗的方式消耗这些电流,反向电流将冲击上级的器件,造成器件的损坏。加
28、了D4续流二极管以后,当蜂鸣器内部因为失能而产生反向电流后,电流将与D4续流二极管所在的支路产生回路,反向电流将在这条回路中消耗。从而保护了上级器件,保障了电路的安全可靠性。2.7 DS18B20温度传感器与HS1011湿度传感器2.7.1温度传感器DS18B20DS18B20温度传感器可实现温度的测量,也就是利用I-Wire总线的硬件接口,把DS18B20温度传感器的接口跟单片机的I/O口相接即可,从而实现温度的显示。DS18B20温度传感器的硬件电路原理图如图2-11所示。图2-11 DS18B20电路原理图2.7.2湿度传感器HS1011湿度传感器分为两个大类,分别是电阻式和电容式。考虑
29、到设计的标准和需求,本设计采用电容式HS1011湿度传感器。HS1011湿度传感器应用很广泛,一般情况下应用于办公室及公共场合等,为人民提供了有利的帮助。它具有以下几种特点:具有互换性,标准环境下是不需校正的,高的可靠性及稳定性,反应时间很快;若处于长时间饱和的状态下,将会快速脱离湿度;它可以自动的实现焊接,包括波峰、水浸;可以用于线性电压或频率输出回路。HS1011湿度传感器的实物图如图2-12所示。图2-12 HS1011湿度传感器的实物图HS1011湿度传感器是在湿敏电阻的基片上覆盖这一层感湿材料制成的膜,当空气中的水蒸气落到上面时,这个时候的电阻率和电阻值都将有变化,也就是这个特征可测
30、量其湿度。HS1011湿度传感器的精度是很高的,相对湿度在0%100%RH之间;电容量由162pF变到200pF,其误差不大于2%RH;响应时间小于5s;温度系统为0.04pF/,所有由此可以看出它的精度是很高的。3系统的软件设计3.1 软件设计的规划系统的硬件部分已经确立以后,接下来就是软件部分的设计与规划的时候了。一个设计中含有各种各样的功能,这就牵涉到具体每个功能如何封装起来,每个单独的软件模块如何组织的问题了。我们将设计中的项目功能尽可能的细化出来,将每个细化的部分写成相应的C语言的软件程序,用C程序文件的形式进行封装。这样是一个非常好的编写软件代码的习惯。因为将每个功能写成一个C文件
31、后,利于对这个功能代码的管理,也易于对整个项目文件的维护。其次还有一个很大的好处就是如果以后需要增加某种功能或者对于原先某个功能进行改变和调整的话,只要直接改变某个C文件或添加一个C文件即可。不需要对于整体的设计代码进行修改。大大方便了软件功能的维护与升级。3.1.1模块的划分模块的具体封装与规划需要结合设计的具体实际要求去进行。对于多功能电子时钟的设计而言,我们需要对时钟芯片DS1302进行读写来输出当前的年份、月份、日期、时、分、秒的信息。我们需要通过红外遥控器对于时间可以进行远距离的控制,也可以通过按键设置和修改当前的时间。我们通过温度、湿度传感器采集问湿度的信息。我们将得到的当前的时间
32、信息与温湿度信息通过1602液晶屏幕、LED点阵屏幕、LED数码管显示出来。我们通过使用蜂鸣器输出声音作为闹钟使用。通过以上功能的罗列后,就可以进行程序设计的规划封装了。我们将读写DS1302时钟芯片单独封装成一个程序。将1602液晶显示的功能程序单独封装起来,作为一个C程序。将LED点阵显示、LED数码管显示都各自单独封装成一个C文件。为了节省功耗采用动态扫描的工作模式,将执行此工作模式的封装成一个C文件。遥控器红外控制的模块与矩阵按键的功能模块的驱动代码封装起来。闹钟功能也独立封装成一个C文件。设计功能的完成度是通过具体应用层实现的。应用层是建立在功能模块的基础上的。比如我们通过时钟芯片D
33、S1302读取当前时钟信息后,将年、月、日、时、分、秒的哪部分用1602屏幕显示出来,哪部分用点阵LED显示,哪部分用数码管显示。当时间到设定时候,驱动蜂鸣器实现闹铃功能。这些具体的应用动作需要涉及到多个功能模块进行配合才能实现。3.1.2软件程序流程程序的具体流程需要通过对具体功能模块与应用层的整合规划设计。之前每个功能模块的都是具体的操作硬件时的驱动层,用来进行某个固定的功能动作的细节操作。而应用成就是将需要的驱动层的模块组合一起去完成一个相应的功能应用。程序的流程图如图3-11所示:运行刷新温湿度显示图3-1多功能电子钟软件流程图3.2 1602液晶显示模块3.2.1液晶的接口时序LCD
34、1602液晶显示器既可采用并行连接也可以采用串行连接,接线方式的不同将影响程序的编写,本系统采用并行通讯方式。表3.1时序参数表:名称符号最小值最大值单位E周期时间Tcyc1000nsE高电平宽度Pweh450nsE低电平宽度Pwel450nsE上升时间Tr25nsE下降时间Tf25ns地址建立时间Tas140ns地址保持时间taw10ns数据建立时间Tdsw200ns数据延迟时间Tddr320ns写数据保持时间Tdhw10ns读数据保持时间Tdhr20ns图3-2 1602液晶读数据时序 图3-3 1602液晶写数据时序具体的操作方法如图3-4所示:图3-4 1602液晶操作方式3.2.2液
35、晶驱动模块操作部分代码其操作如下/* 向 1602 液晶写入一个Byte命令, cmd-需要写入的命令值 */void LcdWriteCmd(unsigned char cmd)LcdWaitReady();LCD1602_RS = 0;LCD1602_RW = 0;LCD1602_DB = cmd;LCD1602_E = 1;LCD1602_E = 0;/* 向 LCD1602 液晶写入一Byte数据, dat-需要写入的数据值 */void LcdWriteDat(unsigned char dat)LcdWaitReady();LCD1602_RS = 1;LCD1602_RW = 0
36、;LCD1602_DB = dat;LCD1602_E = 1;LCD1602_E = 0;3.2.3 1602液晶RAM状态字的说明1602液晶有一个状态寄存器STA。此状态寄存器是用来查询1602液晶当前是否正在工作,有没有时间去完成当前使用者的操作需求。我们可以读取STA寄存器的bit7位,如果得到的bit7位为高电平,则表示当前1602液晶的状态为空闲,当前1602液晶可以去让使用者去操作。如果bit7位低电平,则表示液晶正在忙于其他的操作工作,不能完成使用者当前的操作要求。图3-5为STA寄存器状态字说明:图3-5 1602液晶状态字其操作过程如下: /* 等待液晶准备好 */voi
37、d LcdWaitReady( )unsigned char sta;LCD1602_DB = 0xFF;LCD1602_RS = 0;LCD1602_RW = 1;do LCD1602_E = 1;sta = LCD1602_DB; /读取状态字LCD1602_E = 0; while (sta & 0x80); /如果bit7 为1表示液晶繁忙,循环查询直到其等 0 3.2.4 1602液晶RAM映射区1602液晶一共2行,每一行最多显示16个字符。但是在1602液晶的内部有一块RAM的字符缓存区域。此缓存区域也是2行,但每行有40个字节的空间。可以将需要显示的字符先预存到1602的RAM
38、里。最多每行40个,然后直接使用每个字符的指针即可调用相应RAM空间中的字符,指针在每行每列的映射如图3-6 所示:图3-6 1602液晶RAM映射区操作将字符写到液晶不同行方法如下/* 显示 RAM 起始地址,即光标指向的位置, (x,y) -对应屏幕坐标 */void LcdSetCursor(unsigned char x, unsigned char y)unsigned char addr;if (y = 0) /如果设置的为第一行显示addr = 0x00 + x; /则指针的实际值 elseaddr = 0x40 + x; /否则设置为第二行显示指针的实际值 LcdWriteCm
39、d(addr | 0x80); /设定的RAM 地址指针/* 显示需要显示的字型, (x,y) 屏幕的坐标位置, str-字符串指针变量 */void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)LcdSetCursor(x, y); /获得RAM指针的值while (*str != 0) /如果取指针str内的值不为字符串结束符就连续输出 LcdWriteDat(*str+); /取 str指针内的数据 , 指针变量str 13.2.5 1602液晶初始化使用1602液晶屏,要先进行如下设置,目的是为了先对其
40、进行初始配置:1、配置显示的模式向1602进行写命令,固定写入0x38,对于1602液晶进行如下属性的设置:以8位数据并行总线的方式进行数据的传送。每个字型所占用的点阵规格为5*7。设置1602液晶以两行进行显示,每行可以显示16个字符。2、光标是否显示的配置。有两种输入配置命令的方式,两种方式都需要以字节的形式进行写入。第一种写入的字节前高5位即bit7至bit3位写入固定值0b00001,bit2至bit0中bit2选择是否开显示,bit1为选择是否开起光标显示,bit0选择是否使能光标的闪烁。第二种写入方法为写入的字节高6位bit7至bit2固定写入0b000001,bit1表示选择当读
41、取一个指针变量或者写入一个字符后,指针是默认自加1,光标显示是自加1,或者是默认指针是自减1,光标显示是自减1.3、屏幕清除配置。写入字节0x01时,此处固定这么写,表示选择了配置了RAM映射指针清除为0,液晶屏幕的输出清除为0。当固定写入字节0x02时,仅仅是配置RAM映射指针清除为0,液晶的显示输出不清除为0。4、RAM映射指针地址的配置。此命令也为一个字节的形式,分为两个部分。一部分为bit7固定为1。而另一个部分bit6至bit0的值为使用者需要在液晶的某个位置写入字型是对应的液晶RAM指针地址的映射表上的值。将以上两个部分进行丨运算合并就是需要配置的字型相应RAM表中的指针变量值。1
42、602液晶初始化程序如下:void InitLcd1602()LcdWriteCmd(0x38); /液晶屏幕为16*2 显示模式,5*7 点阵规格,8位并口传送LcdWriteCmd(0x0C); /显示器开,光标关闭LcdWriteCmd(0x06); /文字不动,地址自动+1LcdWriteCmd(0x01); /清屏3.3 时钟芯片DS1302的操作3.3.1 DS1302寄存器DS1302每条命令都是有8个bit位,即以字节为单位。bit7位固定置1,如果在操作的时候错误的写入为0是无效的。DS1302时钟芯片内部是自带一个RAM区域的,可以缓存数据,但是我们使用时钟芯片是基本上是用
43、不到此功能。一般将bit6位置为0,此位置为0是选择使用CLOCK模式。bit5至bit1是具体每个寄存器的地址位。bit0是读写位,置0为向DS1302做写操作,置1为向DS1302做写操作。具体的命令字节布局如图3-6所示。图3-6 DS1302命令字节DS1302时钟寄存器按用途可以分成时钟参数配置与涓流充电两类。这里我们不使用涓流充电寄存器。而配置时钟参数的寄存器有8个,如图3-7所示的时钟寄存器地址参数配置图里,寄存器的地址为一个字节长度。其中bit7、bit6与bit0直接给出,就是0x80、0x81这几种,bit0位为0是写操作,bit0位为1是读操作。图3-7 DS1302时钟
44、芯片寄存器DS1302时钟芯片寄存器是采用BCD码的形式设置的,所谓BCD码就是以16进制数的字型来表示10进制数的方法。如0x16就表示10进制数的16。以下是DS1302时钟芯片寄存器的介绍:寄存器0:bit7位CH是检测芯片是否掉电的检测位。芯片要是有备用电源,上电后,首先查询此位,若此位置0,则表明掉电后备用电源的供给芯片,时间任然持续运行着;若此位置1,则掉电后时钟芯片也随之停止了。bit6至bit4设置秒参数的十位值,剩下4位设置秒的个位数。寄存器1:bit7位缺省,bit4至bit6设置时间分钟的十位数,bit0至bit3设置分钟的个位数字。寄存器2:最高位置1表示一天的小时按1
45、2小时制计算,置2表示按24小时计算。第7位置0位固定值,第6位在12小时模式是置0表示是上午时间,置1表示是下午时间。当设置24小时模式下,第6位和第5位共同表示小时十位数,剩下低位设置个位数。寄存器3: bit7与bit6默认值为0,日期的十位数用第6位于第5位设置,剩下的位设置日期个位数。寄存器4:bit7至bit5默认值为0,第5位设置月份的十位数,剩下的几位设置月份的个位。寄存器5:bit7至bit3默认值为0,剩下几位设置星期数。寄存器6:bit7至bit4设置年份的十位数,剩下几位设置年份的个位值。但是这里需要知道时间设置范围00至99代表时间跨度为2000至2099年。寄存器7:bit7是一个芯片的写操作保护,置1时禁止向DS1302内的寄存器或者31bety的RAM空间写入数据。如果要做写操作需要置0。3.3.2 DS1302时序的操作DS1302通信一种SPI通信模式。所谓SPI通信主要使用CE、I/O和SCLK三根线,CE线的作用是使能,SCLK线的作用是输出时钟信号,I/O作为数据线。如图3-8与图3-9所示是DS1302的读写时序。图3-8 DS1302读