1、掌握矩阵键盘使用单片机原理及应用实验五专业:15自动化姓名:学号:指导老师:李素敏中央民族大学信息工程学院一、实验目的掌握矩阵键盘使用二、实验仪器1、 PC机2、 STC89C52单片机三、实验步骤1、 熟悉单片机硬件结构,匹配管脚2、 根据实验要求编写程序3、 编译成功后烧录至单片机 四、实验要求 对实验板上4*4矩阵键盘的16个按键S6-S21进行按键次数统计。键号06、0721用最左边2位数码管显示,按键次数用右侧4位数码管显示。有键按下时,显示相应键号和该键累计按键次数,没键按下时,数码管不亮。(无论键号还是按键次数都用其十进制数显示。)5、实验结果#includesbit dula=
2、P26;sbit wela=P27;unsigned char i=100;unsigned char j,k,temp,key;unsigned char jishu16; unsigned char p=-1;void delay(unsigned char i) for(j=i;j0;j-) for(k=125;k0;k-);unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void display(unsigned char
3、num,unsigned char jishu) unsigned char qian,bai,shi,ge,shi1,ge1; unsigned i; for(i=0;i20;i+) shi1=num/10; ge1=num%10; qian=jishu/1000; bai=(jishu-1000*qian)/100; shi=(jishu-1000*qian-100*bai)/10; ge=jishu%10; P0=tableshi1; dula=1; dula=0; P0=0xfe; wela=1; wela=0; delay(5); P0=tablege1; dula=1; dula=
4、0; P0=0xfd; wela=1; wela=0; delay(5); P0=tableqian; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); P0=tablebai; dula=1; dula=0; P0=0xf7; wela=1; wela=0; delay(5); P0=tableshi; dula=1; dula=0; P0=0xef; wela=1; wela=0; delay(5); P0=tablege; dula=1; dula=0; P0=0xdf; wela=1; wela=0; delay(5); void m
5、ain() dula=0; wela=0; while(1) P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=6; jishu0+; p=0; break; case 0xde: key=7; jishu1+; p=1; break; case 0xbe: key=8; jishu2+; p=2; break; case 0x7e: key=9; jishu3+; p=3; break; while(temp!=0xf0
6、) temp=P3; temp=temp&0xf0; P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key=10; jishu4+; p=4; break; case 0xdd: key=11; jishu5+; p=5; break; case 0xbd: key=12; jishu6+; p=6; break; case 0x7d: key=13; jishu7+; p=7; break; while(temp!=0xf0
7、) temp=P3; temp=temp&0xf0; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=14; jishu8+; p=8; break; case 0xdb: key=15; jishu9+; p=9; break; case 0xbb: key=16; jishu10+; p=10; break; case 0x7b: key=17; jishu11+; p=11; break; while(temp!=
8、0xf0) temp=P3; temp=temp&0xf0; P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: key=18; jishu12+; p=12; break; case 0xd7: key=19; jishu13+; p=13; break; case 0xb7: key=20; jishu14+; p=14; break; case 0x77: key=21; jishu15+; p=15; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; display(key,jishup); 6、实验感想实验做起来有点困难,这是一道比较综合的题目,刚开始时第一排的按键每次都不正确,直到老师讲解拔下下载线,才开始正常,修改了很多次。感觉按键确认的程序巧妙,感觉写程序最重要的是思维能力的培养。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1