1、模拟计算器基于单片机的简易计算器的制作13456789CL022很高兴侯老师能够在百忙之中听我们的结业答辩!课题课题名称计算器模拟系统的设计与制作部门或单位 吉林铁道职业技术学院组长关春龙组员齐向东、王占朋、张成成果形式论文 设计作品 实物制作适用专业应用电子技术完成课题任务的学生数4背景 单片机已逐渐成为电子产品研制和开发中首选的控制器,它的应用越来越成为人们关注的焦点,计算器在日常生活中是比较常见的电子产品之一。用单片机来实现计算器的基本功能这一课题不仅能与生活实际相结合,又能很好的验证应电专业学生的基础知识和动手能力,其难度适合专科生设计制作。设计要求(1)计算器能显示4位数字,开机运行
2、时,只有数码管最低位显示为“0”,其余位全部不显示;(2)具有44键盘,分别表示09、/、和清零键CL,输入的数字从设计的键盘输入;(3)可对两个无符号数进行加、减、乘、除运算,并显示计算结果。(4)结果溢出时发出“嘀”报警声。(5)制作出实物,写出合格的结业论文。(6)相互协作完成任务。本设计收获或成效(1)查阅资料、熟悉计算器模拟系统的工作原理和设计思路。(2)掌握单片机软件编程方法,了解硬件设计制作和方法。(3)提高电路制作(protel99se软件)和调试能力。(4)提高毕业论文的撰写能力。(5)提高与人合作的能力和意识。7任务进程选择适合自己的毕业课题课题申报表,任务书的下达查找资料
3、,策划任务PCB板画板(使用Altium DXP画板),软件设计及编写(KEIL、及C-Free),Proteus软件的仿真、调试。后期细微修改。提交PCB文件进行打样,购买元器件,焊接元件,烧录软件,调试实物。成果汇报PPT制作。毕业论文的编写及修改,答辩。使用到的工具软件使用到的工具:电烙铁、可调电源、万用表、计算机。硬件部分的设计多个方案的对比方案一:在一开始设计的时候,我们采用了P0口(P0口加上10K上拉电阻)作为段码驱动显示,P2口作为位驱动,P1口作为键盘驱动识别,这样,P0口作为段驱动,可以使数码管更亮(通过调节上拉电阻的阻值,单片机其他准IO口内部有30K的上拉电阻,这里采用
4、10K的上拉电阻,可以比其他IO口输出更大的电流)缺点,键盘布局不适合使用操作,PCB布线较多的跳线。方案二:采用P1口段驱动显示,P2口位驱动,在段驱动加上74LS244缓冲器,使显示更稳定,P0口加上10K上拉电阻作为键盘扫描识别。显示依然不够稳定,PCB布线跳线较多,如果开发为两块板,导线需要较多,不够稳定。多个方案的对比方案三:在设计确定方案的过程中,我们设计了好几种方案,也不断地改进中,最终确定使用显示板使用MAX7219驱动两个共阴四位七段数码管显示数字。因为使用MAX7219驱动数码管显示,亮度稳定,不闪烁,具有10MHz连续串行口、独立的LED段控制、数字的译码与非译码选择、1
5、50A的低功耗关闭模式、亮度的数字和模拟控制、高电压中断显示、共阴极LED显示驱动 等特点,同时,显示接口简单(只有VCC 5V电源输入,可以和单片机同源供电,GND端,LOAD数据装载输入端,CLK时钟输入端,和DIN串行数据输入端。硬件布局仿真电路图BINCLKLOADP13P14P15AD7AD2AD3AD4AD5AD6A15A8A9A10A11A12A13A14P16P17AD1AD0AD0GNDVCCGNDAD1AD2AD3AD4AD5VCCAD6AD2AD7AD6VCCAD0AD1AD3AD4AD5AD7P3.0P3.4BINLOADCLKDOUTISETACDEFGDPDIG0D
6、IG1DIG2DIG3DIG4DIG5DIG6DIG7P3.4BISETVCCABCDEFGDPDIG0DIG1DIG2DIG3DIG4DIG5DIG6DIG7(1)计算器能显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示;(2)具有44键盘,分别表示09、/、和清零键CL,输入的数字从设计的键盘输入;(3)可对两个无符号数进行加、减、乘、除运算,并显示计算结果。(4)结果溢出时发出“嘀”报警声8051 CALCULATOR(简易计算器)XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3
7、/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5112365489=7+CON0ABCD1243KEYPAD4*4KEYPAD234567891RP
8、1RESPACK-8X1CRYSTALC134pFC234pFC322uFR11kBUZ1BUZZERA14B16C20D23E21F15G17DP22DIG02DIG111DIG26DIG37DIG43DIG510DIG65DIG78DIN1LOAD12CLK13ISET18DOUT24U2MAX7219Q1NPNC40.01uFR31kLED7SEG-MPX8-CA-BLUEAT89C517SEG-MPX8-LEDKEYPADRESPACKMAX7219仿真中BINCLKLOADP13P14P15AD7AD2AD3AD4AD5AD6A15A8A9A10A11A12A13A14P16P17A
9、D1AD0AD0GNDVCCGNDAD1AD2AD3AD4AD5VCCAD6AD2AD7AD6VCCAD0AD1AD3AD4AD5AD7P3.0P3.4BINLOADCLKDOUTISETACDEFGDPDIG0DIG1DIG2DIG3DIG4DIG5DIG6DIG7P3.4BISETVCCABCDEFGDPDIG0DIG1DIG2DIG3DIG4DIG5DIG6DIG7(1)计算器能显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示;(2)具有44键盘,分别表示09、/、和清零键CL,输入的数字从设计的键盘输入;(3)可对两个无符号数进行加、减、乘、除运算,并显示计算结
10、果。(4)结果溢出时发出“嘀”报警声8051 CALCULATOR(简易计算器)XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P
11、2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5112365489=7+CON0ABCD1243KEYPAD4*4KEYPAD234567891RP1RESPACK-8X1CRYSTALC134pFC234pFC322uFR11kBUZ1BUZZERA14B16C20D23E21F15G17DP22DIG02DIG111DIG26DIG37DIG43DIG510DIG65DIG78DIN1LOAD12CLK13ISET18DOUT24U2MAX7219Q1NPNC40.01uFR31kLED7SEG-MPX8-CA-BLUEAT
12、89C517SEG-MPX8-LEDKEYPADRESPACKMAX7219电源部分的设计电源部分的设计没有涉及到变压,整流部分,只是对器件BNC(DC头)的直流5V电压进行开关设计,电源指示,稳压,限压,滤波作用,其中使用到了5.1V/1W稳压管,使供给单片机的和其他部分模块的电源限制在5V,或低于5V。LED5.1V稳压管 DC头串口 RS232程序下载左边的原理图为程序烧写模块,使用串口进行程序的下载。适用于STC 51系列单片机,Atmel的89S51平预留有接插件,方便程序下载,下载板需另外制作。单片机周边设计在进行I/O口工作分配的时候,考虑到布线及产品的美观性,以及操作的简易性,
13、P1口为显示驱动,P0口接上拉电阻(103,10K),用于键盘扫描,蜂鸣器由P34口驱动,使用上电自动复位,时钟部分使用12MHz晶振。驱动显示接口显示板供电口复位时钟电路103排阻,P0键盘扫描单片机周边设计P3.0,P3.1专用单片机程序下载,其他I/O口未使用。P2口闲置,备以后扩展使用。J20其中三个引脚接到P1.0,P1.1,P1.2,分别为LOAD(数据装载输入端),CLK(单片机提供给显示驱动芯片MAX7219的时钟信号),DIN(串行数据输入),加上两个电源端口,驱动显示板。驱动显示接口显示板供电口复位时钟电路103排阻,P0键盘扫描键盘扫描键盘扫描由P0口驱动。采用4*4键盘
14、设计,满足设计要求的所有功能。显示板显示板电路原理图,使用MAX7219驱动数码管,它将单片机传送过来的显示信号进行解码,驱动数码管显示。具有亮度稳定,不闪烁,可达10MHz的扫描频率。显示信号传输用线少,适合把主板和显示板分开设计。接口定义为(只有VCC 5V电源输入,可以和单片机同源供电,GND端,LOAD数据装载输入端,CLK时钟输入端,和DIN串行数据输入端)。MAX7219显示驱动IC驱动显示接口显示板供电口显示亮度控制两块7段四位数码管主板原理图软件部分设计显示端口定义/使用时应保证本计算器的输入数值与输出数值均不大于65536 数码管驱动芯片用的MAX7219,运算和键盘扫描用S
15、TC89C51#include/调用库函数 unsigned char key,temp;#define DIN P1_0/串行数据输入引脚#define CLK P1_1/同步时钟#define LOAD P1_2/数据输入使能键盘扫描子程序数据发送子程序/-数据发送子程序-void send(unsigned char addr,unsigned char dat)unsigned char ADS,i,j;LOAD=0;i=0;while(i16)if(i=1;j-)DIN=ADS&0 x80;ADS=1;CLK=1;CLK=0;i+=8;LOAD=1;/驱动MAX7219,将显示代码传
16、送给MAX7219.数据显示子程序n0=n/10000000;n1=(n/1000000)%10;n2=(n/100000)%10;n3=(n/10000)%10;n4=(n/1000)%10;n5=(n/100)%10;n6=(n/10)%10;n7=n%10;/传输数据的编码/-数据显示子程序-void display(unsigned long int n)unsigned char n0;unsigned char n1;unsigned char n2;unsigned char n3;unsigned char n4;unsigned char n5;unsigned char n
17、6;unsigned char n7;主函数(运算主程序)/-主函数-void main(void)unsigned long int first;unsigned long int second;unsigned long int result;/最终运算结果 unsigned char op;/用来存储+、-、*、/操作符键的值 unsigned char flag,flag1;P3_4=0;LOOP:first=0;second=0;result=0;op=0;flag=1;flag1=0;display(0);while(1)KeyScan();if(key0&flag=1)if(ke
18、y=10)key=0;first=first*10+key;key=0;display(first);delay10ms(30);KeyScan();if(key12&key=16)op=key;key=0;flag=2;主函数(运算主程序)KeyScan();if(key0&flag=2)if(key=10)key=0;second=second*10+key;key=0;display(second);flag1=1;delay10ms(30);KeyScan();if(key=12&flag1=1)switch(op)case 13:result=first+second;break;case 14:result=first-second;break;case 15:result=first*second;break;case 16:result=first/second;break;first=0;second=0;display(result);key=0;flag=1;flag1=0;KeyScan();if(key=11)goto LOOP;焊接完的主板PCB实物展示-焊接好的主板PCB就要完成了!