- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计-基于ADuC848的电子计算器精选
湖南大学电气与信息工程学院本科生课程设计课 程:单片机课程设计题 目:电子计算器专 业:电气工程及其自动化班 级:学 号:姓 名:指导 老师:设计 时间:2012年6月20日一.设计任务及要求:1、任务设计一个四则运算的电子计算器,采用LED或LCD显示。2、要求1)利用小键盘作为数据和命令的输入装置2)利用LED或LCD作为过程和结果的输出装置3)可实现基本的数据运算,包括:加、减、乘、除、开方等4)未工作时显示北京时间,可调整5)当数据超出范围,可声音提示或报警6)可通过按键控制,随机模拟滚动显示乘法口诀表二.设计原理及原理图:通过单片机的计算、控制功能和数码管的显示功能,行列键盘的输入功能,可以实现一个计算器的基本功能如加、减、乘、除、乘n次方,开n次方的功能,但由于ADuC848单片机位数的限制和内存的不足,限制了显示的位数和计算功能。本计算器只能在0到65535的计数范围内正确的处理和显示得数,因为采用按键复用的设计,克服了键盘上按键不够的难题。由于内存不足和函数调用不精确等原因,在本计算器内并没有使用keil自带的math头文件来获取乘方开方的函数,而是自己编写了一个整数的乘方开方函数,在适用范围内有可以得到正确得数。同时,利用了中断子程序设计了一个简易的时间显示。可以显示出小时和分钟,同时可以看出秒钟的闪动,显示的时间可调。在计算器进行计算的同时,时钟程序也在运行,不会因计算的过程对时间的参数造成影响。三.设计流程图四.硬件原理图图一: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.主要变量和函数声明部分#includeaduc848.h#define ulong unsigned long#define uintunsignedintsbit pwm1= P2^6;sbit dc0=P3^3;sbit dc1=P3^5;sbit dc2=P3^6;sbit dc3=P3^7;sbit dc4=P2^4;sbit dc5=P2^1;sbit dc6=P2^2;sbit dc7=P2^3;//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(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 dat1[5];uint dat2[5];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);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++) dat1[j]=0;for(j=0;j=4;j++) dat2[j]=0;show(a,dat1[0],dat1[1],dat1[2],dat1[3],dat1[4]);在下面就是主函数的精华部分,即状态法的实现。本次主要使用了4种状态,分别是状态0--输入a状态,状态1--确定符号状态,状态2--输入b状态,状态3—得到得数状态,为防止偶尔的程序异常,将其余状态(即default)设置为归0。while(1)
您可能关注的文档
最近下载
- 人教版初中英语课标版 九年级第十单元Section A 3a—3c(21张).pptx
- 中小企业融资-全套PPT课件.pptx
- 2024年麻醉、精神药品规范化管理与使用培训考核有答案.docx
- 【基恩士】LR-W500(C) 使用说明书 (简体中文).pdf
- 11第十一章-通货膨胀与通货紧缩(货币金融学(蒋先玲编著)第3版ppt课件可编辑).pptx
- 人美版八年级上册美术教案.pdf VIP
- 工科基础物理学(下册)课后习题答案董科,周雨青,张玉萍高等教育出版社.pdf
- Unit 6 A Day in the Life (Period 1)课件-人教版英语七年级上册(2024).pptx VIP
- 光伏支架及光伏组件安装工程施工方案.docx VIP
- 曲安奈德局部封闭治疗.pptx VIP
文档评论(0)