单片机课程设计——基于C51简易计算器(共17页).doc
《单片机课程设计——基于C51简易计算器(共17页).doc》由会员分享,可在线阅读,更多相关《单片机课程设计——基于C51简易计算器(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上单片机双字节十六进制减法实验设计 摘要 本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的Vis
2、ion3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十六进制减法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认
3、识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减 目录摘 要 .01引 言 .01一、 设计任务和要求.1、1 设计要求 1、2 性能指标1、3 设计方案的确定 二、 单片机简要原理.2、1 AT89C51的介绍2、2 单片机最小系统2、3 七段共阴极数码管三、 硬件设计.3、1 键盘电路的设计 3、2 显示电路的设计四、 软件设计. 4、1 系统设计4、2 显示电路的设计五、 调试与仿真.5、1 Keil C51单片机软件开发系统5、2 proteus的操作六、 心得体会.参考文献.
4、附录1 系统硬件电路图.附录2 程序清单.一、 设计任务和要求1.1 设计要求 本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计 ,设计任务为: 设计一键盘显示装置,键盘上除需定义16个十六进制数字键外还要相应的功能键,其它键不定义无响应。利用此系统可分别可输入十六进制被减数与减数,实现两数相减并将结果以十六进制形式显示出来。(扩展:多位16进制数相减)1.2 性能指标 本课程设计的十六进制减法,计算结果全为整数,计算结果溢出结果不显示。 1 、减法:三位减法,计算结果若小于零溢出不显 3、有显示差的功能1.3 设计方案的确定 按照1.1的设计要求,本课题需要使用数码管显示和扩展1
5、*5键盘,由于AT89C51芯片的I口不够多,而且为了硬件电路设计的简单化,故选择串行动态显示和用P1口扩展1*5键盘,扩展的1*5键盘定义十个数字键,5个功能键,使用串行动态显示显示运算结果。 主程序进行初始化,采用行列扫描进行查表得出键值,每次按键后调用显示子程序。 二、 单片机简要原理在该课程设计中,主要用到一个AT89C51芯片和串接的共阴数码管。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。2.1 AT89C51的介绍: 图一 AT89C51外形结构和引脚分布图芯片AT89C51的外形结构和引脚图如图一所示。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(
6、FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.2 单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小部分,包括主控芯片、复位电路和晶振电路。 (一) 复位电路 图二 复位电路 本设计采用上电与手动复位电路,电阻分别选取100
7、和10K,电容选取10uF,系统一上电,芯片就复位,或者中途按按键也可以进行复位。(二) 晶振电路 图三 晶振电路晶振电路是单片机的心脏,它用于产生单片机工作所需要的时钟信号。单片机的晶振选取11.0592MHz,晶振旁电容选取30pF。2.3 七段共阴极数码管 图四 七段共阴数码管图为七段共阴数码管的引脚图,从左到右数码管的段码分别为a,b,c,d,e,f,g和小数点dp,低电平时点亮,最右边为位选端。三、 硬件设计简易数字计算器系统硬件设计主要包括:显示电路以及其他辅助电路。下面分别进行设计。 3.1 显示电路的设计 当系统需要显示少量数据时,采用LED数码管进行显示是一种经济实用的方法。
8、数码管显示有静态显示和动态显示两种方法。为了减少端口的使用,故选择动态显示。 电路如下图六所示: 图六 三位数码管的显示电路四、 软件设计在十进制加法计算器的软件规划要求下,简易计算器的程序主要包括以下功能模块:(1) 主模块,为系统的初始化。(2)显示与读键模块,分为判键程序段、运算操作子程序、显示子程序等部分;4.1 系统设计(一) 系统模块图 图六 系统模块图 此系统包括输入、运算和显示模块,由单片机控制。其中通过输入键盘模块将数字09和运算符号“+”、“-”、“*”、“/”输入单片机进行运算;运算模块分别根据输入的运算符进行加减乘除运算;显示模块将运算后的数值通过动态扫描使之在数码管上
9、输出。(二) 系统总流程图主程序主要是用来进行初始化的,调用其他子程序,清空各个标志位,清空缓存区,读取键码,判断功能,在LED上作出回应,主程序流程图如图六所示。(1)数字送显示缓冲程序设计简易计算器所显示的数值最大位三位。要显示数值,先判断数值大小和位数,如果是超过三位或大于255,将不显示数字。可重新输入数字,再次计算。(2)运算程序的设计首先初始化参数,送LED三位显示“0”,其它位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是功能键,是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并
10、送LED显示,若是运算键则保存相对运算程序的首地址。 初始化参数清零键LED显示输入数值读取键值状态清零数值送显示缓存开始按键输入?分析键值数字键等待数值输入结果送显示缓存保存结果和功能键根据上次功能键和输入的数据计算结果功能键否是是数字键是清零键是功能键 图七 主程序流程图4.2 显示与按键设计(一) LED显示程序设计 LED显示器由七段发光二极管组成,排列成8字形状,因此也称为七段LED显示器。为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字09的共阴极字形代码如下表:显示
11、字型gfedcba段码001111110c0h100001100f9h210110110a4h310011110b0h4110011099h5110110192h6111110182h700001110f8h8111111180h9110111190h 表一 共阴极数码管段码对照表(二) 读键子程序设计为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如图八:读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。第一次所有列线均输出低电平,从所有读入键盘信息(行信息);第二次所有行
12、线均输出低电平,从所有行线读入键盘信息(列信息)。将两次读键信息进行组合就可以得到按键的特征编码,然后通过查表得到按键的顺序编码。将各特征编码按希望的顺序排成一张表,然后用当前读得的特征码来查表。当表中有该特征码时,它的位置就是对应的顺序编码;当表中没有该特征码时,说明这是一个没有定义的键码,与没有按键(0FFH)同等看待。 图八 计算键值子程序流程图五、 调试与仿真下面用KEIL uVision3与 proteus仿真软件介绍十进制加法计算器的仿真与调试。5.1Keil C51单片机软件开发系统(一) 系统的整体结构C51工具包的整体结构中,其中uVision是C51 for Windows
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 基于 C51 简易 计算器 17
限制150内