矩阵键盘 陕科大单片机课设 何攀.docx

上传人:b****5 文档编号:7230120 上传时间:2023-01-22 格式:DOCX 页数:14 大小:16.65KB
下载 相关 举报
矩阵键盘 陕科大单片机课设 何攀.docx_第1页
第1页 / 共14页
矩阵键盘 陕科大单片机课设 何攀.docx_第2页
第2页 / 共14页
矩阵键盘 陕科大单片机课设 何攀.docx_第3页
第3页 / 共14页
矩阵键盘 陕科大单片机课设 何攀.docx_第4页
第4页 / 共14页
矩阵键盘 陕科大单片机课设 何攀.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

矩阵键盘 陕科大单片机课设 何攀.docx

《矩阵键盘 陕科大单片机课设 何攀.docx》由会员分享,可在线阅读,更多相关《矩阵键盘 陕科大单片机课设 何攀.docx(14页珍藏版)》请在冰豆网上搜索。

矩阵键盘 陕科大单片机课设 何攀.docx

矩阵键盘陕科大单片机课设何攀

主函数

有问题联系qq158936174

#include

#include"zihan.h"

voidmain()

{

while

(1)

{

num=17;

azhi();

bzhi();

gzhi();

while(g==12)

{

if(a==0)

zhishu0();

g==1;

}

num=17;

while(g==13)

{

display0();

}

}

}

封装函数(与主函数放在一个文件夹中即可)

#ifndef__zihan_H

#define__zihan_H

#include

#defineuintunsignedint

#defineucharunsignedchar

#defineweiP2

#defineduanP0

ucharxdatashuju0[10][5]={0};

ucharxdatashuju1[10][5]={0};

ucharnum=17,temp,a=0,b=0,g,bian,t,bian,i,flag0;

ucharcodetable1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xc0,0xbf,0x90

0xc9,0xc7,};

/*h(20)l*/

/*0123456789abcdef-g*/

ucharcodetable2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};/*¶¨ÒåÐèÒªµãÁÁµÄÊýÂë¹Ü*/

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)//ÑÓ³Ùº¯Êý

for(y=50;y>0;y--);

}

voiddisplay(ucharweil,ucharduanl,bitdp)//ÏÔʾº¯Êý£¨Î»Öã¬Êý¾Ý£¬ÊÇ·ñÓеã¶ù£©

{

if(dp==1)

duan=(table1[duanl]&0x7f);

else

duan=table1[duanl];

wei=table2[weil-1];

delay

(1);

}

voiddisplayhello()//显示hello

{

display(1,20,0);

delay(3);

display(2,14,0);

delay(3);

display(3,21,0);

delay(3);

display(4,21,0);

delay(3);

display(5,0,0);

delay(3);

display(1,18,0);

delay(3);

}

voiddisplayab()//显示前两项

{

display(1,a,0);

delay

(1);

display(2,b,0);

delay

(1);

display(3,18,0);

delay

(1);

}

/*************************

键盘扫描函数

*************************/

ucharkeyscan()

{

P1=0xfe;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xee:

num=0;

break;

case0xde:

num=1;

break;

case0xbe:

num=2;

break;

case0x7e:

num=3;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1=0xfd;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xed:

num=4;

break;

case0xdd:

num=5;

break;

case0xbd:

num=6;

break;

case0x7d:

num=7;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1=0xfb;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xeb:

num=8;

break;

case0xdb:

num=9;

break;

case0xbb:

num=10;

break;

case0x7b:

num=11;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1=0xf7;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xe7:

num=12;

break;

case0xd7:

num=13;

break;

case0xb7:

num=14;

break;

case0x77:

num=15;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

}

if((num>=0)&&(num<17))

returnnum;

elsereturn17;

}

voidazhi()

{

while(keyscan()==17)

{

display(1,a,1);//Ñ¡ÔñÊ×λÊý×Öa

delay(5);

a=keyscan();

if(a<=1&&a>=0)

num=16;

elsenum=17;

}

num=17;

}

voidbzhi()

{

while(keyscan()==17)//Ñ¡ÔñµÚ¶þλb

{

display(1,a,0);

delay(5);

display(2,b,1);

b=keyscan();

if(b<=9&&b>=0)

num=16;

elsenum=17;

}

num=17;

}

voidgzhi()

{

while(keyscan()==17)//Ñ¡Ôñ¹¦ÄÜλg

{

displayab();

g=keyscan();

if(g==12||g==13)

num=16;

elsenum=17;

}

num=17;

}

voiddisplaygood()//完成置数显示good

{

displayab();

delay

(2);

display(4,18,0);

delay

(2);

display(5,19,0);

delay

(2);

display(6,0,0);

delay

(2);

display(7,0,0);

delay

(2);

display(8,13,0);

delay

(2);

}

voidzhishu0()//0功能的置数

{

flag0=0;

i=0;

while(flag0==0)

{

while(i==0)

{

bian=keyscan();

displayab();

delay(5);

display(4,bian,1);

delay(5);

shuju0[b][i]=bian;

if(keyscan()==14)

{

delay(10);

if(keyscan()==14)

i++;

}

}

num=17;

while(i==1)

{

bian=keyscan();

displayab();

delay(5);

display(4,shuju0[b][0],0);

delay(5);

display(5,bian,1);

delay(5);

shuju0[b][i]=bian;

if(keyscan()==14)

{

delay(10);

if(keyscan()==14)

i++;

}

}

num=17;

while(i==2)

{

bian=keyscan();

displayab();

delay(5);

display(4,shuju0[b][0],0);

delay(5);

display(5,shuju0[b][1],0);

delay(5);

display(6,bian,1);

delay(5);

shuju0[b][i]=bian;

if(keyscan()==14)

{

delay(10);

if(keyscan()==14)

i++;

}

}

num=17;

while(i==3)

{

bian=keyscan();

displayab();

delay(5);

display(4,shuju0[b][0],0);

delay(5);

display(5,shuju0[b][1],0);

delay(5);

display(6,shuju0[b][2],0);

delay(5);

display(7,bian,1);

delay(5);

shuju0[b][i]=bian;

if(keyscan()==14)

{

delay(10);

if(keyscan()==14)

i++;

}

;

}

num=17;

while(i==4)

{

bian=keyscan();

displayab();

delay(5);

display(4,shuju0[b][0],0);

delay(5);

display(5,shuju0[b][1],0);

delay(5);

display(6,shuju0[b][2],0);

delay(5);

display(7,shuju0[b][3],0);

delay(5);

display(8,bian,1);

delay(5);

shuju0[b][i]=bian;

if(keyscan()==14)

{

delay(10);

if(keyscan()==14)

i++;num=17;

}

}

while(i==5)

{

displaygood();

if(keyscan()==14)

{

delay(10);

if(keyscan()==14)

i++;

}

}

num=17;

i=0;

flag0=1;

}

}

voiddisplay0()//零功能的显示

{

uchari;

for(i=0;i<5;i++)

{

displayab();

display(4+i,shuju0[b][i],0);

delay(3);

}

}

voiddisplay1()//一功能的显示

{

uchari;

for(i=0;i<5;i++)

{

if(i!

=2)

{

displayab();

display(4+i,shuju1[b][i],0);

delay(3);

}

else

{

displayab();

display(4+i,shuju1[b][i],1);

delay(3);

}

}

}

#endif

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1