ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:21.51KB ,
资源ID:4716540      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4716540.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机1602液晶显示简易计算器设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机1602液晶显示简易计算器设计.docx

1、基于51单片机1602液晶显示简易计算器设计R2TRTLCEd3 .T&T-灼U1WXTMIOWXT.U2P2TM,%二的层STMTPS”C3::4-幵 / AC6:A IAN M.V1X&rxairnfixvnxvnj2crriF3“Tnew灼#include#includemath h#define uint unsigned int#define uchar unsigned chardefine PI 3. 141592sbit RS 二 P2P;sbit RW 二 P2l;sbit EN 二 P22;sbit led=P24;sbit speek=P3*7;uchar tableO.

2、j = Welcome to use; uchar tablelrj = /zmade by Ms. Li; uchar table2Lj = /zerrorz,;uchar count;void main(void)uchar error=0, i, first=0, dotl, dot2, dotl_num, dot2_num, minusl, minus2;/错 误 标 志、第一次淸屏标志、小数点标志以及小数点个数负号标志、负号个数uchar Sin, Cos, Tan, In;uchar Key_num, ast_key_num;/键号uchar flag=0, equal_flag;

3、运算符、等于符double numlO, num2=0, numO, result=0, save_result; /第一个数、第二个数、计算结果uchar first_num二0, Ans二0, second_num=0;InitLcdO ;EA二 1;ETO二1;TMOD二0X01;THO=(65536-500)/256;TLO=(65536-500)%256;write_com(0x80+0x40+15); write_Dat ( O);write_com(0x80);while(l)while(key_scan0 =0xff);TRO=1;if(first=0)first=l; wri

4、te_com(0x01);Key_num=key_scan 0;switch(key_scan 0)case 1:if (last_key_num! =Key_num) uTite_Dat C 1); uTite_Dat C n); ln=l;break;case 2:if (last_key_num! =Key_num) write_Dat ( s); write_Dat ( i); write_Dat ( n ); Sin=l;break;case 3:if (last_key_num! =Key_num) write_Dat ( c ); write_Dat ( o); write_Da

5、t ( s); Cos=l;break;case 4:if (last_key_num! =Key_num)write_Dat ( t ); write_Dat ( a ); write_Dat ( n );Tan=l;break;case 5:if (last_key_num! =Key_num)writjDat ( r );flag=5;break;case 6:write_Dat( 7);num=7;break; case 7:write_Dat C 8);num二8;break; case 8:write_Dat ( 9*) inum;break; case 9:if (last_ke

6、y_num!二 Key_num)write_Dat ( +);flag=l;break;case 10:if(last_key_num!=Key_num)write_Dat ( T );flag=6;break;case 11:write_Dat C 4):num=4;break; case 12:write_Dat C o ) intimS;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!

7、=Key_num)if(equal_flag=l) write_com(0x01); write_com(0x80); write_Dat ( A); write_Dat ( n); write_Dat ( s); write_Dat (=); save_result=result;else if(Key_num!=l&Key_num!=2&Key_num!=3&Key_num!=4&Key_num!=22&Key_num!=23 &Key_num!二25)write_Dat( A) ;write_Dat C n ) ;write_Dat ( s); if(flag=O)numl=save_r

8、esult; first_num=l;elsenum2=save_re sult; second_num=l;break;case 16:write_Dat(* V):num=l;break;case 17:write_Dat( 2):num=2;break;case 18:write_Dat(* 3):num=3;break;case 19:if(last_key_num!=Key_num)write_Ddt ( *); flag=3;break;case 21:write_Dat ( O) ;num二0;break;case 22:if (last_key_num! =Key_num)辻(

9、flag=O) minusl+; if(minusl=l)writjDat ( -);elseminus2+;if(minus2=l)uTite_Dat -); break;case 23:if (last_key_num!=Key_num)if(flag=O)dotl+;if(dotl=l)write_Dat();elsedot2+;辻(dot2=l)uTite_Dat(); break;case 24:if (last_key_num! =Key_num)write_Dat ( /);flag二4;break;case 25:if (last_key_num! =Key_num) writ

10、e_Dat (=); equal_flag=l;break;if (Key_num! =l&Key_num! =2&Key_num! =3&Key_num! =4&Key_num! =15&Key_num !=22 &Key_num 匸23&Key_num!二 25) /第一个数if(flag=O)num1二num1*1O+num;num二0;if(dotl!=0)dotl_num+;first_num=l;if(flag!二0)num2=num2*l0+num;num=0;if(dot2!=0)dot2_num+;second_num=l;if (equal_f1ag=l&f i r s t

11、_num=1)if(dotl!=0)numl=numl/pow(10, dotl_num):dotl=0;if(dot2!=0)num2=num2/pow(10, dot2_num);dot2=0;if(minusl!=0)numl=numl*(-l);if(minus2!=0) num2=num2*(-l);if(second_num!=0)switch(flag)case 1: resul t=numl+nuni2: break;case 2: result=numl-nuni2: break;case 3: result=numl*nuni2; break;case 4:if(num2!

12、=0)result =num1/num2;elsewrit e_c om(0x80+0x40+10);for(i=0;i0)result=log(numl)+0. 005; elsewrite_com(0x80+0x40+10); for(i=0;i50)TRO二0; 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 writeDat(unsigned char c) RS二

13、1;RW二 0;EN=1;delay (5);P0 二c;EN=0;void InitLcdOwrite_com(0x38); /display modewrite_com(0x06); /显示光标移动位置 write_com(0x0c); /显示开及光标设置 write_com(0x01); /显示淸屏uchar key_scan()uchar key_num=0xff;uint temp;P3=0x03;Pl=OxeO; temp=(P38) Pl; if(temp&0x03e0)!=0x03e0)delay (10);if(temp&0x03e0)!=0x03e0)P3=0x03; /第

14、一行Pl=0xfe;temp=(P38) Pl;switch(temp)case 0x03de:key_num=l; break;case 0x03be:key_num=2; break;case OxO37e:key_num=3; break;case 0x02fe:key_num=4; break;case 0x01fe:key_num=5; break;P3=0x03: /第二行Pl=0xfd;temp=(P38) Pl;switch(temp)case 0x03dd:keyumG; break;case 0x03bd:key_num=7; break;case OxO37d:key_n

15、um=8; break;case 0x02fd:key_num=9; break;case 0x01fd:key_num=10; break;P3=0x03; /第三行Pl=0xfb;temp=(P38) Pl;break; break; break; break; break;switch(temp)case 0x03db:key_num=l1case 0x03bb:key_num=12case 0x037b:key_num=13case 0x02fb:key_num=14case 0x01fb:key_num=15 P3=0x03;/第四行Pl=0xf7;temp=(P38) Pl; sw

16、itch(temp)case0x03d7:key_num=16;break;case0x03b7:key_num=17;break;case0x0377:key_num=18;break;case0x02f7:key_num=19;break;case0x01f7:key_num=20;break;jP3=0x03;Pl=0xef;/第五行temp=(P38) Pl; switch(temp)casecasecasecasecase0x03cf:key_num=21;0x03af:key_num=22;0x036f:key_num=23;0x02ef:key_num=24;0x0lef:key

17、_num=25;break; break; break; break; break;returnkey_num;void display(double Data) uchar xs=0, fs=0,i;if(Data(long)Data)xs=l;09if(Data10)if(xs=l)Data=Data*100; write_.com (0x80+0x40+11); 辻(fs=l) write_Dat(-);elsewrite_Dat ();write_Dat(long)Data/100+* 0*);writeDat ();write_Dat(long)Data/10%10+,0);writ

18、e_Dat(long)Data弔10+ 0*);else if (xs=0)write_com(0x80+0x40+14);if(fs=l)writeDat ( -);elsewrite_Dat ();write_Dat(long)Data+,0,);else 辻(Data100) /10、99if (xs=l)Data=Data*100;write_com(0x80+0x40+10);if(fs=l)write_Datelsewrite_Dat ();write_Dat(long)Data/1000+,O);write_Dat(long)Data/100%10+,0);write_Dat (

19、);write_Dat(long)Data/10%10+,O); writeDat(long)Data%10+* 0);else if (xs=0)write_com(0x80+0x40+13);if(fs=l)write_Datelsewrite_Dat ();write_Dat (long)Data/10+* 0);write_Dat (long)Data%10+* O);辻(xs=l)Data=Data*100;write_com(0x80+0x40+9);if(fs=l)write_Datelsewrite_Dat ();writjDat (long)Data/10000+ O); w

20、rite_Dat(long)Data/1000%10 +O); write_Dat(long)Data/100%10+,O);write_Dat ();write_Dat(long)Data/10%10+,O);write_Dat(long)Data%10+* 0*);else if (xs=0)write_com(0x80+0x40+12); if(fs=l)write_Datelsewrite_Dat ();write_Dat(1ong)Data/100+,O); write_Dat(1ong)Data/10%10+,O);write_Dat(long)Data%10+* O);else

21、辻(Data10000) 7/10009999if (xs=l)Data=Data*100;wr ite_com(0x80+0x40+8);if(fs=l)writeDatelsewrite_Dat ();write_Dat (long)Data/100000+,O);writeDat(long)Data/10000%10+,O);write_Dat(long)Data/1000%10 +O);write_Dat(long)Data/100%10+,0*);write_Dat ();write_Dat(long)Data/10%10+,O);write_Dat(long)Data%10+* 0

22、,);else if (xs=0)write_com(0x80+0x40+11);if(fs=l)write_Datelsewrite_Dat ();write.Dat(long)Data/1000+,CT ); write.Dat(long)Data/100%10+,0*);write.Dat (long)Data/10%10+,O);write_Dat(long)Data%10+,0);else 辻(Data 0); write_Dat(long)Data/100000%10+,0*); write_Dat(long)Data/10000%10+ O);write_Dat(long)Dat

23、a/1000%10 +0);write.Dat (long)Data/100%10+,O);write_Dat ();write_Dat (long)Data/10%10+,0*); write_Dat(long)Data%10+* 0*);else if(xs=0)write_com(0x80+0x40+10);if(fs=l)write_Dat ();elsewrite_Dat ();write_Dat(long)Data/10000+* O); write.Dat (long)Data/1000%10+O); write_Dat(long)Data/100%10+,O); write_D

24、at(long)Data/10%10+,O); write.Dat(long)Data%10+* O);else 辻(Data1000000) /100000999999if (xs=l)Data=Data*100;writ e_c om(0x80+0x40+7);辻(fs=l)write_Dat ();elsewrite_Dat ();write_Dat (仃ong) Data/10000000+ 0); write_Dat(long)Data/1000000%10+? 0); write_Dat(long)Data/100000%10+O); write_Dat(long)Data/10000%10+ 0); write_Dat(long)Data/1000%10 +0); write_Dat(long)Data/100%10+,O); write_Dat ();write.Dat (long)Data/100000%10+,0*); write.Dat(long)Data/100000%10+,O); write_Dat(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1