版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机实训报告 简易计算器姓名学号专业学校指导教师实训时间目录TOC\o"1-5"\h\z中文摘要 1关键词 12整体设计方案 1方案论证 1系统框图 23控制软件设计程序时序总图...............................................2液晶显示软件设计............................................3键盘输入软件设计...........................................5计算函数设置...............................................74软件调试........................................................8个人小结...........................................................8参考文献...........................................................9附录...............................................................9摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。为了解和研究计算器,本次实训设计制作了一个简易计算器,能够在五位的计算范围内进行“ +”、“-”、“*”、“/”的基本运算,能进行负数的精确结果显示。该计算器以AT89C51单片机芯片作为核心。采用LCD1602工业字符液晶进行显示。完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。关键词:单片机;简易计算器;AT89C51;LCD16021实训任务主要功能设计以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602X业字符型液晶显示屏构成,内部由一块AT89C5仲片机构成,通过软件编程可实现简单加减乘除。任务目的通过本次实训提高我们的单片机硬件设计、软件编程能力,自主学习到更多的单片机应用知识。2整体设计方案2.1方案论证计算器电路包括三个部分:显示电路、4*4键扫描电路、单片机微控制电路。具体如下:(1) LC[显示电路LCD1602乍为一个成熟的产品,使用简单,模式固定,便于移植到各种类型的程序,但是初学者往往要注意结合LCD本身的时序图来完善初始化程序。又以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,故采用LCD.(2) 4*4键盘扫描电路对键盘上的某一行送低电平,其他行为高电平,然后读取列值。若列值中有一位是低,则表明该行与低电平对应列的键被按下;否则,扫描下一行。根据读到的值组合就可以查表1得到的键码,因为编程的方式,本次实训采用逐行扫描来读取键值,方便程序编写。(3) 单片机微控制电路:微控制电路就是以AT89C5伪核心的控制核心,主要注意晶振电路的接法和复位电路的接法。系统框图系统框图3控制软件设计:先设实训中采用C语言对单片机进行编程,采用的是自下而上的设计方式,计出每一个模块(子程序),然后再慢慢扩大,最后组成程序。先设3.1程序总时序图3.2液晶显示软件设计显示流程调用显示字序1602液晶显示时序图,通过时序图,所有编程问题都可以得以解决。由时序图可以写出液晶的初始化函数、功能设置函数、清屏函数、写指令函数、写数据函数。voiddelay1() // 采用软件实现延时,5个机器周期{_nop_();_nop_();_nop_();}voidint1() //LCD 初始化{Icd_w_cmd(0x3c);lcd_w_cmd(0x0c);
lcd_w_cmd(0x01);lcd_w_cmd(0x06);lcd_w_cmd(0x80);读状态字}读状态字unsignedcharlcd_r_start() //{unsignedchars;RW=1;delay1();RS=0;delay1();E=1;delay1();s=P1;delay1();E=0;delay1();RW=0;delay1();delay1();return(s);写命令字}写命令字voidlcd_w_cmd(unsignedcharcom)//{unsignedcharg;do{g=lcd_r_start();g=g&0x80;delay(2);}while(g!=0);RW=0;delay1();RS=0;delay1();E=1;delay1();P1=com;E=0;delay1();RW=1;delay(255);}voidlcd_w_dat(unsignedchardat)//写数据{unsignedcharg;do{g=lcd_r_start();g=g&0x80;delay(2);}while(g!=0);RW=0;delay1();RS=1;delay1();E=1;delay1();P1=dat;delay1();E=0;delay1();RW=1;delay(255);}3.3键盘输入软件设计(1)键盘输入程序运行时序图(2)键盘扫描程序unsignedcharscan_key(){unsignedchari,temp,m,n,k;bitfind=0;P0=0xff;k=0x01;}}for(i=0;i<4;i++){P2=~k;temp=~P0;temp=temp&0x0f;k<<=1;if(temp!=0x00){m=i;find=1;switch(temp){case0x01:n=0;break;case0x02:n=1;break;case0x04:n=2;break;case0x08:n=3;break;default:break;}if(find==0)return0xff;elsereturn(n*4+m);}3.4计算函数设置因为只有16个健,所以计算上只设计了加减乘除的功能,下面是几个计算的程序unsignedintjian()//减法函数{if(a>=b){q=0;return(a-b);}if(a<b){q=1;return(b-a);}if(a2[i]<10&&m==0)/第一个数{a=a*10+a2[i];
}if(a2[i]!=14&&a2[i]>9)//四则运算的判断{m=1;w=a2[i];}if(a2[i]<10&&m==1)//第二个数{b=b*10+a2[i];}if(a2[i]==13||o==1)//清零{o=0;lcd_w_cmd(0x01);lcd_w_cmd(0x80);a=0;b=0;wan=0;qian=0;bai=0;shi=0;ge=0;m=0;sum=0;}if(a2[i]==14)//等号{l++;p=jian();//调用减法函数switch(w){case10:sum=a/b;break;//除法case11:sum=a*b;break;//乘法减法百位十位减法百位十位case12:sum=p;if(q==1)lcd_w_dat('-');break;//case15:sum=a+b;break;//加法default:break;}wan=sum/10000;//万位qian=(sum-wan*10000)/1000;//千位bai=(sum-wan*10000-qian*1000)/100;//shi=(sum-wan*10000-qian*1000-bai*100)/10;//ge=sum%10;//个位if(wan!=0)//万位显示{lcd_w_dat(a1[wan]);lcd_w_dat(a1[qian]);lcd_w_dat(a1[bai]);lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}if(wan==0&&qian!=0)//千位显示{lcd_w_dat(a1[qian]);lcd_w_dat(a1[bai]);lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}if(wan==0&&qian==0&&bai!=0)//百位显示{lcd_w_dat(a1[bai]);lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}十位显示个位显示if(wan==0&&qian==0&&bai==0&&shi!=0)//十位显示个位显示{lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}if(wan==0&&qian==0&&bai==0&&shi==0)//{lcd_w_dat(a1[ge]);}if(l%2!=0)//换行{lcd_w_cmd(0xc0);}if(l%2==0)//换屏{lcd_w_cmd(0x80);o=1;}a=0;b=0;wan=0;qian=0;bai=0;shi=0;ge=0;m=0;sum=0;// 运算完一次全部清4软件调试:(1)编程前先画了流程图,这样思路清晰,能按部就班的完成。(2)子函数有显示部分、键盘扫描部分和计算部分,编写好后综合在一起。(3)在将程序写在一起的过程中,使用ISIS进行了仿真,仿真过程模拟了键盘的输入,同时观察各种情况时液晶的输出情况。个人小结:第一天:刚开始不知道实训室的电脑不行,走很多弯路,弄了整整一天,只是把教材的程序搬了上去,仅此而已,可以说,毫无收获。第二天:早上也是毫无收获,下午才发现电脑的问题,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 理发店员工劳务合同范本
- 2024年商品房销售与售后服务合同3篇
- 配送服务合同
- 网络游戏开发与运营合同(04版)
- 物理化学期中复习 第七章
- 膜结构工程2024年度项目评估合同
- 基于二零二四年度的智能交通系统设计与实施合同2篇
- 意向施工协议完整版
- 屋顶租赁合同范本范本
- 总经理聘用合同
- 在设立银行分支机构的可行性分析报告
- N5语法练习加详解(共26页)
- 《书愤》PPT课件
- 室内装饰装修工程施工组织设计方案(完整版)
- (最新)陕西省建筑工程施工质量验收技术资料管理整编规定及指
- 乌兹别克斯坦新增进口商品消费税税率表
- 基于人才战略的企业年金在民办高校中的应用研究
- 消防维保年度总结范文(2篇)精选范文
- 天津科技大学 大学物理(下)本科试卷(A卷)(含答案)
- 消防应急组织架构图
- 锅炉安装工程—质量证明书(散装)
评论
0/150
提交评论