单片机矩阵键盘,数码管,双机通信完美版_第1页
单片机矩阵键盘,数码管,双机通信完美版_第2页
单片机矩阵键盘,数码管,双机通信完美版_第3页
单片机矩阵键盘,数码管,双机通信完美版_第4页
单片机矩阵键盘,数码管,双机通信完美版_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学单片机实习应用课程设计说明书学生实习报告学生姓名: 王耀辉 专业班级: 通信1304 指导教师: 撒继铭 工作单位: 信息工程学院 题 目: 单片机原理与应用 初始条件: 单片机最小系统、下载电路、扩展电路、软件(PROTEUS等)、万用表、电烙铁等工具完成的主要任务: 1)利用PROTEL等软件进行硬件设计;2)利用Keil uV2软件完成应用系统软件设计;3)利用stc-isp软件完成在系统编程、下载,并完成系统软件调试;4)题目由指导教师提供;5)要求每个学生单独完成硬件软件设计、仿真、焊接、调试任务;6)写出实习报告,实习报告主要包括以下内容:目录、摘要、关键词、基本原理、

2、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论、参考文献等;7)实习完成后通过答辩;8)答辩时交实习报告电子文档,通过答辩后根据修改意见修改并打印、装订成册。实习时间安排:序号阶段内容所需时间1方案设计1天2硬件设计2天3软件设计2天4系统仿真1天5电路板焊接2天6系统调试1天7答辩1天合 计10天指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘 要IAbstractII1设计任务及要求12 基本原理32.1基本原理及原理框图32.2 STC89C52结构功能介绍33 硬件电路原理与设计63.1复位电路63.2振荡电路73.3单片机最

3、小系统83.4数码管显示电路93.4.1 数码管选择93.4.2 LED芯片7SEG-MPX6-CA93.4.3 数码管电路设计103.5 矩阵键盘电路113.6串口通信电路123.7 总设计电路134 软件设计144.1软件介绍144.1.1程序编写软件Keil144.1.2仿真软件Proteus144.2数码管显示设计144.3串行通信接收程序155 仿真结果与分析175.1 数据输入175.2 数据显示185.3 实现串口通信196实物展示207心得体会22参考文献23附录:元件清单24附录:总程序设计25 摘 要单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以

4、利用最小系统进行编程实现工业控制。单片机最小系统电路板在单片机开发市场和大学生电子设计方面十分流行。本次课程设计包括STC89C52单片机最小系统包括复位和时钟电路及供电系统、44矩阵键盘、独立6个8段LED数码管显示电路。利用相关设计软件进行原理图设计利用Keil软件编程以及Proteus软件仿真借此巩固单片机应用、模拟电路、数字电路课程及学会各种工程软件的使用。 关键字:单片机 最小系统 矩阵键盘 Protues keil AbstractMCU minimum system, regardless of the singlechip novice staff or staff devel

5、opment ,who can use minimum system program for industrial control,has very important sense. MCU minimum system board in the MCU develop market and college students electronic design is very popular. The curriculum design, including STC89S52MCU minimum system ( including a reset and clock circuit and

6、 power supply system ),4 x4 matrix keyboard, the independent 6 LED digital tube display circuit and a DS18B20 temperature sensor. Using circuit design software schematic design, using Keil software and Protues software simulation, we consolidate the MCU application, analog circuit, digital circuit c

7、ourse and learn all kinds of engineering software use. Key Words:MCU minimum system matrix keyboard Keil Protues1设计任务及要求1)键盘一个4X4的矩阵键盘,其中,10个按键是09数字键;另外6个是功能键,用于功能选择和控制,如“数据输入”、“数据显示”、“串行通信”功能选择键,以及“回车”、“清除”、控制键。(2)显示电路由6个7段LED数码管组成的显示电路。(3)串口串行通信利用51的串口实现串行通信接口电路。完成ISP下载电路的设计、焊接 完成系统软件的设计,包括程序结构设计、

8、流程图绘制、程序设计,实现如下功能(1)功能选择通过功能选择键,使得单片机处于不同的工作状态并通过LED显示相应的内容;可选择的功能包括:数据输入;数据显示;串口通信(2)数据输入通过功能选择键选择“数据输入”后,可分次输入10个4位十进制数据,并将输入的数据保存在内部RAM中。数据输入要求:第一步输入序号09,表明输入的是第几个4位十进制数据;第二步按下回车键,完成序号输入;第三步输入最多4位的十进制数据;第四步按下回车键,完成数据输入;重复第一步,开始新数据的输入;输入数据的显示格式是:最左边是序号,然后是空格,之后是从右到左的最多4位十进制数;若在输入过程中(第一步或第三步)出现错误,按

9、“清除”键,重新从第一步开始输入数据。或者,自己设计10个十进制数的输入及显示方式。(3)数据显示通过功能选择键选择“数据显示”后,可显示之前输入的10个4位十进制数据中的任一个,要求:第一步输入序号09,表明显示的是第几个4位十进制数据;第二步显示相应的数据;重复第一步、第二步,显示其他的数据;数据的显示格式是:最左边是序号,然后是空格,之后是要显示的数据,从右到左最多4位十进制数。或者,自己设计数据的显示方式。(4)数据通信将两个单片机最小系统通过串口连接起来,其中一个作为主系统,另一个作为辅系统。当通过功能选择键选择“串行通信”后,当在主系统上按下数字键后主系统的LED按从左向右移东的方

10、式显示按键输入的数字,同时辅系统的LED上显示与主系统同样的内容。(5)利用仿真软件完成系统仿真工作(6)在单片机最小系统硬件上实现任务3中规定的功能2 基本原理2.1基本原理及原理框图单片机最小系统,是指用最小的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。单片机接口电路主要用来连接计算机和其他外部设备。本次设计主要完成的扩展电路包括键盘电路、数码管显示、串行通信三大模块。其原理框图如下图2.1所示: 图2.1总原理框图2.2 STC89C52结构功能介绍STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压、高性能COM

11、OS8位微处理器,又称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。STC89C52具有8K在系统可编程存储器。具有以下配置:8KFlash,512字节RAM,32I/O口线,定时器,内置4KBROM,三个16位定时器、计数器,一个6向量2级中断结构,双全工串行口。STC89C52引脚图如图2.2所示。 图2.2 STC89C52引脚图TC89C52芯片共40引脚,各引脚功能如下:VCC(40引脚):电源电压VSS(20引脚):接地RST复位端P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输

12、出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流P2端口

13、(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。P3端口(P3.0P3.7,10

14、17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。P3口除作为一般I/O口外,还有其他一些复用功能。3 硬件电路原理与设计3.1复位电路单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚RST

15、上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。复位电路由按键复位和上电复位两部分组成。上电复位 STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。按键复位按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高

16、电平来使单片机复位。电路图如图3.1所示 图3.1复位电路图3.2振荡电路单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一

17、个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。STC89C51使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。其电路原理图如图3.2所示。 图3.2 振荡电路3.3单片机最小系统最小系统包括晶振时钟电路和复位电路。原理图如图3.3所示: 图3.3单片机最小系统在单片机引脚 XTAL1 和 XTAL2

18、外接晶体整荡器或陶瓷振荡器,就构成了内部震荡方式,由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲,晶振通常选择 6MHz、12MHz 或 24MHz,这里取晶振为12MHz。与晶振连接的电容起稳定振荡频率、快速起振的作用。电容值一般为 530pf。 复位操作完成单片机片内电路初始化,复位结束后,单片机从一种确定状态开始运行。当单片机复位引脚 RST 出现 5ms 以上高电平时,单片机就完成复位操作。复位操作通常有两种形式:上电复位和开关复位。常用上电开关复位电路如上图所示,上电后,由于电容 C3 充电,时 RST 持续一段时间高电平。当单片机已在运行

19、中时,按下复位键也能使 RST 持续一段时间高电平,从而实现开关复位操作。3.4数码管显示电路3.4.1 数码管选择本系统输出结果选用六个共阳数码管显示。数码管有共阴共阳之分,如下图3.4,图3.5,图3.6分别为数码管符号引脚,共阳数码管,共阴数码管: 图3.4数码管符号引脚 图3.5共阳数码管 图3.6共阴数码管3.4.2 LED芯片7SEG-MPX6-CA如下图3.7为7SEG-MPX6-CA的引脚图: 图3.7 7SEG-MPX6-CA的引脚图该芯片实现6个数码管合在一起,123456是位码输入,abcdefg dp就是数码管的段码输入 。如果使用共阴数码管通过单片机控制时,单片机上电

20、和复位后所有的I/O口都是高电位,这样只要单片机一上电,电流经过数码管的位流向共阴至地,数码管就会亮,耗电大,不节能,所以又每次编程序时都得把位控制端赋予低电平,太过麻烦。因而选用共阳数码管即7SEG-MPX6-CA。3.4.3 数码管电路设计由于使用的是六位数码管合一芯片7SEG-MPX6-CA,电平有IO口提供,其电路设计图如下图3.8 数码管电路模块所示: 图3.8数码管电路模块3.5 矩阵键盘电路矩阵键盘检测的原理和方法:矩阵键盘每个按键两端都与单片机I/O口相连,因此在检测时需人为通过单片机I/O口送出低电平。检测时,先送一列为低电平,其余几列全为高电平(此时确定了列数),然后立即轮

21、流检测一次各行是否有低电平,若检测到某一行为低电平(这是有确定了行数),则便可以确认当前被按下的键是哪一列哪一行,用同样方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样既可检测完所有的按键,当有键按下时便可判断出按下的是哪一个键。其工作原理是从0列开始顺序行扫描即该行输出为0。每扫描一行读入列线数据从0开始列检查找该行输出为0的列若无则顺序扫描下一行并检查其各列若找到某列线为0则该列与检查行交叉的按键为被按下的键。从0行0列开始顺序将按键编号就可以按扫描的值得到按键的值。本设计使用的是4个独立按键其功能设置为时间的显示、时间的设置、温度的显示和数字频率的显示。本设计中主要使用了

22、独立键盘,故电路图中简要的画出了4*4的矩阵键盘,其电路原理图如图3.9所示 图3.9矩阵键盘显示电路设计3.6串口通信电路 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距

23、离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。单片机使用的是TTL电平,而计算机使用的是RS-232电平,要实现把电脑中的程序能下载到单片机上,就需要实现RS-232电平与TTL电平之间的转换。MAX232是电平转换芯片。1970年,美国电气学会规定“RS232”串口通信协议。规定逻辑“1”,-5 -15V;逻辑“0”,+5 +15V 。噪声容限为2V。要实现利用串口与单片机进行通信,就要进行电平转换,把标准转化成单片机可以识别的。MA

24、X232电路原理图如图3.10所示。图3.10 串口电路图在本设计中,两个主机和副机之间进行通信时,由于距离近,因此直接将两个单片机串行口线RxD和TxD相互交叉连接、GND相连即可,如图3.11所示。 图3.11单片机近距离通信示意图3.7 总设计电路 图3.12总电路设计图4 软件设计4.1软件介绍4.1.1程序编写软件Keil Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完

25、整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。本次设计编程主要使用Keil软件进行编程。4.1.2仿真软件ProteusProtues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品

26、的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,在编译方面,它也支持IAR、Keil和MPLAB等多种编译。本次设计采用的是Proteus进行仿真。4.2数码管显示设计该程序分为键盘扫描和数码管显示两部分,其程序流程图如4.1所示: 图4.1数据输入流程图4.3串行通信接收程序由于要实现两个单片机之间的通信,在接收单片机上要写与发送程序相对应的接收程序,两者应设定相同的波特率。对应的接收程序流程图如图4.2所示。T1初始化,启动T1工作设定串行通信方式并设定允许接收RI=1接收数据清RI全部数据完全接收完结束 图4.2接收程序流程图5 仿真结果与分

27、析5.1 数据输入根据实验任务可知,需要数据输入10个四位十进制数。图5.1(a,b,c)为实验中输入序号为6的6233四位十进制数的过程: 图5.1(a) 序号输入 图5.1(b) 序号输入后按确定键 图5.1(c) 完成四位数据的输入5.2 数据显示图5.2 (a,b)为序号为6的数据显示过程: 图5.2(a)选择数据显示功能键 图5.2(b)按下6键后的显示5.3 实现串口通信 串口通信电路的仿真结果如图5.3所示: 图5.3串口通信仿真结果图仿真结果分析:从数据输入与数据显示的步骤可知,实验的设计满足任务要求的数据输入和数据显示的功能。其余的清除功能,确定功能,功能键选择功能在Prot

28、ues软件上都能正确体现。故得出相关软件与程序的设计是正确的。6实物展示 图6.1全元件图 图6.2 数据显示图 图6.3主机通信图7心得体会通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我

29、懂得了理论与实际相结合只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦

30、奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。不管怎样,这些都是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。很少有人会一步登天,永不言弃才是最重要的。而且,这对于我们的将来也有很大的帮助。参考文献1 陈国先. 语音芯片与PIC单片机的应用接口J. 福建信息技术教育,2005.2 何立民. 单片机高级教程.北京:北京航空航天大学出版社,2001.3 李广第单片机基础北京:北京航空航天大学出版社,1999.4 李群芳. 单片微型计算机与接口技术(第3版).电子工业出版社,20085 刘教瑜. 单片

31、机原理及应用.武汉理工大学出版社,20116 张东亮. 单片机原理与应用.人民邮电出版社,200940附录:元件清单序号名称数量1电路板2块2单片机最小系统1只3晶振12MHz1只430PF瓷片电容2只5100uF/25V电解电容1只61k电阻9只710k/9脚排阻1只 8排针、按钮、LED、导线等若干 9电烙铁1个100.1uF瓷片电容 4只11RS-232C串口电缆1根12四角开关16个136位共阳极数码管2个附录:总程序设计主系统程序:#includereg52.hvoid delay(unsigned char s);void keyscan(void);void keydown(vo

32、id);void input(void);void screen(int smode);int test = 0;unsigned char int_on = 0; /用于刚进入通信模式时的初始化 只有在通信模式下需要打开中断1为中断已开化unsigned char temp; /读按键用的测试变量 unsigned char key;/按键序号 unsigned char MODE = 3; /模式选择,0为输入模式,1为显示模式,2为串口通信模式 unsigned char FUNC = 0;/功能选择,1为回车,2为清除 unsigned char reg104; /输入内容存放的数组

33、unsigned char dis_buf6;/显示缓存 unsigned char inputmode;/通过回车键来判断输入模式,0为输入序号,1为输入4位十进制数据 unsigned char group,datpos;/分别存储数据的组数和十进制数据位数 unsigned char LedNum=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84;void delay(unsigned char s) /延时函数 int i,j;for(j=s;j=0;j-)for(i=125;

34、i0;i-);void screen(int smode) /对数码管操作的函数 1为清空显示0号位光标 2为移位 int p; if(smode=1)for(p=0;p0;p-)/显示缓存移位 dis_bufp = dis_bufp-1;void keyscan(void)/按键扫描函数 P2=0x0F; /低四位输入列为高电平行为低电平 temp=P2; /读P2口 temp=temp&0x0F;temp=(temp|0xF0);switch(temp)case 1: key = 0; break; / p2.0 被拉低 case 2: key = 1; break; / p2.1 被拉低

35、 case 4: key = 2; break; / p2.2 被拉低 case 8: key = 3; break; / p2.3 被拉低 default: key = 16;temp = 0;P2=0xF0; /高四位输入行为高电平列为低电平 /delay(1);temp=P2; /读P2口 temp=temp&0xF0; /屏蔽低四位temp=(temp4)|0xF0);switch(temp)case 1:break; / p2.4 被拉低 case 2:key = key+4; break; / p2.5被拉低 case 4:key = key+8; break; /p2.6 被拉低

36、 case 8:key = key+12;break; / p2.7 被拉低 default:key = 16;switch(key)case 3: /模式选择为输入 MODE = 0;inputmode=0; /从数据序号开始输入 key=16; /键盘序号置空 FUNC=0; /功能键置空 screen(1);break; case 7: /模式选择为显示 MODE = 1;key=16; /键盘序号置空 screen(1);break;case 11: MODE = 2;break;case 14: FUNC = 1;break;/按键功能选择 case 15: FUNC = 2;bre

37、ak;case 12: MODE = 3;break; /模式3为空余模式,可自定义或欢迎界面 default: switch(key) case 0:case 1:case 2: key+=7; break;case 8:case 9:case 10:key-=7; break;case 13:key=0;datpos+; /存数位数加一 if(datpos=4) datpos = 0; P2 = 0xf0;while(P2!=0xf0); /保证按键弹起后再跳出程序 void keydown(void) P2=0xF0;/delay(1);if(P2!=0xF0) /判断按键是否按下 如果

38、按钮按下 会拉低P2其中的一个端口 keyscan(); /调用按键扫描程序 void input(void) if(FUNC=1) /回车时 输入模式切换 if(inputmode=1)screen(1);/清屏并在0号位输入光标else dis_buf2 = 0x08;/在2号位输入光标 inputmode=1-inputmode;FUNC = 0; /切换完成 功能变量置空 if(FUNC=2) inputmode = 0; /重新从数据组数开始输入 reggroup0 = 0; /清空已输入的错误数据 reggroup1 = 0;reggroup2 = 0;reggroup3 = 0;

39、screen(1);FUNC = 0; if(key10) if(inputmode=0) group = key;/序号确认 dis_buf0 = LedNumgroup;datpos = -1;/数据键入位置归零 else if(inputmode=1) /对应组数据输入 dis_bufdatpos+2 = LedNumkey; reggroupdatpos = key; delay(1); void main()unsigned char LedSele=0x01,0x02,0x04,0x08,0x10,0x20;unsigned char roll;/if(P20&P27=1) MOD

40、E = 2;/电路中辅系统的P2.0和P2.7置一, 区别于主系统。辅系统保持在通信模式 SCON =0x50; /REN=1允许串行接受状态,串口工作模式2 TMOD|=0x20; /定时器工作方式2 PCON|=0x80; /波特率提高一倍 TH1=0xF3; /波特率4800、数据位8、停止位1、效验位无 (12M)TL1=0xF3;while(1) keydown(); /调用按键判断检测程序if(MODE=0) /输入模式 if(int_on=1) /若中断未关TR1=0; /关启定时器1 ES=0; /关串口中断 EA=0; /关总中断 int_on = 0; /中断已关标志 input(); /开始数据输入程序 else if(MODE=1) /显示模式 if(int_on=1) /若中断未关 TR1=0; /关启定时器1 ES=0; /关串口中断 EA=0; /关总中断 int_on = 0; /中断已关标志 if(key10) /若输入的是数字 group = key; /选定输出组数 dis_buf0 = LedNumgroup;/先显示数据组数 dis_buf1 = 0x00; /空格 dis_buf2 =

温馨提示

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

评论

0/150

提交评论