武汉理工大学《单片机应用实习》报告_第1页
武汉理工大学《单片机应用实习》报告_第2页
武汉理工大学《单片机应用实习》报告_第3页
武汉理工大学《单片机应用实习》报告_第4页
武汉理工大学《单片机应用实习》报告_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学单片机应用实习报告 目录摘 要abstract1设计任务及要求12 基本原理32.1基本原理及原理框图32.2 stc89c52结构功能介绍33 硬件电路原理与设计53.1复位电路53.1.1上电复位53.1.2按键复位53.2振荡电路63.3单片机最小系统单片机73.4数码管显示电路73.5 矩阵键盘电路93.6 串口通信电路103.7 总设计电路114 软件设计124.1 软件介绍124.1.1 设计软件protel124.1.2 程序编写软件keil124.1.3 仿真软件proteus134.2 数码管显示设计134.3串行通信接收程序145 仿真结果与分析155.1 矩阵

2、键盘功能仿真155.1.1 数据输入155.1.2 数据显示156 实物展示177 心得体会198.参考文献20附录:元件清单21附录:总程序设计22附录:实习日记32摘 要单片微型计算机简称单片机,又称为微型控制器,是微型计算机的一个重要分支。随着电子技术的发展,大规模及超大规模集成电路和制造工艺的进一步提高,单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,广泛应用于控制系统、数据采集系统、智能化仪器表等领域。本次课程设计包括单片机最小系统(包括复位和时钟电路)及供电系统、4*4矩阵键盘、独立6个8段led数码管显示电路。利用protel电路设计软件进行原理图设计,利用keil软件

3、编程以及proteus软件仿真,借此巩固单片机应用、模拟电路、数字电路课程及学会各种工程软件的使用。关键字:单片机、数码管显示、矩阵键盘扫描abstractsingle chip microcomputer short chip, also known as the micro controller, is a microcomputer is an important branch of. with the development of electronic technology, large-scale and ultra large scale integrated circuit an

4、d manufacturing process to further improve, chip for its high reliability, high cost, low voltage, low power consumption and a series of advantages, widely used in control system, data acquisition system, intelligent instrument and meter etc.the curriculum design, including the smallest single-chip

5、system ( including a reset and clock circuit and power supply system ), 4*4 matrix keyboard, the independent 6 8 led digital tube display circuit . using protel circuit design software schematic design, using keil software and proteus software simulation, to consolidate the scm application, analog c

6、ircuit, digital circuit course and learn all kinds of engineering software use.keyword: microcontroller, digital display, matrix keyboard scanning1设计任务及要求1)利用上述材料完成包含如下系统功能组件的单片机最小系统的设计、焊接、调试(1)键盘一个4x4的矩阵键盘,其中,10个按键是09数字键;另外6个是功能键,用于功能选择和控制,如“数据输入”、“数据显示”、“串行通信”功能选择键,以及“回车”、“清除”、控制键。(2)显示电路由6个7段led数

7、码管组成的显示电路。(3)串口串行通信利用51的串口实现串行通信接口电路。2)完成isp下载电路的设计、焊接3)完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计,实现如下功能(1)功能选择通过功能选择键,使得单片机处于不同的工作状态并通过led显示相应的内容;可选择的功能包括:数据输入;数据显示;串口通信(2)数据输入通过功能选择键选择“数据输入”后,可分次输入10个4位十进制数据,并将输入的数据保存在内部ram中。数据输入要求:第一步输入序号09,表明输入的是第几个4位十进制数据;第二步按下回车键,完成序号输入;第三步输入最多4位的十进制数据;第四步按下回车键,完成数据输入;重复第

8、一步,开始新数据的输入;输入数据的显示格式是:最左边是序号,然后是空格,之后是从右到左的最多4位十进制数;若在输入过程中(第一步或第三步)出现错误,按“清除”键,重新从第一步开始输入数据。或者,自己设计10个十进制数的输入及显示方式。(3)数据显示通过功能选择键选择“数据显示”后,可显示之前输入的10个4位十进制数据中的任一个,要求:第一步输入序号09,表明显示的是第几个4位十进制数据;第二步显示相应的数据;重复第一步、第二步,显示其他的数据;数据的显示格式是:最左边是序号,然后是空格,之后是要显示的数据,从右到左最多4位十进制数。或者,自己设计数据的显示方式。(4)数据通信将两个单片机最小系

9、统通过串口连接起来,其中一个作为主系统,另一个作为辅系统。当通过功能选择键选择“串行通信”后,当在主系统上按下数字键后主系统的led按从左向右移东的方式显示按键输入的数字,同时辅系统的led上显示与主系统同样的内容。4)利用仿真软件完成系统仿真工作5)在单片机最小系统硬件上实现任务3中规定的功能2 基本原理2.1基本原理及原理框图单片机最小系统,是指用最小的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。单片机接口电路主要用来连接计算机和其他外部设备。本次设计主要完成的扩展电路包括键盘电路、数码管显示、串行通信三大模块。其原理框图如下图2

10、.1所示:数码管显示显示显示stc89c52震荡电路路复位电路路数据通信矩阵键盘 图2.1总原理框图2.2 stc89c52结构功能介绍stc89c52片内集成256字节程序运行空间、8k字节flash存储空间,支持最大64k外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33m之间。片内资源有4组i/o控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在4v到5.5v宽电压范围内正常工作。不断发展的半导体工艺也让该单片机的功耗不断降低。同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。根

11、据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插dip-40的封装。stc89c52引脚图如图2.2: 图2.2 stc89c52引脚图stc89c52芯片共40引脚,各引脚功能如下:vcc(40引脚):电源电压vss(20引脚):接地rst复位端p0端口(p0.0p0.7,3932引脚):p0口是一个漏极开路的8位双向i/o口。作为输出端口,每个引脚能驱动8个ttl负载,对端口p0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,p0口也可以提供低8位地址和8位数据的复用总线。p0端口需要外加上拉电阻。p1端口(p1.0

12、p1.7,18引脚):p1口是一个带内部上拉电阻的8位双向i/o口。p2端口(p2.0p2.7,2128引脚):p2口是一个带内部上拉电阻的8位双向i/o端口。在访问外部程序存储器和16位地址的外部数据存储器(如执行“movx dptr”指令)时,p2送出高8位地址。p3端口(p3.0p3.7,1017引脚):p3是一个带内部上拉电阻的8位双向i/o端口。p3的输出缓冲器可驱动(吸收或输出电流方式)4个ttl输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。p3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。p3口除作为一般i/o口外,还

13、有其他一些复用功能。3 硬件电路原理与设计硬件电路主要由复位电路、振荡电路、数码管显示电路、矩阵键盘电路和串口电路等组成。3.1复位电路单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚rst上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由rc电路计算出时间常数。复位电路由按键复位和上电复位两部分组成。3.1.1上电复位s

14、tc89系列单片及为高电平复位,通常在复位引脚rst上连接一个电容到vcc,再连接一个电阻到gnd,由此形成一个rc充放电回路保证单片机在上电时rst脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10k和10uf。3.1.2按键复位按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、rst也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。电路图如图3.1。 图3.1 复位电路3.2振荡电路单片机系统里都有晶振在单片机系统里晶振作用非常大全称叫晶体振荡器他结合单片机内部电路产生单片机所需的时钟频率单片机晶振提供的时钟频

15、率越高那么单片机运行速度就越快单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。 在通常工作条件下普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率称为压控振荡器vco。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作以提供稳定精确的单频振荡。 单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振而通过电子调整频率的方法保持同步。 晶振通常与锁相环电路配合使用以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号可以用与同一个晶振相连的不同锁相环

16、来提供。 stc89c51使用11.0592mhz的晶体振荡器作为振荡源由于单片机内部带有振荡电路所以外部只要连接一个晶振和两个电容即可电容容量一般在15pf至50pf之间。其电路原理图如3.2所示。图3.2 振荡电路3.3单片机最小系统单片机最小系统包括晶振时钟电路和复位电路。原理图如图 3.3 所示:图3.3 单片机最小系统图3-3 单片机最小系统 在单片机引脚 xtal1 和 xtal2 外接晶体整荡器或陶瓷振荡器,就构成了内部震荡方式,由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲,晶振通常选择 6mhz、12mhz 或 24mhz,这里取晶

17、振为12mhz。与晶振连接的电容起稳定振荡频率、快速起振的作用。电容值一般为 530pf。 复位操作完成单片机片内电路初始化,复位结束后,单片机从一种确定状态开始运行。当单片机复位引脚 rst 出现 5ms 以上高电平时,单片机就完成复位操作。复位操作通常有两种形式:上电复位和开关复位。常用上电开关复位电路如上图所示,上电后,由于电容 c1 充电,时 rst 持续一段时间高电平。当单片机已在运行中时,按下复位键也能使 rst 持续一段时间高电平,从而实现开关复位操作。3.4数码管显示电路led数码管显示是利用半导体发光制成条形的发光二极管,封装在一起组成数字或其他符号形状。数码管根据公共端不同

18、,分为共阴极和共阳极两种形式。图3.4.1为共阴极数码管内部电路,图3.4.2为共阳极数码管内部电路。图3.4.1为共阴极数码管内部电路 图3.4.2为共阳极数码管内部电路。本次需要采用6个数码管,若单独采用数码管连线时比较麻烦,故设计采用 6 位一体的共阳极数码管,若使 6 个数码管显示正常时间,必须采用数码管的动态扫描方式,即每一时刻只有一个数码管点亮,采用软件延时和人眼的视觉暂留效果, 使人眼看到的数码管是同时点亮的。因此需要用6个端口控制数码管的位选,即决定哪个数码管点亮。而六个数码管的位选端则分别接到单片机的p1.0p1.5口,此位选端用来控制哪个数码管亮。每个数码管的8个数据口控制

19、数码管的段选,即决定数码管显示什么字符。考虑到数码管采用动态扫描方式,即循环扫描数码管的 6 位,并将显示字符送入段选位,我们采用p0口控制数码管的8个段选位,并采用 74hc04 实现数码管驱动及数据锁存功能。protues上数码管显示电路设计如下图3.4.3所示:图3.4.3 数码管显示电路设计3.5 矩阵键盘电路在键盘中按键数量较多时,为了减少i/o口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如p2口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多

20、加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。下面介绍一种按键被按下的识别方法行扫描法。首先将全部行线y0-y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列均为高电平,则键盘中无键按下。然后判断闭合键所在的位置,在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低

21、电平的行线交叉处的按键就是闭合的按键。该系统采用4*4矩阵键盘,而且用到了全部按键,每个按键都实现了独立的功能, protues上矩阵键盘显示电路设计如下图3.5所示:图3.5 矩阵键盘显示电路设计3.6 串口通信电路串口是计算机上一种非常通用设备通信的协议不要与通用串行总线universal serial bus或者usb混淆。大多数计算机包含两个基于rs232的串口。串口同时也是仪器仪表设备通用的通信协议很多gpib兼容的设备也带有rs-232口。同时串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单串口按位bit发送和接收字节。尽管比按字节byte的并行通信慢但是串口

22、可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如ieee488定义并行通行状态时规定设备线总常不得超过20米并且任意两个设备间的长度不得超过2米而对于串口而言长度可达1200米。 典型地串口用于ascii码字符的传输。通信使用3根线完成1地线2发送3接收。由于串口通信是异步的端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。 max232是电平转换芯片。1970年美国电气学会规定“rs232”串口通信协议。规定逻辑“1”-5 -15v逻辑“0”5 15v 。噪声容限为2

23、v。要实现利用串口与单片机进行通信就要进行电平转换把标准转化成单片机可以识别的。max220max249都是电平转换芯片在单片机最小系统中使用max232。protues上串口通信电路设计如下图3.6所示:图3.6 串口通信电路设计3.7 总设计电路图3.7 总设计电路4 软件设计4.1 软件介绍4.1.1 设计软件protelprotel是altium公司在80年代末推出的eda软件,在电子行业的cad软件中,它当之无愧地排在众多eda软件的前面,是电子设计者的首选软件,它较早就在国内开始使用,在国内的普及率也最高,有些高校的电子专业还专门开设了课程来学习它,几乎所有的电子公司都要用到它,许

24、多大公司在招聘电子设计人才时在其条件栏上常会写着要求会使用protel。protel 99采用全新的管理方式,即数据库的管理方式。protel 99 是在桌面环境下第一个以独特的设计管理和团队合作技术为核心的全方位的印制板设计系统。所有protel99设计文件都被存储在唯一的综合设计数据库中,并显示在唯一的综合设计编辑窗口。protel 99软件沿袭了protel以前版本方便易学的特点,内部界面与protel 98大体相同,新增加了一些功能模块。protel公司引进了德国incases公司的先进技术,在protel99中集成了信号完整性工具,精确的模型和板分析,帮助你在设计周期里利用信号完整性

25、分析可获得一次性成功和消除盲目性。本次设计采用的是altium dsigner进行电路原理图的绘制。4.1.2 程序编写软件keilkeil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部分组合在一起。本次设计编程主要使用keil软件进行编程。4.1.3 仿真软件proteusproteus软件是英国labcenter electr

26、onics公司出版的eda工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它eda工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。使用proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力.实践证明,在使用 proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。本次采用的是proteus进行仿真。4.2 数码管显

27、示设计该程序分为键盘扫描和数码管显示两部分,其程序流程图如4.1所示:开始键盘扫描 ny是否有键按是否是切换数字显示返回模式选择y 否 是 是 否图4.1数据输入流程图4.3串行通信接收程序由于要实现两个单片机之间的通信,在接收单片机上要写与发送程序相对应的接收程序,两者应设定相同的波特率。对应的接收程序流程图如图4.2所示。t1初始化,启动t1工作设定串行通信方式并设定允许接收ri=1接收数据清ri全部数据完全接收完结束图4.2 接收程序流程图5 仿真结果与分析5.1 矩阵键盘功能仿真5.1.1 数据输入根据实验任务可知,需要数据输入10个四位十进制数。图5.1(a,b,c,d,e,f)为实

28、验中输入序号为6的4321四位十进制数的过程: 图5.1(a) 序号输入 图5.1(b) 序号输入后按确定键图5.1(c) 输入第一个数据 图5.1(d) 输入第二个数据图5.1(e)输入第三个数据 图5.1(f) 输入第四个数据5.1.2 数据显示图5.2 (a,b)为序号为6的数据显示过程: 图5.2(a)选择数据显示功能键 图5.2(b)按下6键和确定键后的显示仿真结果分析:从数据输入与数据显示的步骤可知,实验的设计满足任务要求的数据输入和数据显示的功能。其余的清除功能,确定功能,功能键选择功能在protues软件上都能正确体现。故得出相关软件与程序的设计是正确的。6 实物展示 单片机上

29、电后,数码管的初始显示状态如图6.1:图6.1 实物数码管初始状态显示 键盘按下数据输入功能键,并输入序号与键入数据后数码管的显示状态如图6.2: 图6.2 实物数码管数据键入状态显示键盘按下数据显示功能键后,序号为6的数据显示如下图6.3:图6.3实物数码管数据显示功能展示整个实物完整展示如下图6.4:图6.4 完整实物展示7 心得体会一转眼间,为期两周的单片机实习已落下帷幕,在本次实习学到了很多,也有了很多的感触。本次实习是对所学的单片机知识的一次综合运用,本次设计要求完成键盘扫描显示,数据输入与数据显示,串口通信等内容。首先,要求能够熟练的运用protues进行单片机的仿真,由于以前没用

30、过这个软件,仿真一开始就碰了很多钉子,这对于没怎么用过这个软件的我来说是一大挑战。不过,通过一两天的摸索,总算是把它的一些基本操作弄清楚了,最终也成功绘制出具有基本扩展电路的单片机系统。接下来是在keil上进行程序的编写,由于本次所要求实现的功能比较多,涉及到到的内容也多,所以对于程序的编写有很大的挑战,经过两天的资料查询和不段的调试,程序基本编写完成。但是由于对单片机知识没有很好的掌握,所以程序的编写变成了整个实习的难处。所以串口通信部分的程序没能顺利编写出来,这成了实习唯一的遗憾。接下来是在proteus中仿真,这个步骤比想象中的顺利,下进去直接就可以运行了。通过仿真的结果和自己的操作,发

31、现对于数据的输入和数据的显示模块设计成功。在本次实习中学到了很多,首先熟悉了protues软件的使用,其次对于程序的编写让我对单片机的认识又加深了一步,不切对与c语言又有了更深一部的学习。通过本次实习让我对以前所学知识有了一个更深刻的认识,学会了将所学的知识运用到实际中去,同时也让我意识到了理论与实际的差距,在实习中遇到了各种各样的问题,往往看是简单的一件事到实际去做的时候才发现有好多的东西没考虑过。由于实验中没能实现串行通信的功能,让我认识到自己知识的薄弱,让我认识到自己还有很多不足,在以后的学习中,我定会戒躁戒躁,努力学习,弥补不足,让自己的编程能力有所提高。8.参考文献1 尹勇 撒继铭等

32、,单片计算机原理及应用(第1版), 科学出版社, 2013年2 谢自美.电子线路设计实验测试(第三版).武汉:华中科技大学出版社3 李群芳. 单片微型计算机与接口技术(第3版).电子工业出版社,20084 刘教瑜. 单片机原理及应用.武汉理工大学出版社,20115 张东亮. 单片机原理与应用.人民邮电出版社,200939附录:元件清单序号名称数量1铜板 1块2单片机stc89c521只3晶振12mhz1只430pf瓷片电容2只510k/0.25w电阻1只610uf/16v电解电容1只72k/0.25w电阻1只810k/9脚排阻1只95v/500ma直流电源1个10排针、按钮、led、导线等若干

33、11电烙铁1个12max232 1片130.1uf瓷片电容 4只14db9插座 1只15rs-232c串口电缆(9针)1根16四角开关16个17共阳极数码管6个附录:总程序设计#includereg52.hvoid delay(unsigned char s);void keyscan(void);void keydown(void);void input(void);void screen(int smode);int test = 0;unsigned char int_on = 0; /用于刚进入通信模式时的初始化 只有在通信模式下需要打开中断1为中断已开化unsigned char t

34、emp; /读按键用的测试变量 unsigned char key;/按键序号 unsigned char mode = 3; /模式选择,0为输入模式,1为显示模式,2为串口通信模式 unsigned char func = 0;/功能选择,1为回车,2为清除 unsigned char reg104; /输入内容存放的数组 unsigned char dis_buf6;/显示缓存 unsigned char inputmode;/通过回车键来判断输入模式,0为输入序号,1为输入4位十进制数据 unsigned char group,datpos;/分别存储数据的组数和十进制数据位数 uns

35、ignedcharlednum=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;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(voi

36、d)/按键扫描函数 /int p;/for循环变量 用于置空显示缓存 p2=0xf0; /低四位输入行为低电平,高四位为列高电平 temp=p2; /读p2口 temp=temp&0xf0;temp=(temp4|0xf0);switch(temp)case 1: key = 0; break; / p1.4 被拉低 case 2: key = 1; break; / p1.5 被拉低 case 4: key = 2; break; / p1.6 被拉低 case 8: key = 3; break; / p1.7 被拉低 default: key = 16;temp = 0;p2=0x0f;

37、 /高四位输入行为高电平列为低电平 /delay(1);temp=p2; /读p1口 temp=temp&0x0f; /屏蔽低四位temp=(temp|0xf0);switch(temp)case 1:break; / p1.0 被拉低 case 2:key = key+4; break; / p1.1被拉低 case 4:key = key+8; break; /p1.2 被拉低 case 8:key = key+12;break; / p1.3 被拉低 default:key = 16;switch(key)case 10: /模式选择为输入 mode = 0;inputmode=0; /

38、从数据序号开始输入 key=16; /键盘序号置空 func=0; /功能键置空 screen(1);break; case 11: /模式选择为显示 mode = 1;key=16; /键盘序号置空 screen(1);break;case 12: mode = 2;break;case 13: func = 1;break;/按键功能选择 case 14: func = 2;break;case 15: mode = 3;break; /模式3为空余模式,可自定义或欢迎界面 default: datpos+; /存数位数加一 if(datpos=4) datpos = 0; p2 = 0x

39、0f;while(p2!=0x0f); /保证按键弹起后再跳出程序 void keydown(void) p2=0x0f;/delay(1);if(p2!=0x0f) /判断按键是否按下 如果按钮按下 会拉低p1其中的一个端口 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) i

40、nputmode = 0; /重新从数据组数开始输入 reggroup0 = 0; /清空已输入的错误数据 reggroup1 = 0;reggroup2 = 0;reggroup3 = 0;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

41、 main()unsigned char ledsele=0x01,0x02,0x04,0x08,0x10,0x20;unsigned char roll;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

温馨提示

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

评论

0/150

提交评论