1、 本科 毕业 论文 (设计 ) (二零 届) 基于单片机的电子计算器设计 (c51 语言编程 ) 所在学院 专业班级 电气工程及其自动化 学生姓名 学号 指导教师 职称 完成日期 年 月 摘 要 计算器是人们生活中必不可少的电子产品之一,因此设计一款方便实用,操作简单的计算器具有不小的实际意义。本次 设计是基 于 AT89C51 单 片机的电子计算器设计。需要达到以下几个功能: 能进行二进制、十进制和十六进制转换;能完成 10000 以内加、减、乘、除;精确到小数点后 2 位;具有运算超出表达范围指示。 本次设计选用 AT89C51 为主芯片,通过串行 8 位 LED 数码显示管和 64 位键
2、盘控制芯片 HD7279A 来实现所需要的功能。 HD7279A 是一片具有串行接口并可驱动 8 位共阴式数码管的智能显示驱动芯片。可以完成 LED 显示和键盘接口的全部功能。 本次软件的编程选择 C 语言编程。需要进行的编程主要包括主程序,减法子程序,加法子程序,除 法子程序,乘法子程序,进制转换程序等。需要运用所学的知识进行所需要求的编程。 关键词: AT89C51 单片机 ; HD7279A; LED; 键盘 ; C 语言 Abstract Calculator is essential in peoples lives for one of electronic products. S
3、o designing a convenient and practical, simple calculator is very important. The design is a electronic calculator,and is based on AT89C51 microcontroller. The design need to achieve the following functions: Can carry on the binary system , the decimal system and the hexadecimal system transformatio
4、n; Can complete in 10000 to addition, subtraction, multiplication, division; Accurate to the percentile; Have the operation to surpass the expression scope instruction. The design uses AT89C51-based chip, ang through the serial 8-bit LED digital display and 64-bit keyboard control the HD7279A chip t
5、o achieve the required function. The HD7279A is a smart display driver chip with a serial interface and can be driven with a 8-bit transvaginal digital. The chip can complete the full function of the LED display and keyboard interface. This software programming choice C language. The need for progra
6、mming including the main program, subroutine subtraction, addition subroutine, subroutines division, multiplication subroutine, hex conversion program. The program need to apply the required knowledge to make the necessary programming. Key words: AT89C51 microcontroller; HD7279A; LED; keyboard; C la
7、nguage目 录 1 引言 .1 2 总体设计 .2 3 硬件设计 .3 3.1微处理器系统 .3 3.1.1复位电路 .4 3.1.2时钟电 路 .5 3.2键盘和显示模块 .5 3.2.1键盘电路的设计 .6 3.2.2显示电路的设计 .7 3.3串行模块 .8 4 软件设计 .10 4.1 总体程序流程图 .10 4.1.1主程序 . 11 4.1.2延时子程序 .12 4.2 显示、读键模块的设计 .12 4.2.1 LED显示程序设计 .12 4.2.2键盘子程序设计 .13 4.3 加,减,乘,除子程序 .14 4.3.1加法子程序 .14 4.3.2减法子程序 .14 4.3.
8、3乘法子程序 .15 4.3.4除法子程序 .16 4.4进制转换程序 .16 4.5显示错误 .17 4.5.1 除数为 0时显示错误 .17 4.5.2 输入超过 8位时显示错误 .17 5 制作和调试 .18 6 结论 .19 参考文献 .20 附录 1 实验原理图 .21 附录 2 毕业设计作品说明书 .22 附录 3 按键说明 .23 1 引言 目前社会流行使用的计算器,种类繁多功能各异。计算器可 以应用在不同领域,适用不同需求的人们。有些计算器具有抗震性和抗干扰性,且结构简单,操作方便 1。随着社会的发展,科学的进步,微电子技术的发展也非常迅速,电子产品更新速度也非常快。这些年,单
9、片机以其体积小,价格低廉,面向控制等独特的优势,在各种行业如工业控制,仪器仪表,产品自动化,智能化方面都有广泛应用。而且单片机应用系统的可靠性值得信赖。所以使用单片机的计算器应用也非常广泛。 计算器一般由运算器,控制器,存储器,键盘,显示器,电源等构成 【 2】 。低档计算器的运算器和控制器由数字逻辑电路实现简单的计算。高档的 计算器由微处理器和只读存储器实现各种不同的,复杂的运算程序。计算器各部分部件都有着不同的用途。键盘是计算器的输入部件,一般采用接触式,也有采用传感式的。显示器是计算器的输出部件,一般选用发光二极管或者液晶显示器。关于电能,社会在对电力需求快速增加的同时,对能耗指标的关注
10、也日益提升 2。所以计算器电源设计也是值得关注的。为了避免人们工作完成后忘记关掉计算器而浪费电能,计算器都采用 CMOS 工艺制作的大规模集成电路,然后在其内部装有定时不操作自动断电电路。这样即使使用者忘记关掉计算器也不用担心浪费电能,延长电池 使用寿命的同时,也节约了电能。在单片机计算器中基本的测量分为许多模块,每个模块都包含一些特定的测量计算 【 3】 。 本次设计选用 AT89C51 为主芯片,通过串行 8 位 LED 数码显示管和 64 位键盘控制芯片 HD7279A 来实现所需要的功能 【 4】 。本次软件的编程选择 C 语言编程。需要进行的编程主要包括主程序,减法子程序,加法子程序
11、,除法子程序,乘法子程序,进制转换程序等。 系统还设了功能键 ON/C,开始显示 0,按了键后就进入计算状态。 2 总体设计 此次设计的电路采用 AT89C51 单片机为主要控制电路,利用键盘完成 电路的实际操作,编程语言采用 C 语言编写。 主要设计以 AT89C51 为主芯片,通过串行 8 位 LED 数码显示管和 64 位键盘控制芯片 HD7279A 来实现所需要的功能。 硬件的组成主要有三大模块:微处理器系统、键盘和显示模块。单片机系统结构框图如图 2-1 所示: 图 2-1 单片机系统结构图 软件方面选用 C 语言编程,为了实现加,减,乘,除以及二进制、十进制和十六进制转换,需要进行
12、的编程主要包括主程序,减法子程序,加法子程序,除法子程序,乘法子程序,进制转换程序等。 最后通过按键进行操作,实现设计要求。 电源模块 串行模块 51 单片机 驱动模块 LED显示 3 硬件设计 3.1 微处理器系统 本系统的微处理器采用的是 AT89C51 芯片。 AT89C51 是一种带 4K字节闪存可编程可擦除 只读存储器 的低电压 , 高性能 CMOS 8 位微处理器。单片机的可擦除只读存储器可反复擦除 1000 次 【 5】 。 这种 器件 是 采用 ATMEL 高密度非易失存储器制造技术制造 的 , 并且 与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 C
13、PU和闪烁存储器组合在单个芯片中, 因此 ATMEL的 AT89C51是一种高效微控制器。 AT89C51 芯片如图 3-1 所示: E A / V P31X119X218R E S E T9I N T 012I N T 113T014T115P 1. 01P 1. 12P 1. 23P 1. 34P 1. 45P 1. 56P 1. 67P 1. 78P 0. 039P 0. 138P 0. 237P 0. 336P 0. 435P 0. 534P 0. 633P 0. 732P 2. 021P 2. 122P 2. 223P 2. 324P 2. 425P 2. 526P 2. 627P
14、2. 728RD17WR16P S E N29A L E / P30T X D11R X D10V C C40V S S20U389 C 5 1V C CX T A L 1X T A L 2P 10P 11P 12P 13P 14P 15P 16P 17R E S E TR X DT X D/ I N T 0/ I N T 1T0T1WRRDA8A9A 10A 11A 12A 13A 14A 15D0D1D2D3D4D5D6D7图 3-1 AT89C51 芯片 主要性能参数: 与 MCS-51 兼容 4K 字节可编程闪烁存储器 寿命: 1000写 /擦循环 数据保留时间: 10年 全静态工作:
15、 0Hz-24MHz 三级程序存储器锁定 1288 位内部 RAM 32 可编程 I/O 线 两个 16位定时器 /计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 部分管脚说明: VCC:供电电压。 GND:接地。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 XTAL1: 反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出 【 6】 。 3.1.1 复位电路 在单片机系统中,除单片机本身需要复位外,外部扩展的 IO接口电路等也是需要复位的。因此需要一个系统的同步复位信号,也就是单片机复位后
16、, CPU开始工作,外部的电路要复位好,以保证 CPU有效的对外部电路进行初始化编程。 本次所用的复位电路采用上电按钮复位方式。其工作原理如下:通电时,电容两端相当于短路, RST引脚为高电平, RC电路充电,当 RST端电压慢慢下降,当降到低电平时,单片机开始工作。 单片机复位电 路 如图 3-2所示: 图 3-2 单片机复位电路 当电源开始上电的那一瞬间,电容相当于短路, RESET 端输入高电平,AT89C51 复位。当 AT89C51 需要复位的时候,可以手动按下复位键,此时电容通过电阻放电,当放电完毕时, RESET 端为高电平, AT89C51 进入复位状态,放手后电容又开始充电,
17、 RESET 端的电位开始下降, CPU 就脱离复位状态。 3.1.2 时钟电路 时钟电路是用于产生单片机工作所需要的时钟信号。 AT89C51 单片机内部自带时钟电路,所以我们只需要在片外通过 XTAL1 和 XTAL2 引脚接入晶体振荡 器和电容就可以构成一个稳定的自激振荡器。 XTAL1 和 XTAL2 是时钟引脚,外接晶体时与片内的反相放大器构成一个振荡器,提供单片机的时钟控制信号(时钟引脚也可外接晶体振荡器)。它分别为反相放大器的输入端和输出端。 在这个电路中,电容 C2 和电容 C3 的容量大小的确定与晶振频率和工作电压有关系。考虑到电容的大小会影响到起振的快速性和振荡器的稳定性,
18、并且影响精度,因此设置 C2 和 C3 电容的大小为 30PF。 单片机外围时钟电路原理图如图 3-3 所示 : 图 3-3 单片机外围时钟电路 3.2 键盘和显示模块 本次设计使用的显示 模块采用 HD7279A 智能显示驱动芯片。 HD7279A 驱动芯片是一片具有串行接口的,可同时驱动 8 位共阴式数码管或 64 只独立 LED 的智能显示驱动芯片,它同时也可以连接多达 64 个键的键盘矩阵,只需要一片HD7279A 驱动芯片就可以完成 LED 显示和键盘接口的全部功能。 HD7279A 驱动芯片内部含有译码器,可直接接受 BCD 码或 16 进制码,且同时具有 2 种译码方式,此外,还
19、具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。 HD7279A 的特点如下:串行接口,无需外围元件可直接驱动 LED; 64 键键盘控制器,内含去 抖动电路;有 DIP 和 SOIC 两种封装形式可以供我们选用;它还具有段寻址指令,方便控制独立 LED 等等优点。 键盘显示电路如图 3-4 所示 : e1d2dp3c4g5w16b7w28abfcgdeD P Yabfcgdeabfcgdeabfcgdew39f10a11w412D S 1L N 3 46 1e1d2dp3c4g5w16b7w28abfcgdeD P Yabfcgdeabfcgdeabfcgdew39f10a11w412
20、D S 2L N 3 46 1DP DPSA SASB SBSC SCSD SDSE SESF SFSG SGDIG0DIG1DIG2DIG3DIG4DIG5DIG6DIG7键盘显示模块V D D1/ R E S E T28V D D2RC27NC3C L K O26V S S4D I G 725NC5D I G 624/ C S6D I G 523C L K7D I G 422D A T A8D I G 321/ K E Y9D I G 220SG10D I G 119SF11D I G 018SE12DP17SD13SA16SC14SB15U4/ I N T 1P 11P 10A 14D
21、I G 0D I G 1D I G 2D I G 3D I G 4D I G 5D I G 6D I G 7R6R7R8R 10R 12R19R20R21R14R15R 16R 17R 18SGSFSESDSCV C CV C CV C CG N DR3C9V C CC 1110 4C 1210 4C 1310 4C 1410 4C 1510 4V C CS 5 6 S 5 7 S 5 8 S 5 9 S 6 0 S 6 1 S 6 2 S 6 3R 3010 KS 4 8 S 4 9 S 5 0 S 5 1 S 5 2 S 5 3 S 5 4 S 5 5R 3010 KS 4 0 S 4 1
22、 S 4 2 S 4 3 S 4 4 S 4 5 S 4 6 S 4 7R 3010 KS 3 2 S 3 3 S 3 4 S 3 5 S 3 6 S 3 7 S 3 8 S 3 9R 3010 KS 1 6 S 1 7 S 1 8 S 1 9 S 2 0 S 2 1 S 2 2 S 2 3R 3010 KS 2 4 S 2 5 S 2 6 S 2 7 S 2 8 S 2 9 S 3 0 S 3 1R 3010 KS8 S9 S 1 0 S 1 1 S 1 2 S 1 3 S 1 4 S 1 5R 3010 KS0 S1 S2 S3 S4 S5 S6 S7R 3010 KR 3010 KR 3010 KR 3010 KR 3010 KR 3010 KR 3010 KR 3010 KR 3010 K图 3-4键盘显示电路 3.2.1 键盘电路的设计 键盘被用来向 CPU 输入运行参数和控制系统的运行状态。每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过二并行接口和 CPU 通信。按键的一端(列线)通过电阻接 VCC,而接地是