基于ADuC848单片机的电子计算器.docx
《基于ADuC848单片机的电子计算器.docx》由会员分享,可在线阅读,更多相关《基于ADuC848单片机的电子计算器.docx(22页珍藏版)》请在沃文网上搜索。
1、湖南大学电气与信息工程学院本科生课程设计第一部分ADI学习板简介一、系统资源 22 / 221、两路16位ADC输入、可作差分输入;2、12位DAC输出;3、运放LM358; 4、RS232串口;5、步进电机(5V、70欧、6线4相)接口;6、PS/2接口;7、插针11,用于选择PS/2或者红外接收头;8、红外接收头;9、线性稳压芯片7805;10、复位按键和下载按键;11、开关以及功能选择插针110(从左至右)12、4X4矩阵式键盘,左边4个可以作独立按键;13、直流电源输入;14、USB电源输入接口;15、IIC接口;16、RTC DS1307;17、EEPROM AT24C08;18、8
2、位数码管;19、SPI接口;20、上排图形点阵LCD12864的接口、下排LCD1602的接口;21、红外二极管;22、8路LED;23、蜂鸣器;24、P3口扩展接口;25、单片机AduC848;26、P2口扩展接口;27、P0口扩展接口;第二部分 电子计算器设计一设计任务及要求:1、任务设计一个四则运算的电子计算器,采用LED或LCD显示。2、要求1)利用小键盘作为数据和命令的输入装置2)利用LED或LCD作为过程和结果的输出装置3)可实现基本的数据运算,包括:加、减、乘、除、开方等4)未工作时显示北京时间,可调整5)当数据超出范围,可声音提示或报警6)可通过按键控制,随机模拟滚动显示乘法口
3、诀表二设计原理及原理图:通过单片机的计算、控制功能和数码管的显示功能,行列键盘的输入功能,可以实现一个计算器的基本功能如加、减、乘、除、乘n次方,开n次方的功能,但由于AduC848单片机位数的限制和内存的不足,限制了显示的位数和计算功能。本计算器只能在0到65535的计数范围内正确的处理和显示得数,因为采用按键复用的设计,克服了键盘上按键不够的难题。由于内存不足和函数调用不精确等原因,在本计算器内并没有使用keil自带的math头文件来获取乘方开方的函数,而是自己编写了一个整数的乘方开方函数,在适用范围内有可以得到正确得数。同时,利用了中断子程序设计了一个简易的时间显示。可以显示出小时和分钟
4、,同时可以看出秒钟的闪动,显示的时间可调。在计算器进行计算的同时,时钟程序也在运行,不会因计算的过程对时间的参数造成影响。三设计流程图三硬件原理图图一:MPU的电路图图2:行列键盘结构图三:数码管连接图四:电源供电电路图中可以看出,行列式键盘的行扫描由P1口的第四位构成,列扫描由高四位构成。而数码管的0-7位(从右往左)的位控制由P3.3,P3.5,P4.6,P4.7,P2.4,P2.1,P2.2,P2.3,其段控制由P0口控制。数码管为共阳极,即P0口输出低电平时会亮。而蜂鸣器的接口为2.6,由于并无特殊电路,故并未在图中标出。四程序清单1.主要变量和函数声明部分#include#defin
5、e ulong unsigned long#define uint unsignedintsbit pwm1= P26;sbit dc0=P33;sbit dc1=P35;sbit dc2=P36;sbit dc3=P37;sbit dc4=P24;sbit dc5=P21;sbit dc6=P22;sbit dc7=P23;/static unsigned int n;void error();uint err=0x11,0x03,0x11,0x11,0x61;void time();void showtime(uinth,min);void delay(uint t);void show(
6、ulongn,uint d1,d2,d3,d4,d5);ulong a,b,a1,ru1;uint se,s1,s,i,j,sq,gk,mod,shift,keyvalue,second,second1,minute,hour;uint dat15;uint dat25;unsigned int dis=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd,0xff;ulongswitchdat(uint d1,d2,d3,d4,d5);uintkeytest();ulong calculator(ulongc,d,uint mod1);
7、uintgetkey();uintget,ru;uintswitchcode(uint k);2、主函数部分void main()/主函数,模拟EDA状态法 second=0;second1=0;minute=0;hour=0;EA=1;ET0=1;TH0=0x00;TL0=0x00;TR0=1;以上为时间的参数,由于复位不需要进行重置,因此把它设置在res(即reset)复位的标签之后。下面开始进行复位后各个变量的赋初值res: pwm1=0;dc5=0;dc6=0;dc7=0;s=0;se=0;a=0;shift=0;for(j=0;j=4;j+) dat1j=0;for(j=0;j=1;
8、j-) dat1j=dat1j-1 ;dat10=switchcode(keyvalue);if(keyvalue=14) goto res;a=switchdat(dat10,dat11,dat12,dat13,dat14);if(se=1) goto res;show(a,dat10,dat11,dat12,dat13,dat14);case 1:/确定符号模式if(shift=1) if(keyvalue!=3&keyvalue!=7&keyvalue!=11&keyvalue!=14&keyvalue!=15) error();if(keyvalue=3) mod=1;s+; if(k
9、eyvalue=7) mod=3;s+; if(keyvalue=11) mod=5;s+; if(keyvalue=14) goto res;if(keyvalue=15) time(); goto res; show(a,dat10,dat11,dat12,dat13,dat14); if(shift=0)if(keyvalue=3) mod=0;s+; if(keyvalue=7) mod=2;s+; if(keyvalue=11) mod=4;s+; if(keyvalue=13)goto res;show(a,dat10,dat11,dat12,dat13,dat14);case 2
10、: /确定输入2模式for(j=0;j=1;j-) dat2j=dat2j-1 ;dat20=switchcode(keyvalue);if(keyvalue=14) goto res;b=switchdat(dat20,dat21,dat22,dat23,dat24);if(se=1) goto res;show(b,dat20,dat21,dat22,dat23,dat24);case 3:/得到得数模式a=calculator(a,b,mod);if(se=1) goto res;if(keyvalue=14) goto res;break;show(a,dat10,dat11,dat1
11、2,dat13,dat14);if(keyvalue!=3&keyvalue!=7&keyvalue!=11&keyvalue!=15) for(j=0;j=4;j+) dat1j=0;s=0; break; if(keyvalue=3|keyvalue=7|keyvalue=11) shift=0; s=1; break; if(keyvalue=15) shift=1; goto r1;default:/清零模式goto res;/应该不会有了吧 /while 结尾3、从下面开始即为各个辅助函数的设定,这个部分比较庞杂,但是各个部分作用清晰,程序清晰易懂。下面为延迟函数,短暂延迟,用于防止
12、抖动和显示数字时所用的延迟void delay(uint t) /延迟while(-t);/立刻返回取得的按键4、下面2个函数共同作用来取得键盘值,键盘返回值为0-15uintkeytest()uintrow,col;P1&=0xf0;P2&=0xf0;/行检测switch(P1&0x0f)case 0x07:row=3;break;/0111 11case 0x0b:row=2;break;/1011 10case 0x0d:row=1;break;/1101 01case 0x0e:row=0;break;/1110 00default:return 0xff;/列检测for(col=0;
13、col4;col+)P2|=0x0f;P2-=(1col);if(P1!=0xff) return row*4+3-col;return 0xff;/按键弹起后返回取得的按键uintgetkey()uint key;key=keytest();delay(1000);if(key=0xff | key!=keytest()return 0xff;while(1)if(key!=keytest()delay(1000);if(key!=keytest()return key;5、下面的函数为键盘返回码转换为输入数字码的函数/键盘码转数字uintswitchcode(uint k)if(k=0)
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ADuC848 单片机 电子 计算器
