基于单片机的数字万年历设计毕业论文.doc

上传人:知****量 文档编号:43102345 上传时间:2022-09-16 格式:DOC 页数:57 大小:1.06MB
返回 下载 相关 举报
基于单片机的数字万年历设计毕业论文.doc_第1页
第1页 / 共57页
基于单片机的数字万年历设计毕业论文.doc_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《基于单片机的数字万年历设计毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字万年历设计毕业论文.doc(57页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、. . .基于单片机的数字万年历设计毕业论文目录1设计任务要求122 设计方案与比较(设计可行性分析)132.1 单片机芯片的选择方案和论证132.2 显示模块选择方案和论证:132.3时钟芯片的选择方案和论证:142.4按键模块方案的选择与比较143 硬件电路设计153.1 系统总体方案设计153.2 系统框图153.3 系统硬件概述163.4 主要单元电路的设计163.4.1 系统核心部分-单片机主控模块163.4.2 时钟电路模块的设计203.4.3 按键电路模块的设计233.4.4 液晶显示电路模块233.4.5 闹铃电路324 软件设计344.1 系统软件设计344.2系统主程序的流

2、程图345 系统仿真测试365.1仿真软件简介365.2仿真步骤366 测试与结果分析396.1 硬件测试结果396.2 软件测试406.3 测试结果分析与结论406.3.1 测试结果分析406.3.2 测试结论40参考文献41致谢42附录43附录一:系统程序如下:43附录二:系统原理图64附录三: 液晶显示和DS1032时钟的PCB图65附录四:键盘的PCB图661设计任务要求1.平年365天(52周+1天),闰年366天(52周+2天),平年2月28天,闰年2月29天。2.每400年整一闰,或每4年且不为百年的一闰,即凡能被400整除,或不能被100整除但能被4整除的年份为闰年。3.每 4

3、年(3个平年+1个闰年)共208周+5天每百年共100*(208周+5天)-1天=5217周+5天每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天,即每400年一个轮回。4.显示年、月、日、星期、时、分、秒的功能。5.具有调节功能,通过键盘加减调整万年历。2 设计方案与比较(设计可行性分析)2.1 单片机芯片的选择方案和论证方案一: 采用89C51芯片作为硬件核心,采用Flash ROM,部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的

4、错误修改或对程序的新增功能需要写入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二: 采用AT89S52,芯片ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全兼容,该芯片部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要写入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89S52作为主控制系统.2.2 显示模块选择方案和论证:方案一: 采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样,清晰可见,

5、但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏.方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.方案三: 采用LCD12864液晶显示模块显示,由于其屏幕是四行八列的,可以显示很大的信息量。2.3时钟芯片的选择方案和论证:方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二: 采用DS1302时钟芯片实现时钟,DS1302芯片是一种

6、高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以与闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V围,2.5V时耗电小于300nA.2.4按键模块方案的选择与比较方案一: 矩阵式键盘,行线的一端通过上拉电阻与单片机的P1口线的高四位相连,列线的一端也通过上拉电阻与单片机的P1口线低四位相连。矩阵式键盘结构性好,使用于按键较多时的情况。方案二:独立式键盘, 每个按键的电路是独立的,都有单独一根数据线输出键的通断状态。单片机一条I / O口线对应一个按键。独立式键盘结构简单,易于编程,适用本实验按键较少的情况。由于这次设计中,使用的功能键比较多,若采用独立

7、式键盘占有的I/O口比较多,所以在这里采用矩阵式键盘。综上各方案所述,对此次作品的方案选定: 采用AT89S52作为主控制系统; DS1302提供时钟; LCD12864液晶显示模块作为显示;矩阵式键盘。3 硬件电路设计3.1 系统总体方案设计万年历采用LCD12864液晶显示时间。LCD12864液晶和矩阵式键盘都是单片机用扩展I/O接口实现的,当把程序下载到单片机,就显示年、月、日、星期并且电子钟开始走时。按调试键按秒、分、时、星期、日、月、年的调整运算。按加减进行调整,每次调整时询问“秒分”单元不能满60、“时”单元是不能满24、“日”单元是否满30以与“月”单元是否12。若满足条件则清

8、零并向高位进1,若不满足则继续计数。以“秒分”单元为例,当满60秒时“秒”单元便清零,同时“分”单元加1。当满60分时“分”单元清零,同时“时”单元加1。修改完时间后按下确定键,时钟继续走。,3.2 系统框图显示采用LCD12864液晶显示模块,设置时间按键采用矩阵式键盘,时间生成采用DS1302时钟芯片,系统框图如下:LCD液晶显示屏显示模块AT89S52主控制模 块DS1302时钟模块键盘模块 图1 系统设计框图3.3 系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电

9、路,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、星期、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;用液晶显示。3.4 主要单元电路的设计3.4.1 系统核心部分-单片机主控模块AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独

10、立地作输出或输入。AT89S52具有以下主要性能: 8KB可改编程序Flash存储器(可经受1000次的写入/擦除周期) 全静态工作:0Hz24MHz三级程序存储器1288字节部RAM32条可编程I/O线2个16位定时器/计数器6个中断源可编程串行通道片时钟振荡器AT89S52的引脚与功能AT89S52单片机的管脚说明如图2所示。图2 AT89S52的管脚(1) 主要电源引脚VCC 电源端GND 接地端(2) 外接晶体引脚XTAL1和XTAL2XTAL1 接外部晶体的一个引脚。在单片机部,它是构成片振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到部时钟

11、发生器的输入端。XTAL2 接外部晶体的另一个引脚。在单片机部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。(3) 控制或与其它电源复用引脚RST、ALE/PROG、/PSEN和/EA/VPPRST复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。ALE/PROG 当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE

12、脉冲。在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)6。/PSEN 程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89S52/LV52由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP 外部访问允许端。要使CPU只访问外部程序存储器(地址为0000HFFFFH),则/EA端必须保持低电平(接到GND端)。当/EA端保持高电平(接VSS端)时,CPU则执行部程序存储器中的程序。(4) 输入/输出引脚 P0.0 P0.7、P1.0P1

13、.7、P2.0 P2.7 和P3.0P3.7P0端口(P0.0 P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。P1端口(P1.0 P1.7) P1是一个带有部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P2端口 (P2.0P2.7) P2是一个带有部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电

14、流方式)4个TTL输入。对端口写1时,通过部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P3端口(P3.0P3.7) P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能,这些特殊功能见表1。表1 P3端口的特殊功能 端口引脚 兼 用 功 能 P3.0RXD (串行输入口) P3.1TXD (串行输出口) P3.2/INT0 (

15、外部中断0) P3.3/INT1 (外部中断1) P3.4T0 ( 定时器0的外部输入) P3.5T1 (定时器1的外部输入) P3.6/WR (外部数据存储器写选通) P3.7/RD (外部数据存储器读选通)AT89S52单片机为40引脚双列直插芯片, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如以下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻

16、与开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 如图3所示图3单片机最小系统3.4.2 时钟电路模块的设计图4示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄

17、存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。图4 DS1302的引脚图DS1302的性能特性实时时钟,可对秒、分、时、日、周、月以与带闰年补偿的年进行计数;用于高速数据暂存的318位RAM;最少引脚的串行I/O;2.55.5V 电压工作围;2.5V时耗电小于300n

18、A;用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至VCC1)的能力。 (1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如以下图5所示。表2为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最

19、低位开始输入/输出的。表3为DS1302的日历、时间寄存器容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。(2) DS1302的控制字节DS1302的控制字如表2所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字

20、节总是从最低位开始输出 RAM RD 1 A4 A3 A2 A1 A0 / CK /WR表2 DS1302的控制字格式(3) 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如以下图5所示 图5 DS1302读/写时序图(4) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器与其控制字见表3。 表3 DS1302的日历、时间寄存器

21、此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器与与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 3.4.3 按键电路模块的设计接按键的单片机端口接上10k欧姆的上拉电阻,以保证在无按键按下时端口是高电平,而按键按下时对应的I/O口为低电平。图6 矩

22、阵式键盘原理图3.4.4 液晶显示电路模块(1)12864C-1液晶中文显示模块概述12864C-1是一种具有4位/8位并行、2线或3线串行多种接口方式,部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵

23、的图形液晶模块。基本特性:l l 低电源电压(VDD:+3.0-+5.5V)l l 显示分辨率:12864点l l 置汉字字库,提供8192个1616点阵汉字(简繁体可选)l l 置 128个168点阵字符l l 2MHZ时钟频率l l 显示方式:STN、半透、正显l l 驱动方式:1/32DUTY,1/5BIASl l 视角方向:6点l l 背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10l l 通讯方式:串行、并口可选l l 置DC-DC转换电路,无需外加负压l l 无需片选信号,简化软件设计l l 工作温度: 0 - +55 ,存储温度: -20 - +60(2) 液晶显

24、示模块接口说明表4液晶显示模块各引脚接口管脚号名称LEVEL功能1VSS0V电池地2VDD+5V电源正(3.0V5.5V)3V0-对比度(亮度)调整4CSH/L模组片选端,高电平有效5SLDH/L串行数据输入端6CLKH/L串行同步时钟:上升沿时读取SID数据15PSBLL:串口方式17/RESETH/L复位端,低电平有效19AVDD背光源电压+5V20KVSS背光源负端0V表5 并行接口管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R

25、/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(

26、见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。*注释2:模块部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。(3) 液晶显示模块主要硬件构成说明控制器接口信号说明:1、RS,R/W的配合选择决定控制界面的4种模式如下表6。表6 RS,R/W的配合选择决定控制界面的4种模式RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)与地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(D

27、R)中读出数据表7 E信号E状态执行动作结果高低I/O缓冲DR配合/W进行写数据或指令高DRI/O缓冲配合R进行读数据或指令低/低高无动作 忙标志:BF BF标志提供部工作情况.BF=1表示模块在进行部操作,此时模块不承受外部指令和数据.BF=0时,模块为准备状态,随时可承受外部指令和数据. 利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态.字型产生ROM(CGROM) 字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM 的容就显示在屏幕上,DFF=0为关显示(DISPLAY O

28、FF)。 DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。显示数据RAM(DDRAM)模块部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型与CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下

29、一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。 字型产生RAM(CGRAM) 字型产生RAM提供图象定义(造字)功能, 可以提供四组1616点的自定义图象空间,使用者可以将部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。 光标/

30、闪烁控制电路此模块提供硬体光标与闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。(4) 液晶显示模块指令说明模块控制芯片提供两套控制命令,基本指令和扩充指令如下表8、表9:表8 指令表1:(RE=0:基本指令)指 指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满20H,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置;这个指令不改变DDRAM 的容显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ON B

31、=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向与指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的容 功能 设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作 设定CGRAM 地址0001AC5AC4AC3AC2AC1AC0设定CGRAM 地址 设定DDRAM 地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC

32、4AC3AC2AC1AC0读取忙标志(BF)可以确认部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数据从部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/GRAM)表9 指令表2:(RE=1:扩充指令)指 指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0 待命模式0000000001进入待命模式,执行其他指令都棵终止待命模式卷动地址开关开启000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM和CGRAM地址 反白 选择0000

33、0001R1R0选择2行中的任一行作反白显示,并可决定反白与否。初始值R1R000,第一次设定为反白显示,再次设定变回正常 睡眠 模式0000001SLXXSL=0:进入睡眠模式SL=1:脱离睡眠模式 扩充 功能 设定00001CLXREG0CL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作G=1/0:绘图开关 设定绘图RAM 地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC0AC0设定绘图RAM先设定垂直(列)地址AC6AC5AC0再设定水平(行)地址AC3AC2AC1AC0将以上16位地址连续写入即可 备注:当IC1在承受指令前,微处理器必

34、须先确认其部处于非忙碌状态,即读取BF标志时,BF需为零,方可承受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。(5)液晶显示模块读写时序图数据传输过程图7 8位和4位数据线的传输过程图8 串口数据线模式数据传输过程时序图 图9 MPU写资料到ST7920(8位数据线模式) 图10 MPU 从ST7920读资料(8位数据线模式) 串口读写时序:图11 串口方式下MPU写数据到ST7920(6)液晶显示模块应用1、使用前的准备 先给模块加上工作电压,再按照以下图的连接方法调节LCD的对比度,使其显示出黑色的底

35、影。 此过程亦可以初步检测LCD有无缺段现象。2、字符显示12864C-1每屏可显示4行8列共32个1616点阵的汉字,每个显示RAM可显示1个中文字符或2个168点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。12864C-1部提供1282字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)与CGRAM(自定义字形)的容。三种不同字符/字型的选择编码围为:00000006H(其代码分别是0000、0002、0004

36、、0006共4个)显示自定义字型,02H7FH显示半宽ASCII码字符,A1A0HF7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下表10所示。表10 液晶模块地址80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8DH8EH8FH98H99H9AH9BH9CH9DH9EH9FH3 、图形显示 先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址)垂直地址围 AC5.AC0水平

37、地址围 AC3AC0绘图RAM 的地址计数器(AC)只会对水平地址(X 轴)自动加一,当水平地址=0FH 时会重新设为00H 但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料排列顺序如以下图图12 坐标地址与资料排列顺序4、应用说明用12864C-1显示模块时应注意以下几点:欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空

38、ASCII字符位置。当字符编码为2字节时,应先写入高位字节,再写入低位字节。模块在接收指令前,向处理器必须先确认模块部处于非忙状态,即读取BF标志时BF需为“0”,方可承受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位。(7) LCD1602液晶显示电路设计以上我们完成了对LCD12864的基本特征、模

39、块接口、控制器接口信号说明、模块指令、读写时序的学习,根据LCD读写的时序模拟总线的方式与单片机进行数据的通讯,首先将数据从I/O口读入或送出,再选择R/W 和RS的电平进行不同的操作,在使能端E下降沿时触发数据的读入或送出。如图13所示图13 液晶显示模块与单片机引脚的连接(网络标号)3.4.5 闹铃电路当系统显示当前时间与设置的闹铃时间相同时,闹铃自动闹铃,设定的闹铃时间只可设定时和分,当前时间不断与设定的闹铃时间比较,不相等时不产生任何现象,一旦相等,输出一个高电平使三极管导通,从而使蜂鸣器工作,闹铃起作用。闹铃电路如图14所示。图14 闹铃电路4 软件设计4.1 系统软件设计整个软件系

40、统采用模块化思想,把独立式键盘编程模块、LCD12864、DS1302的驱动程序分模块编写,在功能程序中调用。采用这种方法不仅使程序模块化,使程序结构层次分明,便于管理和维护,同时可方便以后开发的调用,而不必关心底层驱动是如何实现的,这样缩短了开发周期,开发效率大大提高。按键处理中采用采用网状多级状态结构的编程方法。4.2系统主程序的流程图 流程图如下:YYN开始LCD12864初始化DS1302初始化读取DS1302的静态RAM中的时间和闹铃时间标记Down=1?键盘扫描进入设置状态退出?标记Down=0?调用读取时间函数并显示时间定时中断初始化键盘扫描闹钟时间到?NNYN图15 系统主程序

41、的流程5 系统仿真测试5.1仿真软件简介(1) Keil uVision2程序编译Keil uVision2是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编、C、PL/M语言,它是德国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强, 使你可以更加贴近CPU本身,与其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。(2)protuse仿真Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机与外围器件。它是目前最好的仿真单片机与外围器件的工具。虽然目前国推广刚起步,但已受到单片机爱好者、从事单片机教学的教师

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com