51单片机计算器1602显示程序.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51单片机计算器1602显示程序

#includereg52.h //头文件 #include intrins.h #define uint unsigned int // #define uchar unsigned char sbit e=P1^6; //定义引脚 sbit rs=P3^2; sbit rw=P3^0; sbit busy=P0^7; char i,j,temp,num,num_1; long a,b,c,a1,a2,b1,b2,c1,c2; //a,第一个数 b,第二个数 c,得数 uchar flag1,fuhao;//flag1表示是否有符号键按下,fuhao表征按下的是哪个符号 uchar code table[]={ 1,2,3,0, 4,5,6,0, 7,8,9,0, 0,0,0,0}; uchar code table1[]={ 1,2,3,0x2f-0x30, 4,5,6,0x2a-0x30, 7,8,9, 0x2d-0x30, 0x01-0x30,0,0x3d-0x30,0x2b-0x30}; void delay_jsq(uchar z) // 延迟函数 { uchar y; for(z;z0;z--) for(y=0;y110;y++); } void delay(uchar a) { uchar i; while(a--) { for(i=0;i250;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } //判忙 void lcd_mang() { rs=0; rw=1; e=1; _nop_(); _nop_(); _nop_(); _nop_(); while(P00x80); e=0; } //1602的写 void write_lcd1602(uchar cmd,uchar i) { lcd_mang(); rs=i; rw=0; e=0; _nop_(); _nop_(); e=1; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); _nop_(); _nop_(); e=0; } //1602的初始化 void ini_lcd1602() { write_lcd1602(0x38,0); delay(1); write_lcd1602(0x0c,0); delay(1); write_lcd1602(0x06,0); delay(1); write_lcd1602(0x01,0); delay(1); num_1=0; i=0; j=0; a=0; //第一个参与运算的数 b=0; //第二个参与运算的数 c=0; flag1=0; //flag1表示是否有符号键按下, fuhao=0; // fuhao表征按下的是哪个符号 } // 键盘扫描程序 void keyscan_4_4() { uchar i; P2=0xfe; if(P2!=0xfe) { delay_jsq(5); //20us if(P2!=0xfe) { temp=P20xf0; switch(temp) { case 0xe0:num=0; break; case 0xd0:num=1; break; case 0xb0:num=2; break; case 0x70:num=3; break; } while(P2!=0xfe); //释放按键 if(j!=0) { write_lcd1602(0x01,0); delay(1); j=0; } if(num==0||num==1||num==2)//如果按下的是1,2或3 { if(flag1==0)//没有按过符号键 { a=a*10+table[num]; } else//如果按过符号键 { b=b*10+table[num]; } } else if(num==3)//如果按下的是/ {

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档