完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #include #include #include <1602.H> unsigned long tebla[10]; unsigned long num=0; unsigned char key=0; unsigned long a1,a2,a3,a4,a5,a6; void delay1(void) { int i; for(i=0;i<600;i++); } void delay2(void) { unsigned char i,j,k; for(i=0;i<250;i++) for(j=0;j<20;j++) for(k=0;k<20;k++); } void keyscan(void) { unsigned char n; P1=0xff; P1=0xfe; delay1(); n=P1; n=n&0xf0; while(n!=0xf0) { switch(n) { case(0xe0):num=num*10+1;break; case(0xd0):num=num*10+2;break; case(0xb0):num=num*10+3;break; case(0x70):key=1;break; } P1=0xff; delay2(); n=P1; n=n&0xf0; } P1=0xff; P1=0xfd; n=P1; n&=0xf0; while(n!=0xf0) { switch(n) { case(0xe0):num=num*10+4;break; case(0xd0):num=num*10+5;break; case(0xb0):num=num*10+6;break; case(0x70):key=2;break; } P1=0xff; delay2(); n=P1; n=n&0xf0; } P1=0xff; P1=0xfb; n=P1; n&=0xf0; while(n!=0xf0) { switch(n) { case(0xe0):num=num*10+7;break; case(0xd0):num=num*10+8;break; case(0xb0):num=num*10+9;break; case(0x70):key=3;break; } P1=0xff; delay2(); n=P1; n=n&0xf0; } P1=0xff; P1=0xf7; n=P1; n&=0xf0; while(n!=0xf0) { switch(n) { case(0xe0):num=0; key=0;break; case(0xd0):num=num*10;break; case(0xb0):key=5;break; case(0x70):key=4;break; } P1=0xff; delay2(); n=P1; n=n&0xf0; } } void Delayms(unsigned int xms) { unsigned char i, j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void Order(unsigned char com)//指令 { rs=0; rw=0; Delayms(5); DAT=com; en=1; Delayms(5); en=0; } void WriteDat(unsigned char dat)//数据 { rs=1; rw=0; Delayms(5); DAT=dat; en=1; Delayms(5); en=0; } void DisPlay(long num,unsigned char *str) { str[0]=num/1000000000%10+0x30; str[1]=num/100000000%10+0x30; str[2]=num/10000000%10+0x30; str[3]=num/1000000%10+0x30; str[4]=num/100000%10+0x30; str[5]=num/10000%10+0x30; str[6]=num/1000%10+0x30; str[7]=num/100%10+0x30; str[8]=num/10%10+0x30; str[9]=num%10+0x30; } void Write1602_Str(unsigned char addr,unsigned char length,unsigned char *pbuf) { uchar i; Order(addr); for(i=0;i WriteDat(pbuf[i]); } } void Init_1602() { Order(0x38);//显示模式设置 Order(0x0c);//开显示、不显示光标、 Order(0x06);//指针加1 Order(0x01);//显示清屏 } void T0_time()interrupt 1 { TH0=(65536-4587)/256; TL0=(65536-4587)%256; } void main(void) { Init_1602(); TMOD=0x01; TH0=(65536-4587)/256; TL0=(65536-4587)%256; EA=1; ET0=1; TR0=1; num=0; while(1) { keyscan(); DisPlay(num,tebla); Write1602_Str(0X80+3,strlen(tebla),tebla); a1=num; if(key==1) { a2=0; a2=num; num=0; key=0; } if(key==2) { a3=0; a3=num; num=0; key=0; } if(key==3) { a4=0; a4=num; num=0; key=0; } if(key==4) { a5=0; a5=num; num=0; key=0; } if(key==5) { while(a2!=0) {a6=a1+a2;break; } while(a3!=0) {a6=a1-a3;break; } while(a4!=0) {a6=a1*a4;break; } while(a5!=0) {a6=a1/a5;break; } num=a6; key=0; } } } |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
11856 浏览 2 评论
4283 浏览 3 评论
3467 浏览 5 评论
8544 浏览 47 评论
4063 浏览 9 评论
449浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 21:43 , Processed in 0.591875 second(s), Total 60, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号