当前位置:文档之家› 单片机课程设计 简易计算器的设计

单片机课程设计 简易计算器的设计

目录摘要 (1)绪论 (1)1.设计要求及功能分析 (1)1.1 设计要求 (1)1.2 基本功能 (2)2.设计方案 (2)2.1 硬件部分设计方案 (2)2.1.1 单片机部分 (2)2.1.2 按键部分 (2)2.1.3 显示部分 (2)2.2 软件部分设计方案 (2)3.系统的硬件总体设计 (4)3.1 系统的总体硬件设计 (4)3.2 键盘连接电路 (4)3.3 显示屏连接电路 (5)3.4 单片机芯片AT89C51 (6)3.5 外接电路 (7)4.系统的软件总体设计 (8)4.1 键盘识别程序设计 (8)4.2 显示程序 (11)4.3 运算程序 (11)5.元器件清单及程序清单 (12)5.1 元器件清单 (12)5.2 程序清单 (12)6.软件仿真 (18)6.1 仿真验证 (18)6.2 性能分析 (20)6.3 出现故障及其原因 (20)6.4 解决方法 (20)结论 (20)参考文献 (21)致谢 (21)附录PCB图 (22)简易计算器的设计学生:李飞马鹏超舒宏超指导老师:王孝俭摘要:单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可,用它来做一些控制电器一类不是很复杂的工作足矣了。

我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。

它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。

单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。

事实上单片机是世界上数量最多的计算机。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。

而个人电脑中也会有为数不少的单片机在工作。

汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。

关键词:单片机、计算器、控制电路、仿真。

绪论设计要求掌握数码管移位动态扫描显示的编程方法,掌握矩阵扫描的编程方法,掌握数据在内部运算的编程方法。

设计任务实现最大8位正整数加、减、乘、除,具备清零、等于功能,16个按键功能依次为:数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除。

1.设计要求及功能分析1.1设计要求:本次单片微型计算机与接口技术课程设计做的是利用C51单片机为主体的计算器,实现了简单的加、减、乘、除功能。

采取的是键盘输入和液晶显示屏的输出结果显示。

主要硬件构成部分由四个,一个AT89C51单片机芯片,一个液晶显示屏,一个4*4键盘和一个排阻(10K)做P0口的上拉电阻,可以实现16位的数值操作计算。

1.2基本功能:首先,计算器可现实8位数字,开机运行时,只有数码管最低位显示为“0”,其他位全部不显示;其次,可以对计算结果在16位以内的;两个无符号数进行加、减、乘、除运算,并显示计算结果,如果输入操作数和输出结果超过16位,则会显示“error”,以提示使用者输入错误,应清零后重新输入。

最后,运算时,如果按错了可以使用清零键直接清零,重新输入数据,运算过程中,如果运算表达式是加、减、乘、除混合运算,可以进行连续运算,不需要按等号键,运算规则则是从左到右,不区分运算等级。

即认为加减乘除是同等级的运算。

2.设计方案2.1硬件部分设计方案2.1.1 单片机部分单片机以AT89C51来作为核心元器件。

2.1.2 按键部分方案一:采用4*4行列式键盘,分别设定数字键和功能键,采用查询方式,每次有键按下时,先判断是实数字键还是功能键,但是这种方式采用了大量的I/O口线。

方案二:采用独立式按键,独立式按键借口电路配置灵活,软件结构简单。

虽然采用独立式按键时每个按键必须占用一根I/O口线,但是在本实验中根据实际的需要采用通过四个按键即只占用四个I/O口线,而如果采用4*4行列式键盘时占用8个I/O 口线,所以我们采用一方案。

2.1.3 显示部分在单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)、LCD液晶显示亲以及CRT接口。

方案一:使用8位LED数码管来显示,LED显示器是由发光二极管显示字段组成的显示器件,在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极和共阳极两种,它具有成本低廉、配置灵活和单片机接口方便等特点。

方案二:使用液晶显示器来显示。

液晶是介于固态和液态间的有机化合物,将其加热会变成透明液态,冷却后变成结晶的浑浊固态。

在电机的作用下,产生冷热变化,从而影响它的透光性,来达到显示的目的。

LCD还具有以下优点:(1)低压、微功耗;(2)显示信息量大;(3)长寿命;(4)无辐射、无污染。

2.2软件部分设计方案软件部分的设计思路时将整个程序划分为键盘扫描部分、显示部分、运算程序部分、清屏显示部分。

对于其中的键盘扫描部分在编写时又分为动态扫描和静态扫描;运算程序部分包括加、减、乘、除四个子程序。

软件流程大致如下:开始,然后是系统的初始化,进行键盘扫描,对扫描的键值进行判断(分为数字键和功能键),如果是数字键,执行数字处理子程序,即显示数字并将数值存储;如果是命令键,即先判断是否为清屏,如为清屏键,则执行清屏子程序,若为加减乘除运算键则显示相应的符号并存储结果,若都不是则为=键,即要先判断上个符号位,然后调用对应的运算子程序运算,就可以得到需要的结果。

图1 系统原理框图3. 系统的硬件总体设计3.1 系统的总体硬件设计硬件系统是指构成微机系统的实际装置,通常是由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。

单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种拓展接口电路、外部设备等才能构成一个单片机应用系统。

单片机芯片选择AT89C51,显示区域使用显示屏,键盘是4*4普通矩阵键盘,P0口接上拉电阻,芯片的P0口和P3口的前5脚接入数字显示屏,键盘横行A~D接入单片机芯片AT89C51的后四个接口,键盘的竖行1~4则分别接入单片机芯片AT89C51的P2口的前四个接口。

另外12M Hz晶振接入单片机芯片AT89C51的XTAL1接口。

系统总接线图如下:图2 系统硬件总接线图3.2 键盘连接电路本设计之中使用的是4*4的普通键盘,我们可以使用其行列号来识别被按下的按键以此来获知被按键的信息,因此将行输出信号和列输出信号分别接入单片机芯片C51的P2口,通过循环扫描,读取行列的数据来判断是否有按键被按下,如果有则调用按键识别程序来识别具体按键,并执行相应的操作,按键识别是根据按键时得到的列代码与行代码的结合,在汇编语言中进行查表来判断是哪个键。

键盘如图:图3 数字输入键盘3.3 显示屏连接电路如上所述,当数字输入键盘有键按下的时候,经过程序识别,则会有相应结果被送入显示屏得到显示。

如果是数字键则直接放入液晶显示缓冲区,如果再次有数字键按下,则应将缓冲区的数字向高位移动一位,以构成两位数,之前输入的置之高位,并记录按键次数,每输入一个键值都调用显示程序出来;如果是运算符,则执行相应的运算,送入单片机芯片C51内进行计算后将结果调用显示程序显示结果。

该设计中选取的是LM0202型号液晶显示屏,如下图:图4 液晶显示屏3.4 单片机芯片AT89C51应本次课程设计的要求,此设计之中选取的是C51芯片,取代了之前设计之中的pic 芯片。

芯片包含有一个8位CPU;一个片内振荡器及时钟电路;4KB ROM程序存储器;128B RAM数据存储器;可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O线(4个8位并行I/O端口);两个16位的定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套终端结构。

芯片如下图:图5 单片机芯片AT89C513.5 外接电路为了进一步强化该设计的功能,所以在单片机芯片C51外围添加了时钟脉冲芯片和复位电路,这样就可以对其电路频率进行调节。

这个电路当中,是选取的是12M的晶振,对其两头电容接地,并一端接入芯片XALT1端口输入,调节芯片内部频率。

另外一端,高电平通过按钮接入单片机芯片RST端口,并接一个电容和一个电阻,降低电流冲击对芯片的影响。

时钟脉冲电路和复位电路如下图:图6 时钟脉冲电路和复位电路由此,就是由以上的键盘连接电路、显示屏连接电路、外部电路和芯片共同构成了整个设计的硬件结构部分。

4.系统的软件总体设计编程语言当中,汇编语言比较接近底层,编程效率高;C语言则语言灵活,在编写算法中会比较方便。

但是我们在学习中是学习的汇编语言,我们还是对于单片机的编程更加熟悉,尽管汇编语言在计算器中涉及到算法之中会比较繁琐,但是我们还是选择汇编语言。

4.1 键盘识别程序设计首先将P2口送0E0H,将P1口弦送1在读P1口的数据当P1口低四位全1时说明没有键按下;再扫描下一行,如果P1口不是全1,则说明有键按下,将P2口高四位和低四位组合成一个字节,放入R5寄存器中,通过延迟技术来进行按键去抖,判断按键是否松开,如松开则将得到的键值进行判断是哪一个键。

如果是数字键则首先将其对应的数字放入缓冲区30H,同时将键值放入结果缓冲区,并调用显示程序,显示键值。

在调用扫描键盘程序,如果再有键值输入则将原来的数值在显示屏高位依次移一位,将刚键入的数值放入最低位,并将原来的数值乘十加上刚键入的键值的数放入结果缓冲区,然后调用显示程序;如果是运算符,则记录运算符标志,加法用01H表示,剑法使用02H表示,乘法使用03H 表示,除法使用04H表示,并将结果缓冲区的数转移到中间结果红区,将结果缓冲区清零,等待输入运算数据,当按下等号时,根据记录的运算符标志,判断运算类型,执行运算将结果依次除以10取余数放入结果显示缓冲区,调用显示程序。

依次循环执行。

键盘识别程序流程图如下:图7 键盘识别程序流程图图8 键盘扫描程序流程图4.2 显示程序显示程序是将30H~37H单元设置成液晶显示屏显示缓冲区,分别存放各个位置的数据,40H单元作为输入数据的计数单元。

相关主题