计算机单片机设计课程设计完整版

  • 格式:doc
  • 大小:473.50 KB
  • 文档页数:30

黄河科技学院课程设计说明书 第Ⅰ页 摘 要 本设计是实现4位数的加减运算的简易计算器,利用AT89C51单片机作为微控制器,实现键盘输入,由七段LED数码管输出;程序都是根据教材内和网络中的C语言程序参考编写而成,在功能上还并不十分完善,限制也较多。本设计重在设计构思,使得我们用专业知识、专业技能分析和解决问题,通过设计使得我们对所学知识彻底巩固。

关键字: 计算器、单片机、AT89C51、键盘、数码管 黄河科技学院课程设计说明书 第Ⅱ页 目 录

1、总体方案设计 ………………………………………………………………………1 1.1 设计任务与思路………………………………………………………………1 1.2 方案论证与设计………………………………………………………………1 2、硬件模块设计 ………………………………………………………………………2 2.1 运算模块设计…………………………………………………………………2 2.2 单元电路设计…………………………………………………………………2 2.3 输入模块………………………………………………………………………5 2.4 显示模块………………………………………………………………………6 3、系统软件设计 ………………………………………………………………………9 3.1 LED 显示程序流程图设计……………………………………………………9 3.2 读键盘输入程序流程设计……………………………………………………10 3.3 主程序流程图设计……………………………………………………………17 4、仿真与调试 …………………………………………………………………………19 总 结 ……………………………………………………………………………………20 参考文献…………………………………………………………………………………21 附录A简易计算器C语言程序…………………………………………………………22 附录B系统硬件电路图…………………………………………………………………28 黄河科技学院课程设计说明书 第 1 页

1、总体方案设计 1.1 设计任务与思路 任务书上规定计算器满足的基本要求如下: 1、能实现4位数的加减运算。 2、当按下“*或/”号时,属于违规操作,当前数据被清零,声报警。 针对以上设计要点,我们采用基于单片机设计计算器,并用LED 数码管显示数据,4*4 的矩阵键盘实现数据输入。设计仿真和调试要用到Protues 、Keil等软件。 1.2 方案论证与设计 根据功能和指标要求,本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计考虑如下: (1)由于要设计的是简单的计算器,可以进行加减运算,对数字的大小范围要求不高,故我们采用可以进行4位数字的运算,选用4个LED 数码管显示数据和结果。 (2)考虑到软件Proteus中有自带键盘,为了设计的方便键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可,系统模块如图1-1所示。

图1-1 系统模块图 根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计,然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。这种方法比较符合人们的日常思维,详细程序见系统软件设计部分介绍。 黄河科技学院课程设计说明书 第 2 页

2、硬件模块设计 2.1 运算模块设计 AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能,如图2-1所示:

图2-1 单片机芯片 51系列单片机8031、8051及89c51/89s51均采用40Pin封装的双列直接DIP结构。上图是它们的引脚配置:40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。 2.2 单元电路设计 2.2.1 电源引脚 黄河科技学院课程设计说明书 第 3 页

Vcc 40脚 正电源脚,工作电压为5V,另有AT89LV51工作电压则是2.7-6V, 引脚功能一样。 GND 20脚 接地端。 2.2.2 外接晶体引脚 外接晶体引脚如图3-4所示:

图2-2 外接晶体管引脚 型号同样为AT89C51的芯片,在其后面还有频率编号,有12,16,20,24MHz可选。 本设计采用12MHz频率,对应的晶振也是12MHz。 2.2.3复位电路 在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序,复位电路如图2-3所示。

图2-3 复位电路图 2.2.4 输入输出(I/O)引脚 P3.0-P3.7输入引脚,称为P3口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能。端口置1时,内部上拉电阻将端口拉到高电平,作输入用,不需要外接上拉电阻,因此,可以接个键盘作为输入用,如图2-4所示。 黄河科技学院课程设计说明书 第 4 页

图2-4 键盘电路 P0.0-P0.7口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用,作为驱动数码管用时,需要添加个排阻使用,本设计采用RESPACK-8排阻。 P2.0-P2.3口是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),接在数码管扫描口上,如图2-5所示。

图2-5 数码管电路 2.2.5声音报警电路设计 P1.0-P1.7是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉 黄河科技学院课程设计说明书 第 5 页

到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),因此可以驱动负载。 将声音报警器接在P1.7引脚上,声报警器由一个电阻和喇叭构成,一端接在P1.7引脚,一端接地;当按下*或/按键时,属于违规操作,此时声音报警器发出滴滴声,如图2-6所示。

图2-6 声音报警电路图 2.3 输入模块 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,为此,我们引入了矩阵键盘的应用,采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率,如图2-7所示。

图2-7 键盘按键模型 2.3.1 键盘介绍 每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下, 黄河科技学院课程设计说明书 第 6 页

判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 当无按键闭合时,P10-P13 与P14-P17 之间开路;当有键闭合时,与闭合键相连的两条I/O 口线之间短路。判断有无按键按下的方法是:第一步,置列线P14~P17 为输入状态,从行线P10~P13 输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P14~P17 读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作,如图2-8所示。

P34P34RDRD

WRWRP35P35

89/56*23_0=+

图2-8 键盘内部电路图 2.4 显示模块 发光二极管LED 是单片机应用系统中的一宗简单而常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。因而作为典型的外围器件,LED 显示单元是反映系统输出和操作输入的有效器件。LED 可以方便的和大年纪系统连接;它的优点是价格低,寿命长,对电压电流的要求低等,因而在单片机应用系统中获得了广泛的应用,所以在此设计中我首先选用了LED作为显示器件。如图2-9所示。

图2-9 数码显示管 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4