欢迎来到天天文库
浏览记录
ID:47519919
大小:168.50 KB
页数:3页
时间:2020-01-12
《用扫描法读出4×4矩阵键盘,在数码管显示按键值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、读出4×4矩阵键盘,在数码管显示按键值//电路说明如下。//单片机:使用51系列兼容的即可;//4×4矩阵键盘:接在P1口;//两位数码显示器:P0口输出七段码,P2口输出位选码。//==============================================================//C语言程序如下。/************************************************************* *文件名:KEY_LED.c *功能:对4×4矩阵键盘进行输出,在数码管后两位显示按键值。 ******
2、********************************************************/ #include #include #defineuintunsignedint #defineucharunsignedchar//ucharcodetable[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; ucharcodetable[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x
3、80,0x90}; /************************************************************** *名称:Delay_1ms() *功能:延时子程序,延时时间为1ms*x *输入:x(延时一毫秒的个数) *输出:无 ***************************************************************/ voidDelay_1ms(uintx) { uinti; ucharj; for(i=0;i4、); } /************************************************************** *名称:Keyscan() *功能:P1外接4×4按键,按照扫描法读出键值*输出:按键值0~15/如无键按下,返回16***************************************************************/ ucharKeyscan(void) { uchari,j,temp,Buffer[4]={0xef,0xdf,0xbf,0x7f}; for(j=0;j<4;5、j++){//循环四次 P1=Buffer[j]; //在P1高四位分别输出一个低电平 temp=0x01; //计划先判断P1.0位 for(i=0;i<4;i++){//循环四次 if(!(P1&temp)) //从P1低四位,截取1位 return(i+j*4);//返回取得的按键值 temp<<=1; //判断的位,左移一位 }} return16; //判断结束,没有键按下,返回166、} //呵呵,实质性的语句不过8行,就是这么简练!/************************************************************** *名称:Display(uchark) *功能:将参数分成十位、个位分别显示*输入:k(键盘数值) *输出:P0口输出七段码,P2口输出位选码***************************************************************/ voidDisplay(uchark){ P2=0; //消隐 7、 P0=table[k/10]; P2=0x02;Delay_1ms(5); //显示5ms十位 P2=0; //消隐 P0=table[k%10]; P2=0x01;Delay_1ms(5); //显示5ms个位 }/************************************************************** *名称:Main() *功能:主函数 *****************************************************8、**********/ voidMain(void) { ucharKey_Value=
4、); } /************************************************************** *名称:Keyscan() *功能:P1外接4×4按键,按照扫描法读出键值*输出:按键值0~15/如无键按下,返回16***************************************************************/ ucharKeyscan(void) { uchari,j,temp,Buffer[4]={0xef,0xdf,0xbf,0x7f}; for(j=0;j<4;
5、j++){//循环四次 P1=Buffer[j]; //在P1高四位分别输出一个低电平 temp=0x01; //计划先判断P1.0位 for(i=0;i<4;i++){//循环四次 if(!(P1&temp)) //从P1低四位,截取1位 return(i+j*4);//返回取得的按键值 temp<<=1; //判断的位,左移一位 }} return16; //判断结束,没有键按下,返回16
6、} //呵呵,实质性的语句不过8行,就是这么简练!/************************************************************** *名称:Display(uchark) *功能:将参数分成十位、个位分别显示*输入:k(键盘数值) *输出:P0口输出七段码,P2口输出位选码***************************************************************/ voidDisplay(uchark){ P2=0; //消隐
7、 P0=table[k/10]; P2=0x02;Delay_1ms(5); //显示5ms十位 P2=0; //消隐 P0=table[k%10]; P2=0x01;Delay_1ms(5); //显示5ms个位 }/************************************************************** *名称:Main() *功能:主函数 *****************************************************
8、**********/ voidMain(void) { ucharKey_Value=
此文档下载收益归作者所有