实验六 键盘扫描显示实验
一、 实验目的
1 、掌握键盘和显示器的接口方法和编程方法。
2 、掌握键盘扫描和LED八段码显示器的工作原理。
二、 实验连线
将JP4和JP8通过8PIN排线连接,JP10和JP3通过8PIN排线连接
三、 实验内容
把矩阵键盘上的按键输入的键码在静态数码管上显示出来。
四、 实验步骤
实验采用线反转法
①打开keil软件---新建工程---新建文件 ②编写程序:
#include #define uint unsigned int #define uchar unsigned char uchar shuzu[3][4]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83} ; uint i; uint j; void delay(uint n){ while(--n); } void keyscan(){ uchar temp; P3=0x0f; delay(1000); temp=P3^0x0f; switch(temp) {case 0x02 : i=0;break; case 0x04 : i=1;break; case 0x08 : i=2;break; default :break; } P3=0xf0; delay(1000); temp=P3^0xf0; switch(temp) 精品资料 ______________________________________________________________________________________________________________ {case 0x10 : j=0;break; case 0x20 : j=1;break; case 0x40 : j=2;break; case 0x80 : j=3;break; default : break; } } main() {P2=0x00; while(1) { P3=0x00; if(P3!=0xf0) keyscan(); P2=shuzu[i][j]; delay(1000); } }保存、编译---生成hex文件 ③连接线,使用下载软件将编好程序载入单片机中。 ④实验现象:(定义按键矩阵中由第一行第一列到第三行第四列(s1-s12)为数值0到11。)按下键盘中任意按键,则八段数码管上显示出其对应的数值。 五、 实验心得及过程遇到问题 实验可以使用扫描法和线反转法两种实现,因扫描法法较为麻烦,故实验采用的是线反转法。在实验室一直无法实现实验。回宿舍后,起初使用的是在一序列中定义好0到11的码值,但结果不稳定,出现了一个按键要按好多次才会显示出正确的码,后改为使用一个三行四列的矩阵,结果就稳定了。具体原因还未了解。 精品资料 ______________________________________________________________________________________________________________ Welcome To Download !!! 欢迎您的下载,资料仅供参考! 精品资料 因篇幅问题不能全部显示,请点此查看更多更全内容