版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于51单片机的简易计算器1、前言:本设计是基于51系列单片机来进行的数字计算器系统设计,可以完 成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在lcd上显示相应 的结果;设计电路采用stc90c51单片机为主要控制电路,利用mm74c922作为计 算器4*4键盘的扫描ic读取键盘上的输入;显示采用字符lcd静态显示;软件 方面使用c语言编程,并用protues仿真。2、设计任务:计算器软件程序要完成以下模块的设计:(d键盘输入检测模块;(2) lcd显示模块;(3)算术运算模块;(4)错误处理及提示模块。3、主体设计部分:(1)、系统模块图:(2)、系统总流程图:4、硬件部分单片机部
2、分+矩阵键盘+1602显示如图所示为简易计算器的电路原理图。p3 口川于键盘输入,接4*4 矩阵键盘,键值与键盘的对应表如表一一所示,po 口和p2 口用于显示,p2 口用 于显示数值的高位,p。口用于显示数值的低位。r2tpi 0 pi ipi 9pi 2pi 48 w-isw-p3irgvcc,tn5 pollpetp7fpi 5mxu pi ts(wks pi呼叩 rest p2 0rjto pi p2 p2 pl内 3(ti) 四花 火十四 xtal-j 乂ml i 捌。vkc pci opdo) ra idd ra 2a5) pg 2ma) ra 始04) pa邱 pci邱国 团缪团
3、 ctvtp 4l(stgqgisj p2 5(ai4) g$gl 为 mdg因 g2gll) 声5缈1的k收) 0 omjkxl&j;kiiis ki2|丁 g g 4-2 i a 2 1a - ? 嬴三次cj-t=4五州$24 orc力rasid o o 力履$14oo2wj5ssis, o o ,swq它4耳g简易计算器电路原理图矩阵键盘有16个按键,满足对简易计算器的计算实现,显示部分采用lcd1602,笫一行显示计算的数值符号,笫二行显示计算结果。包回口口 b巨回w 。内叵巨ih 口匚回回口-z8什 y y|b . y i i /- lcd显示模块:本设计采用lcd液晶显示器来显示输
4、出数据。通过d0-d7引脚向lcd写指令 字或写数据以使lcd实现不同的功能或显示相应数据。5、软件部分#include#include#define uchar unsigned charsbit lcden=p27;sbit lcdrs=p2 6;sbit lcdrw=p25;sbit icdbf=po7;uchar temp, key, i, j, flag, fh, k;long a, b, c;uchar code table = l, 2, 3, 0,4, 5, 6, 0,7, 8, 9, 0,0, 0, 0, 0);uchar code table2 口二123+456-789*
5、000/;void delay(uchar ms)(uchar x, y;for(x=ms;x0;x-)for(y=110;y0;y);)/*对lcd 1602的操作 bit busy (void) 判断忙碌bit res;lcdrs=o;lcdrw=l;lcden=l;_nop_();_nop_();res=lcdbf;lcden=o;return res;)void write_inst (uchar cmd) 写命令(while (busy ()=1); 忙碌就等待lcdrs=0;lcdrw=0;lcden=0;_nop_();_nop_();p0=cmd;_nop_();_nop_()
6、;lcden=l;_nop_();nop_();lcden=o;)void write_com(uchar com) 写地址(write_inst(com 0x80);)void write_date (uchar dat) 写数据(while (busy () =1);lcdrs=l;lcdrw=0;lcden=0;p0=dat;_nop_();_nop_();lcden=l;_nop_();_nop_();lcden=0;void init () 初始化lcden=l;write.inst (0x38); /显示 8 位 2 行delay (5);write_inst (0x0c);显示开
7、,光标关,不闪烁delay (5);write_inst (0x06); 增量方式不位移delay (5);write_inst (0x80); 检测忙碌信号delay (5);write_inst(0x01);/delay (5);)/*键盘扫描*/void keyscan ()键盘扫描p3=0xfe;if(p3!=0xfe)delay (100);if (p3!=0xfe)temp=p3&oxfo;switch(temp)(case oxeo:key=o;break;case oxdo:key=l;break;case oxbo:key=2;break;case 0x70:key=3;br
8、eak;)while(p3!=0xfe);if (key-0 key1 key-2)(if(j!=o)(write_inst(0x01);尸0;if(flag=o)(a=a*10+tablekey;b=b*10+tablekey;write_date(table2key);)else(if (k=0)(flag=l;k= 1;fh= 1;write_date(table2key);)p3=0xfd;if(p3!=0xfd)delay(100);if (p3!二oxfd)temp=p3&oxfo;switch(temp)(case oxeo:key=4;break;case oxdo:key=5
9、;break;case oxbo:key=6;break;case 0x70:key=7;break;)while(p3!=0xfd);if (key4 key5 key-6)(if(j!=o)(write_inst(0x01);尸0;if(flag=o)(a=a*10+tablekey;if(flag=l)b=b*10+tablekey;write_date(table2key);)elseif (k=0)(flag=l;k=l;fh=2;write_date(table2key);)p3=0xfb;if(p3!=0xfb)delay(100);if(p3!=0xfb)temp=p3&oxf
10、o;switch(temp)(case oxeo:key=8;break;case oxdo:key=9;break;case oxbo:key=10;break;case 0x70:key=ll;break;)while(p3!=oxfb);if (key-8 key9 key-10)(if(j!=o)(%tite_inst(0x01);户0;if(flag=o)(a=a*10+tablekey;b=b*10+tablekey;write_date(table2key);else(if (k=0)(flag=l;k=l;fh= 3;write_date(table2key);)p3=0xf7
11、;if(p3!=0xf7)(delay(100);if(p3!=0xf7)temp=p3&0xf0;switch(temp)case oxeo:key=12;break;case oxdo:key=13;break;case oxbo:key=14;break;case 0x70:key=15;break;)while(p3!=0xf7);switch(key)(case 12: write_inst (0x01);a=0;b=0;flag=0;fh=o;j=0;k=0; break;case 13:if(flag=o)(a=a*10;write_date(0x30);pl=0;else if
12、 (flag=l)b=b*10;write_date(0x30); break;case 14:j= 1;if(fh=l)(write_com(0x4f);write_inst(0x04);c=a+b;while(c!=0)write_date(0x30+c%10);c=c/10;write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;)else if(fh=2)(write_com(0x4f);write_inst(0x04);if(a-b)0)c=a-b;elsec=b-a;if (c0)write_date(0x30+0);while(c!=0)(write_d
13、ate(0x30+c%10);c=c/10;)if (a-b)*(-l) 0)write_date(0x2d);write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;else if(fh=3)(write_com(0x4f);write_inst(0x04);c=a*b;if (c0)write_date(0x30+0);while(c!=0)write_date(0x30+c%10);c=c/10;)write_date(0x3d);a=0;b=0;flag=o;fh=o;k=0;)else if(fh=4)(write_com(0x4f);write_inst(0x04);i=0;c=(long) (float) a/b) *1000); 计算 c 的 数据if(c=0)write_date(0x30+0);while(c!=0)write_date(0x30+c%10);c=c/10;i+;if(i=3)write_date (0x2e); 写数据if(a/b)=0)write_date(0x30);write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0; break;case 15:if (k=0)(wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 14880-2:2024 EN Optics and photonics - Microlens arrays - Part 2: Test methods for wavefront aberrations
- DB12T 578-2015 液化气体汽车罐车用紧急切断阀检验方法与评定要求
- 新学期学习计划范文汇编6篇
- 智能运输系统 体系结构 服务 编制说明
- 全国连锁洗衣店分布简报 2024 -洗衣行业如何抢占商机 来看这份连锁洗衣店选址布局
- 春节期间通信保障方案
- 雪房子课件教学课件
- 部编版历史九年级上册第六单元 第17课《君主立宪制的英国》说课稿
- 高压电工作业题库
- 宝安区重点中学七年级上学期语文期中考试试卷
- 犟龟-完整版获奖课件
- 工业产品CAD技能三级试题及其评分标准
- 多元统计分析习题及解答
- 汉语词性专题练习(附答案)
- 劳动合同-高管补充协议20110520
- 浙江省温州市地图矢量PPT模板(图文)
- 上海市建设工程项目管理机构管理人员情况表
- 北师大版二年级数学上册第九单元《除法》知识点梳理复习ppt
- 空气能室外机保养维护记录表
- DB37∕T 5162-2020 装配式混凝土结构钢筋套筒灌浆连接应用技术规程
- 9-2 《第三方过程评估淋蓄水检查内容》(指引)
评论
0/150
提交评论