Abstract
摘要:根据自动化学科的教学大纲,单片机应用是一门必修课,然而8051系列单片机又是单片机的始祖,在单片机入门中具有不可撼动的地位,本课题就是通过基于51系列单片制作由矩阵键盘、二极管阵和数码管组成的简易计算器,在制作过程中初步了解单片机软硬件的开发过程以及单片机的运行机理,达到寓教于乐的目的。
关键词:51单片机,矩阵键盘,数码管,ASCII码转换
引言:
通过对自动化学科相关课程的学习了解,单片机作为这一领域的一个重要分支,有着不可替代的学习价值,日常学校里学习51单片机是按课程章节上的,一般一个学期内能完成相关学时,分理论环节和实验环节,通过一学期的学习,本人发现内容太过分散,理论课程不紧凑系统,学时完成后同学们并不能很好地掌握单片机的运行机理,更好的应用也就无从谈起,实验课程多为一个模块一个某块进行操作,且只是在开发板上进行简单的烧写操作,不能对单片机系统的运行形成整体框架,对日后的深入学习和开发造成不良的影响。故本课题旨在通过基于51单片机的简易计算器的设计制作,使同学能够对单片机的开发应用有整体全面且直观的了解,扎实基础。
目录
正文
51单片机内部构造及运行机理
51单片机最小外围电路及电源电路
51单片机的最小外围电路主要包括晶振电路、复位电路和电源电路,本课题中的电源电路通过变压器将220V市电转换为9V直流电,再通过7805电源芯片得到5V直流电源作为单片机工作电源。
计算器的硬件电路
数码管电路
本课题中使用的是常见的4位8段式数码管。
如图所示,为单个八段式数码管的原理图,其是由八个发光二极管以及对应的八个端口和一个控制端口CA组成,八段式数码管分为共阴管(c)和共阳管(b),由图可知以本课题中使用的共阳管为例,当控制端a,b,c,d,e,f,g,dp(段码)置低电平时,则点亮相应的二极管,置高电平则不点亮,从而构成相应的数字,作为本课题计算器的数字显示器。本课题中数码管控制端口CA(位码)置低电平为数码管在工作状态,置高电平为锁死状态。
共阳极数码管显示表(a端口连接低位)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0xc0 | 0xf9 | 0xa4 | 0xb0 | 0x99 | 0x92 | 0x82 | 0xf8 | 0x80 | 0x90 |
如图所示为74F573PC锁存器的管脚图,/OE为输出使能端,低电平有效;D0~D7为信号输入端,接单片机;Q0~Q7为信号输出端;LE锁存使能端,高电平开锁,低电平锁存。
74F573PC的工作逻辑表如下:
/OE | LE | D | Q |
0 | 1 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 0 | X | 锁存状态 |
1 | X | X | 停止工作 |
如图所示为本课题计算器的数码管部分的电路连接,由两片74F573PC锁存器和一个四位8段式数码管组成,这里使用两片锁存器是为了节约有限的单片机I/O口资源,分时对数码管的段码和位码进行控制。单片机控制端口为P0,P3.0,P3.1。
计算器中数码管运行控制机理
数码管显示有较为常见的两种显示方法,一种是循环显示,一种是中断显示。本课题中这两种方法均有采用。循环显示是通过软件循环显示函数不断刷新数码管以达到显示的目的。中断显示是通过单片机内部定时器中断每隔固定时间执行一次中断函数,中断函数包含了显示函数,从而实现对数码管的不断刷新来达到显示目的。因为每位数码管要显示,故P3.0和P3.1端口输出控制信号控制两片锁存器以达到分时控制段位码输出的目的,其中P3.0连接控制数码管段码的锁存器,P3.1连接控制数码管位码的锁存器,当P3.0输出低电平信号而P3.1输出高电平信号时,则P0端口输出地信号控制哪一位数码管的点亮,当P3.0输出高电平信号而P3.1输出低电平信号时,则P0端口输出地信号控制数码管显示的数据。
二极管阵电路
二极管阵电路是由9个二极管组成,分成三行三列,目的是为了显示+、-、*、/、=等相关符号,其中中间的二极管同时为电源指示灯,一端接地,一端接5V电源。其余八个二极管一端接5V电源,一端接单片机的P2端口,本课题中计算器的二极管由电路图可知为P2口输出低电平信号点亮。
二极管阵运行控制机理
由电路图可知LED1连接P2的低位,且控制的原理和数码管大致相当,只要对P2端口进行编码输出就能得到相应的图案,下表中列出了本课题计算器中所要显示的图案地址:
+ | - | * | / | = | H | I | ❤ |
0xa5 | 0xe7 | 0x5a | 0xdb | 0xe0 | 0x42 | 0xbd | 0xa2 |
如图所示,为矩阵键盘电路,设计矩阵键盘而不用按键主要是为了节约单片机I/O口资源,由电路分析可知,行输入(P1.0~P1.3)为4个,列输入(P1.4~P1.7)为4个,组成4*4的矩阵键盘共16个按键。下表是矩阵键盘各个按键对应的功能:
X1:1 | X2:2 | X3:3 | X4:+ |
X5:4 | X6:5 | X7:6 | X8:— |
X9:7 | X10:8 | X11:9 | X12:* |
X13:0 | X14:制作信息 | X15:= | X16:/ |
当没有按键按下时,行输入均为低电平信号,列输入均为高电平信号。当有按键按下时,可由下表查明输入地址:
X1:0x7e | X2:0x7d | X3:0x7b | X4:0x77 |
X5:0xbe | X6:0xbd | X7:0xbb | X8:0xb7 |
X9:0xde | X10:0xdd | X11:0xdb | X12:0xd7 |
X13:0xee | X14:0xed | X15:0xeb | X16:0xe7 |
51单片机的软件运用及编译
计算器程序框图及程序设计难点
计算器软件部分的设计主要分为显示部分、字符转换部分、计算部分和输入采集部分。
计算器程序设计的难点主要有三块:第一,是如何用软件处理好外部数码管显示和内部对输入数值进行计算的问题;第二,是单片机采集到的矩阵键盘的输入是一个8位二进制地址,要对其进行转换成数进行计算后,再转换成字符输出到数码管上显示;第三,是判断输入的第几个数,在计算符号按键为按下前应均算作第一个数,先输入的为高位,后输入的为低位,最大不超过四位,在有计算符号按下后应保存之前输入的数字字符并转换为整数形式保存,并记录下所输计算符号,同时准备开始记录下一个数;在等号按下后应将前面输入的数进行计算得出答案后并转换成字符形式的数以便输出显示。
致谢
参考文献
附录
程序+仿真+实物照片