单片机编程AT89C51 初始时数码管显示0000,按一次KEY1,数码管显示内容加1,按一次K

发布时间:2019-08-27 19:39:18

单片机编程AT89C51 初始时数码管显示0000,按一次KEY1,数码管显示内容加1,按一次K

推荐回答

#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit wela=P2^7;sbit dula=P2^6;sbit key1=P3^4;//独立键盘,看你自己需要按哪个键sbit key2=P3^5;//独立键盘sbit key3=P3^6;//独立键盘uint qian,bai,shi,ge,num;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void init(){ num=0; P3=0xff;}void delay(uchar z){ uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void display(uint n){ qian=n/1000; bai=n%1000/100; shi=n%1000%100/10; ge=n%10; wela=1; P0=0xfe; wela=0; dula=1; P0=table[qian]; dula=0; delay(5); P0=0xff; wela=1; P0=0xfd; wela=0; dula=1; P0=table[bai]; dula=0; delay(5); P0=0xff; wela=1; P0=0xfb; wela=0; dula=1; P0=table[shi]; dula=0; delay(5); P0=0xff; wela=1; P0=0xf7; wela=0; dula=1; P0=table[ge]; dula=0; delay(5); P0=0xff;}void main(){ init(); while(1) { display(num); if(key1==0) { num++; if(num==10000)//加到9999后为0 num=0; while(!key1) display(num); } if(key2==0) { num--; if(num==-1)//减到0后为9999 num=9999; while(!key2) display(num); } if(key3==0) { num=0; while(!key3) display(num); } }}
以上问题属网友观点,不代表本站立场,仅供参考!