热门搜索 :
考研考公
您的当前位置:首页正文

行列式键盘的应用

来源:东饰资讯网


实训报告五

实训目的:

学会如何使用行列式矩阵按键,学会如何在51单片机上编写行列式矩阵按键的c语言,行列式矩阵按键的作用。

实训原理图:

实训步骤:

1. 在ptoteus平台找出所需的元器件

2. 理解该实验的原理,按照原理图画出仿真图;

3. 根据实验要求写出如下程序: #include #include #include

#define uchar unsigned char #define uint unsigned int

uchar code a[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F, 0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; void delay(uint i) //延时程序 {uint j;

for(j=0;juchar checkkey() //检测有没有键按下 {uchar i ; uchar j ; j=0x0f; P2=j; i=P2; i=i&0x0f;

if (i==0x0f) return (0); else return (0xff); }

uchar keyscan() //键盘扫描程序 { uchar scancode; uchar codevalue; uchar a; uchar m=0; uchar k; uchar i,j; if (checkkey()==0) return (0xff); else

{delay(100);

if (checkkey()==0) return (0xff); else {

scancode=0xf7;m=0x00; //键盘行扫描初值,M为列数 for (i=1;i<=4;i++) {

k=0x10; P2=scancode; a=P2; for (j=0;j<4;j++) //J为行数 {

if ((a&k)==0) {

codevalue = m+j; while (checkkey()!=0); return (codevalue); } else k=k<<1; } m=m+4;

scancode=~scancode; //为scancode右移时,移入的数为1 scancode=scancode>>1; scancode=~scancode; } } } }

void main() //主函数 {

int x; P3=0x00; while(1) {

if (checkkey()==0x00) continue; else {

x= keyscan(); P3=a[x]; delay(100); } } }

总结:

通过本次的实训我学会了矩阵式键盘的c编程,它是通过扫描法识别的:首先按键判别有无键按下,再键盘扫描取得闭合键的行、列号,用计算法或查表法得到键值,判断闭合键是否释放,如没释放则继续等待,将闭合键的键值保存,同时转去执行该闭合键的功能。通过这次的实训使我程序设计的过程更熟悉。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top