资源描述:
《键盘与数码管动态显示实验 单片机 程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、键盘与数码管动态显示实验实验内容:根据电路图图1和图2编写按键程序,左侧第一位数码管显示独立式按键编号“1”、“2”、“3”、“4”,哪一个按下,对应的编号显示在左侧第一位数码管(左侧第二个数码管为全灭状态),右侧二位数码管显示“00--15”的十进制键值,无键按下时数码管为全灭状态;动态显示用定时/计数器的定时器中断完成。图1动态显示电路图图2键盘接口电路图评分表序号评分项目分值评分备注1动态显示实验201、电路图的理解2、动态显示的原理3、应用定时/计数器中断2独立式按键实验201、电路图的理
2、解2、键值的准确3、显示3矩阵式按键实验201、电路图的理解2、键值的准确3、显示#includeunsignedcharcodetable_duan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0XFF,};unsignedcharcodetable_bit[]={0xef,0xdf,0xbf,0x7f};unsignedchardis_buf[4];uns
3、ignedchari;unsignedcharaa,bb,cc,hang,lie;sbitkey1=P2^0;sbitkey2=P2^1;sbitkey3=P2^2;sbitkey4=P2^3;voiddelay_ms(unsignedinti){unsignedcharj;for(i;i>0;i--){for(j=110;j>0;j--);}}voidkey_scan(void){P3=0Xf0;if((P3&0xf0)!=0xf0){delay_ms(5);if((P3&0xf0)!=0xf0
4、){aa=0xfe;for(lie=0;lie<4;lie++){P3=aa;aa=(aa<<1)
5、0x01;bb=P3&0Xf0;if(bb!=0xf0){switch(bb){case0xe0:cc=lie;break;case0xd0:cc=lie+4;break;case0xb0:cc=lie+8;break;case0x70:cc=lie+12;break;default:cc=16;break;}}}}elsecc=16;}elsecc=16;}voidTime0(void)inter
6、rupt1{TH0=(65536-2000)/256;TL0=(65536-2000)%256;P2=0xff;P0=table_duan[dis_buf[i]];P2=table_bit[i];if(++i>3)i=0;}voidinit(void){TMOD=0x01;TH0=(65536-2000)/256;TL0=(65536-2000)%256;EA=1;ET0=1;TR0=1;}voidmain(){unsignedcharnum;init();while(1){key_scan();
7、if(key1==0){delay_ms(10);if(key1==0){num=1;}}elseif(key2==0){delay_ms(10);if(key2==0){num=2;}}elseif(key3==0){delay_ms(10);if(key3==0){num=3;}}elseif(key4==0){delay_ms(10);if(key4==0){num=4;}}else{num=16;}dis_buf[0]=num;dis_buf[1]=16;if(cc!=16){dis_bu
8、f[2]=cc/10;dis_buf[3]=cc%10;}else{dis_buf[2]=16;dis_buf[3]=16;}}}