简易计算器设计_第1页
简易计算器设计_第2页
简易计算器设计_第3页
简易计算器设计_第4页
简易计算器设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、摘 要简易计算器是一种非常广泛日常工具,对现代社会越来越流行,它可以进行一些简易的计算。本系统可进行简易的计算信息,该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。本系统硬件部分由AT89S52单片机、LCD1602液晶屏、键盘、指示灯系统等部分构成。软件部分用C51语言编写,主要包括简易计算、显示等。本系统的设计说明重点介绍了如下几方面的内容:基于单片机简易计算器的基本功能,同时对矩阵键盘及数码管动态显示原理进行了简单的阐述;介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;对系统各功能模块的

2、软、硬件实现进行了详细的设计说明。关键字:AT89S52;液晶屏LCD1602;计算器2简单计算器的设计目 录引言11.单片机的应用21.1单片机的介绍21.2单片机的应用21.3AT89S5232.硬件设计6 2.1 系统框图6 2.2 最小系统6 2.3 矩阵键盘7 2.4 LCD160283. 软件设计10 3.1矩阵键盘扫描原理10 3.2 LCD1602的软件设计10 3.3 主程序设计12 3.4 源程序13 3.5 调试结果134. 设计小结14参考文献15附录16简单计算器的设计引言随着社会的发展,人们生活水平的提高,单片机的应用越来越贴近生活了,人们常用单片机来实现一些简单的

3、电子设计。单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。计算器在人们的日常生活中是不可或缺的电子产品之一,目前市场上的计算器基本可以满足我们的日常需求,但它还在发展之中,我们要继续研究出更加强大的计算器。基于这样的理念,本设计采用单片机来设计简易计算器。本设计是以STC89C52为单片机,LCD为显示器设计的简易计算器,所设计的计算器将完成两位数的加、减、乘、除等功能。通过本次课程设计,进一步掌握单片机知识,知道AT89

4、S52单片机的原理、编程和各种功能的应用,了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、调试和仿真,充分提高动手能力和排除故障的能力,同时通过课程设计加深我们对单片机的认识和兴趣,发挥我们的创新能力和动手能力。1. 单片机及其应用单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。  1.1 单片机介绍单片微型计算机简称单

5、片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国

6、50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!单片机的硬件特性:单片机集成度高。单片机包括CPU、4KB容量的ROM(8031 无)、128 B容量的RAM、 2个16位定时/计数器、4个8位并行口、全双工串口行口。系统结构简单,使用方便,实现模块化。1.2 单片机的应用目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数

7、据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: (1)在智能仪器仪表上的应用 (2)在工业控制中的应用 (3)在家用电器中的应用 (4)在计算机网络和通信领域中的应用 (5)单片机在医用设备领域中的应用 (6)在各种

8、大型电器中的模块化应用 (7)单片机在汽车设备领域中的应用 此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。1.3 AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash

9、,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。主要性能1、与MCS-51单片机产品兼容2 、8K字节在系统可编程Flash存储器3 、1000次擦写周期4 、全静态操作:0Hz33Hz5 、三级加密程序存储器6 、32个可编程I/O口线

10、7 、三个16位定时器/计数器8、八个中断源9、全双工UART串行通道10、 低功耗空闲和掉电模式l 1、掉电后中断可唤醒l 2、看门狗定时器l3、 双数据指针l4、 掉电标识符引脚结构 图1.1引脚结构P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/

11、O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统

12、编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制

13、信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。引脚号第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6 WR(外部

14、数据存储器写选通)P3.7 RD(外部数据存储器写选通)RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将

15、会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。2. 硬件设计2.1 系统框图本文所设计的简易计算器显示系统由STC89C52单片机及其最小系统、LCD1602液晶显示和矩阵键盘等部分组成。其系统框图如图2.1所示。图2.1 简易计算器系统框图2.2 最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元

16、件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。如图2.2为单片机的最小系统。 图2.2 STC89C52最小系统STC89C52 单片机概述:STC89C52是一个低功耗,高性能CMOS 8位单片机,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。STC89C52具有如下特点:40个引脚,8k的flash存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(IO)口,5 个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,

17、片内时钟振荡器。2.3 矩阵键盘键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。目前市场上键盘有独立键盘和矩阵键盘,经过多方考量,本设计采用矩阵键盘。在键盘中按键数量较多时,为了减少IO口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。所以,在需要的键数比较多时,采用矩阵法来做键盘较为合理。2.3.1 独立键盘与矩阵键盘的区别计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在

18、这种情况下,编程会比较简单,但是会占用大量的IO口资源,因此在很多情况下都不采用这种方式。矩阵键盘扫描程序的优点在于,不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。此外,本键盘扫描程序每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。2.3.2 矩阵键盘与单片机的接口电路下图为矩阵键盘与单片机的接口电路图,由图可知,当无按键闭合时, P10P13与P14P17之间开路;当有键闭合时,与闭合键相连的两条IO口线之间短路。 图2.3 矩阵键盘接口电路2.4 LCD16022.4.1 LCD1602液晶简介本设计使用LCD1602液晶

19、显示器来显示。液晶是介于固态和液态间的有机化合物,将其加热会变成透明液态,冷却后变成结晶的混作固态。在点击的作用下,产生冷热变化,从而影响它的透光性,来达到显示的目的。1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5*7或者5*11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,所以它不能显示图形 。LCD1602液晶显示器具有以下几个优点:低压、微功耗、显示信息量大、寿命长、无辐射、无污染。2.4.2 LCD1602与单片机的接口电路1602液晶模块内部的控

20、制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式设置和数据显示等。本设计采用的是LCD1602液晶模块,是标准的16针插座,接口电路如下图所示: 图2.4 LCD1602接口电路知道接口图后,还要了解每个引脚接口的说明,引脚接口说明如下表所示: 编号 符号 引脚说明编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数

21、据 16 BLK 背光源负极表2.4 引脚接口说明表3.软件设计3.1矩阵键盘扫描原理如图2.3所示,初始化时,将P1.4置为低电平,通过与0x0f 相与来判断所按下的键,此次为扫描位于P1.4那一行的键,若相与结果为0x0e时说明P1.0所检测出的为低电平,闭合的键应为P1.4行与P1.0列的交叉处的键。若相与结果为0x0d则P1.1所检测为低电平,闭合的键应为P1.4行与P1.1列的交叉处的键。若相与结果为0x0b则P1.2所检测为低电平,闭合的键应为P1.4行与P1.2列的交叉处的键。若相与结果为0x07则P1.3所检测为低电平,闭合的键应为P1.4行与P1.3列的交叉处的键。要把16个

22、键盘全部扫描完需要进行4次这样的逐行扫描,所用方法相同程序类似分别另P1.5,P1.6,P1.7为低电平执行相同操作。判断有无按键按下的方法:第一步,置列线P14P17为输入状态,从行线P10P13输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P14P17读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。 图2.3 矩阵键盘接口电路3.2 LCD1602的软件设计3.2.1 LC

23、D1602的指令说明1602液晶模块内部的控制器共有11条控制指令,如表3.2所示。 表 3.2控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容如上表所示,160

24、2液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(1为高电平、0为低电平) 3.2.2 LCD1602的时序图LCD1602与HD44780相兼容的芯片时序表如下:表3.3基本操作时序表读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无读写操作时序图如下: 图3.2 读操作时序图 图3.3 写操作时序图3.3 主程序设计在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。

25、设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以单独设计,编程和调试,然后组合起来。这种方法便于设计和调试,容易实现多个程序共存,但各个模块之间的连接有一定的难度根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计, 然后再制作各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。程序流程图如图3.3 图3.4主程序流程图3.4 源程序见附录3.5 调试结果在查找了相关书籍后编写出程序,并根据程序焊接所需要的元器件,将各类元器件及管脚座焊接完毕后,插入单片机

26、、LCD显示屏、矩阵键盘等各类芯片。随后进行功能验证。加、减、乘、除运算和LCD液晶显示。1)上电后,屏幕初始化。 2)计算。按下数字键,屏幕显示按下的数字,再按下加、减、乘、除符号键,然后再按下数字键,最后按下“”号键,屏幕即显示出计算结果。本次计算器可实现两位数间的计算。 3)如果要再次计算,可以按下清零键清零,或者按下单片机的复位键,重新初始化。经过以上步骤验证可知,实验目标功能基本实现,设计成功。 图3.5 调试结果图4. 设计小结这次的课题是基于STC89C52的简易计算器设计,本设计采用了STC89C52芯片,基本上实现了利用单片机进行了一个 简单的计算器设计,允许对输入数据进行加

27、、减、乘、除运算以及液晶 1602 进行显示。通过设计简易计算器的过程中我掌握了单片机的基本原理及其各种应用,对它的各种硬件接口与软件设计方法有较深入的认识。通过对电路原理图、电路仿真、掌握了对proteus仿真软件的使用。在实验前我先是在网上和图书馆找了一些前辈所设计的计算器方案进行学习参考,一开始认为简易计算器制作起来结构相对简单,涉及的知识也有文献可查询,除了程序繁琐一些,其他都还好。但在实际制作过程中并不是这么简单,我们遇到了许多问题,不仅仅是专业知识上的问题,还存在组员之间的意见不同等。最后在老师的指导和组员之间的磨合,都克服了困难,完成了设计。这次一次课程设计我们不仅将专业知识融会

28、贯通,还提高了动手能力和分工合作,通过课程设计,我们对单片机的认识也有所提升。在用单片机实现简易计算的设计中使用到了AT89s52、LCD1602及其4*4键盘的使用。在设计过程中我通过在网上和图书馆查阅资料,收集了关于单片机和液晶屏LCD1602显示方面的资料,通过对这些资料的学习,我了解了单片机的基本结构和单片机在生活和生产中所发挥的作用;液晶屏LCD1602的原理和使用。参考文献1徐志保,基于工程导向的单片机实战教程,20112郭天祥,新概念51单片机c语言教程.北京:电子工业出版社,20093马忠梅,单片机的C语言应用程序设计.北京:北京航空航天大学出版社,19974张毅刚,单片机原理

29、及应用.北京,高等教育出版社,20085谭浩强,C程序设计(第二版)M.北京:清华大学出版社,20036余锡存,曹国华,单片机原理及接口技术.西安:西安电子科技大学出版社,200024附录#include<reg51.h> /包含单片机寄存器的头文件#include<intrins.h> /包含_nop_()函数定义的头文件#include<math.h>sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit

30、BF=P17; /忙碌标志位,#define NO_KEY_PRESS 0xffunsigned char code tab=0xb7,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb;unsigned char code num="0123456789"unsigned long num1,num2,alg;unsigned char flag;void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<15;j+) ; void delay(unsigne

31、d char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); /*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/ unsigned char BusyTest(void) bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给resultE=0; r

32、eturn result; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置"0" _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P1=dictate; /将数据送入P1口,即写入指令或地址

33、 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:指定字符显示的实际地址入口参数:x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /显示位置的确定方法规定为"80H+地址码x" /*函数功能:将数据(字符的标准ASCII码)写

34、入液晶模块入口参数:y(为字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置"0" P1=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop

35、_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对LCD的显示模式进行初始化设置*/void LcdInitiate(void) delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38); /显示模式设置:16×2显示,5×7点阵,8位数据接口delay(5); /延时5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction

36、(0x0c); /显示模式设置:显示开,有光标,光标闪烁delay(5);WriteInstruction(0x06); /显示模式设置:光标右移,字符不移delay(5);WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除delay(5); unsigned char keyscan()/键盘扫描,返回扫描值 unsigned char temp1,temp2,key;P0=0xf0;if(P0!=0xf0)delay(10);if(P0!=0xf0)temp1=P0;P0=0x0f;_nop_();_nop_();_nop_();temp2=P0;key=temp1|temp2;while(P0!=0x0f);return key;return NO_KEY_PRESS; unsigned char key_inquiry()/对键盘扫描值译码并显示unsigned char i,key; key=keyscan();if(key!=NO_KEY_PRESS)if(flag)/按等于号若再次计算则将之前的数值清零WriteInstruction(0x01);delay(5);flag=0;switch(key)case 0x7e:WriteData('+');return '+'

温馨提示

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

评论

0/150

提交评论