基于c51单片机的简易计算器设计内容摘要:

x) for(y=0。 y125。 y++)。 } void ready() //忙检测 { do { P0=0xff。 RS=0。 RW=1。 EN=0。 delay(5)。 EN=1。 } while(busy==1)。 } void write_(uchar ) //写指令 { P0=。 RS=0。 RW=0。 EN=0。 ready()。 EN=1。 delay(10)。 } void write_data(uchar m) //写数据 {P0=m。 RS=1。 RW=0。 EN=0。 ready()。 EN=1。 } void inital() //初始化 { EN=1。 write_(0x38)。 //【设置 LCD 为 16X2显示 ,5X7 点阵 ,八位数据接口】 delay(10)。 write_(0x38)。 //【 LCD内检较单片机慢,为防止未完成内检就执行指令,延迟,再写指令以完成内检】 write_(0x0c)。 //无光标 write_(0x06)。 //光标后移 write_(0x80)。 write_(0x01)。 //清屏 i=0。 j=0。 a=0。 //第一个参与运算的数 b=0。 //第二个参与运算的数 c=0。 flag=0。 //flag 表示是否有符号键按下 fuhao=0。 //fuhao 表征按下的是哪个符号 } void keyscan() //键盘扫描程序 { P1=0xfe。 //将某一行置低,列全为高 if(P1!=0xfe) //判断是否有键按下 { delay(20)。 //延时去抖动 if(P1!=0xfe) //重新确认 { temp=P1amp。 0xf0。 //【行全置低,判断列是否变化】 switch(temp) { case 0xe0: num=0。 break。 case 0xd0: num=1。 break。 case 0xb0: num=2。 break。 case 0x70: num=3。 break。 } } while(P1!=0xfe)。 if(num==0||num==1||num==2) //如果按下的是 39。 739。 ,39。 839。 或 39。 9 { if(j==1) //确认一次计算完毕,清屏 { write_(0x01)。 j=0。 } if(flag==0) //没有按过符号键 { a=a*10+table[num]。 } else //如果按过符号键 { b=b*10+table[num]。 } } else //如果按下的是 39。 /39。 { flag=1。 fuhao=4。 } i=table1[num]。 write_data(0x30+i)。 } P1=0xfd。 if(P1!=0xfd) { delay(20)。 if(P1!=0xfd) { temp=P1amp。 0xf0。 switch(temp) { case 0xe0: num=4。 break。 case 0xd0: num=5。 break。 case 0xb0: num=6。 break。 case 0x70: num=7。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。