基于单片机键盘的的编程_第1页
基于单片机键盘的的编程_第2页
基于单片机键盘的的编程_第3页
基于单片机键盘的的编程_第4页
基于单片机键盘的的编程_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/**按键说明S6-S11 数字0-9的输入S12清零S13等于S14-S17加减乘除程序功能:本程序为简易计算器。可以算整数且正数类型的运算。但是暂时没有实现其连算功能,故在每次运算之后,请按下清零键。*/#include#define uchar unsigned charuchar a0=16,b0=16,c0=16,d0=16,e0=16,f0=16,wei,temp,key,i,j,k;uchar jia,jian,cheng,chu,dengyu,jia0,jian0,cheng0,chu0,qingling;uchar s0,s1

2、,s2,s3,s4,s5; /参加运算的各个位unsigned long qian,hou;/定义参于运算的第一个数和第二个数。sbit dula=P26;sbit wela=P27;sbit beep=P23;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00;void delay(uchar i)for(j=i;j0;j-)for(k=125;k0;k-);void display(uchar a,uchar b,ucha

3、r c,uchar d,uchar e,uchar f) dula=0; P0=tablea; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(5); P0=tableb; dula=1; dula=0; P0=0xfd; wela=1; wela=0; delay(5); P0=tablec; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); P0=tabled; dula=1; dula=0; P0=0xf7; wela=1; wela=0; delay(5); P0=tabl

4、ee; dula=1; dula=0; P0=0xef; wela=1; wela=0; delay(5); P0=tablef; dula=1; dula=0; P0=0xdf; wela=1; wela=0; delay(5);void keyscan() P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=0; wei+; break; case 0xde: key=1; wei+; break; case 0xbe:

5、 key=2; wei+; break; case 0x7e: key=3; wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key=4; wei+; break; case 0xdd: key=5; wei+; break; case 0xbd: key=6; wei+; break;

6、 case 0x7d: key=7; wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=8; wei+; break; case 0xdb: key=9; wei+; break; case 0xbb: qingling=1; /key=10; /wei+; break; case

7、 0x7b: dengyu=1; /key=11; /wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: jia=1; /key=12; / wei+; break; case 0xd7: jian=1; break; case 0xb7: cheng=1; break; case 0x77

8、: chu=1; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; void display0()if(key!=20)switch(wei)case 1: a0=key;b0=16;c0=16;d0=16;e0=16;f0=16;break;case 2: b0=key;c0=16;d0=16;e0=16;f0=16;break;case 3: c0=key;d0=16;e0=16;f0=16;break;case 4: d0=key;e0=16;f0=16;break;case 5: e0=key;f0=16

9、; break;case 6: f0=key;/wei=0;break;key=20;display(a0,b0,c0,d0,e0,f0);if(a0!=16) s5=a0;if(b0!=16) s4=b0;if(c0!=16) s3=c0;if(d0!=16) s2=d0;if(e0!=16) s1=e0;if(f0!=16) s0=f0;void main()uchar gongneng,yunsuan; while(1) keyscan();gongneng=jia|jian|cheng|chu|dengyu|qingling;if(gongneng=0)display0();else

10、yunsuan=jia|jian|cheng|chu;if(yunsuan)a0=16;b0=16;c0=16;d0=16;e0=16;f0=16;/wei=0;if(jia)jia=0;jia0=1;jian0=0;cheng0=0;chu0=0;if(jian)jian=0;jia0=0;jian0=1;cheng0=0;chu0=0;if(cheng)cheng=0;jia0=0;jian0=0;cheng0=1;chu0=0;if(chu)chu=0;jia0=0;jian0=0;cheng0=0;chu0=1;switch(wei)case 6:qian=s5*+s4*10000+s

11、3*1000+s2*100+s1*10+s0;break;case 5:qian=s5*10000+s4*1000+s3*100+s2*10+s1;break;case 4:qian=s5*1000+s4*100+s3*10+s2;break;case 3:qian=s5*100+s4*10+s3;break;case 2:qian=s5*10+s4;break;case 1:qian=s5;break;wei=0;s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;display(a0,b0,c0,d0,e0,f0);/P1=0x55;if(dengyu) dengyu=0; /di

12、splay(16,16,16,16,16,16); switch(wei)case 6:hou=s5*+s4*10000+s3*1000+s2*100+s1*10+s0;break;case 5:hou=s5*10000+s4*1000+s3*100+s2*10+s1;break;case 4:hou=s5*1000+s4*100+s3*10+s2;break;case 3:hou=s5*100+s4*10+s3;break;case 2:hou=s5*10+s4;break;case 1:hou=s5;break;wei=0;s0=0;s1=0;s2=0;s3=0;s4=0;s5=0; if

13、(jia0) jia0=0;hou=qian+hou; if(jian0) jian0=0;hou=qian-hou; if(cheng0) cheng0=0;hou=qian*hou; if(chu0) chu0=0;hou=qian/hou; if(hou10) a0=hou;b0=16;c0=16;d0=16;e0=16;f0=16; else if(hou100)a0=hou/10;b0=hou%10;c0=16;d0=16;e0=16;f0=16;elseif(hou1000)a0=hou/100;b0=hou%100/10;c0=hou%10;d0=16;e0=16;f0=16;elseif(hou10000)a0=hou/1000;b0=hou%1000/100;c0=hou%100/10;d0=hou%10;e0=16;f0=16;elseif(hou)a0=hou/10000;b0=hou%10000/1000;c0=hou%1000/100;d0=hou%100/10;e0=hou%10;f0=16;elseif(hou)a0=hou/;b0=hou%/10000;c0=hou%10000/1000;d0=hou%1000/100;e0=hou%100/10;f0=hou%10; display(a0,b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论