基于51单片机1602液晶显示简易计算器设计.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于51单片机1602液晶显示简易计算器设计.pdf》由会员分享,可在线阅读,更多相关《基于51单片机1602液晶显示简易计算器设计.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.#include#include#define uint unsigned int#define uchar unsigned char#define PI 3.141592 sbit RS=P20;sbit RW=P21;sbit EN =P22;sbit led=P24;sbit speek=P37;uchar table0=Welcome to use;uchar table1=made by Ms.Li;uchar table2=error;uchar count;void main(void)uchar error=0,
2、i,first=0,dot1,dot2,dot1_num,dot2_num,minus1,minus2;/错 误 标志、第一次清屏标志、小数点标志以及小数点个数负号标志、负号个数uchar Sin,Cos,Tan,ln;uchar Key_num,last_key_num;/键号uchar flag=0,equal_flag;/运算符、等于符double num1=0,num2=0,num=0,result=0,save_result;/第一个数、第二个数、计算结果uchar first_num=0,Ans=0,second_num=0;InitLcd();EA=1;ET0=1;TMOD=0X
3、01;TH0=(65536-500)/256;TL0=(65536-500)%256;write_com(0 x80+0 x40+15);write_Dat(0);write_com(0 x80);while(1)while(key_scan()=0 xff);TR0=1;if(first=0)first=1;write_com(0 x01);Key_num=key_scan();switch(key_scan()文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.case 1:if(last_key_num!=Key_num)write_Dat(l);write_Dat(n);l
4、n=1;break;case 2:if(last_key_num!=Key_num)write_Dat(s);write_Dat(i);write_Dat(n);Sin=1;break;case 3:if(last_key_num!=Key_num)write_Dat(c);write_Dat(o);write_Dat(s);Cos=1;break;case 4:if(last_key_num!=Key_num)write_Dat(t);write_Dat(a);write_Dat(n);Tan=1;break;case 5:if(last_key_num!=Key_num)write_Dat
5、();flag=5;break;case 6:write_Dat(7);num=7;break;case 7:write_Dat(8);num=8;break;case 8:write_Dat(9);num=9;break;case 9:if(last_key_num!=Key_num)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.write_Dat(+);flag=1;break;case 10:if(last_key_num!=Key_num)write_Dat(T);flag=6;break;case 11:write_Dat(4);num=4;break;case 1
6、2:write_Dat(5);num=5;break;case 13:write_Dat(6);num=6;break;case 14:if(last_key_num!=Key_num)write_Dat(-);flag=2;break;case 15:if(last_key_num!=Key_num)if(equal_flag=1)write_com(0 x01);write_com(0 x80);write_Dat(A);write_Dat(n);write_Dat(s);write_Dat(=);save_result=result;else if(Key_num!=1&Key_num!
7、=2&Key_num!=3&Key_num!=4&Key_num!=22&Key_num!=23&Key_num!=25)write_Dat(A);write_Dat(n);write_Dat(s);if(flag=0)num1=save_result;first_num=1;else 文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.num2=save_result;second_num=1;break;case 16:write_Dat(1);num=1;break;case 17:write_Dat(2);num=2;break;case 18:write_Dat(3);n
8、um=3;break;case 19:if(last_key_num!=Key_num)write_Dat(*);flag=3;break;case 21:write_Dat(0);num=0;break;case 22:if(last_key_num!=Key_num)if(flag=0)minus1+;if(minus1=1)write_Dat(-);else minus2+;if(minus2=1)write_Dat(-);break;case 23:if(last_key_num!=Key_num)if(flag=0)dot1+;文档来源为:从网络收集整理.word 版本可编辑.欢迎下
9、载支持.if(dot1=1)write_Dat(.);else dot2+;if(dot2=1)write_Dat(.);break;case 24:if(last_key_num!=Key_num)write_Dat(/);flag=4;break;case 25:if(last_key_num!=Key_num)write_Dat(=);equal_flag=1;break;if(Key_num!=1&Key_num!=2&Key_num!=3&Key_num!=4&Key_num!=15&Key_num!=22&Key_num!=23&Key_num!=25)/第一个数 if(flag=
10、0)num1=num1*10+num;num=0;if(dot1!=0)dot1_num+;first_num=1;if(flag!=0)num2=num2*10+num;文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.num=0;if(dot2!=0)dot2_num+;second_num=1;if(equal_flag=1&first_num=1)if(dot1!=0)num1=num1/pow(10,dot1_num);dot1=0;if(dot2!=0)num2=num2/pow(10,dot2_num);dot2=0;if(minus1!=0)num1=num1*(
11、-1);if(minus2!=0)num2=num2*(-1);if(second_num!=0)switch(flag)case 1:result=num1+num2;break;case 2:result=num1-num2;break;case 3:result=num1*num2;break;case 4:if(num2!=0)result=num1/num2;else write_com(0 x80+0 x40+10);for(i=0;i0)result=log(num1)+0.005;else write_com(0 x80+0 x40+10);for(i=0;i50)TR0=0;
12、count=0;void delay(uint x)uchar y;while(x-)for(y=0;y120;y+);void write_com(unsigned char c)RS=0;RW=0;EN=1;delay(5);P0=c;EN=0;void write_Dat(unsigned char c)RS=1;RW=0;EN=1;delay(5);文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.P0=c;EN=0;void InitLcd()write_com(0 x38);/display mode write_com(0 x06);/显示光标移动位置 write_
13、com(0 x0c);/显示开及光标设置 write_com(0 x01);/显示清屏 uchar key_scan()uchar key_num=0 xff;uint temp;P3=0 x03;P1=0 xe0;temp=(P38)|P1;if(temp&0 x03e0)!=0 x03e0)delay(10);if(temp&0 x03e0)!=0 x03e0)P3=0 x03;/第一行P1=0 xfe;temp=(P38)|P1;switch(temp)case 0 x03de:key_num=1;break;case 0 x03be:key_num=2;break;case 0 x03
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 1602 液晶显示 简易 计算器 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内