您的位置 首页 FPGA

51单片机C编程(七、5个IO口扫描10个按键)

程序名称:5个IO口扫描10个按键作者:jumpmysoul日期:2009年5月22日程序功能:用P1口的P00~P04实现10个按键的扫描,并将键值用一个数码管

程序称号:5个IO口扫描10个按键

者:jumpmysoul
期:2009年5月22日
程序功用:用P1口的P00~P04完成10个按键的扫描,并将键值用一个数码管显现

proteus仿真电路如下:

#include
#define uchar unsigned char
#define uint unsigned int
#define SEG P0

uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x08};//共阳数码管段码

void delay1ms(uint);
uchar press_key();
void display();
/
uchar press_key()
{
uchar keyval;

P1=0xfe;//榜首行送0
if(P1!=0xfe)
{
delay1ms(1);
if(P1!=0xfe)
{
if(P1==0xfc)//‘1’按下
keyval=1;
else if(P1==0xfa)// ‘2’按下
keyval=2;
else if(P1==0xf6)// ‘3’按下
keyval=3;
else if(P1==0xee)// ‘4’按下
keyval=4;
}
}

P1=0xfd;//第二行送0
if(P1!=0xfd)
{
delay1ms(1);
if(P1!=0xfd)
{
if(P1==0xf9)//‘5’按下
keyval=5;
else if(P1==0xf5)// ‘6’按下
keyval=6;
else if(P1==0xed)//‘7’按下
keyval=7;
}
}

P1=0xfb;//第三行送0
if(P1!=0xfb)
{
delay1ms(1);
if(P1!=0xfb)
{
if(P1==0xf3)// ‘8’按下
keyval=8;
else if(P1==0xeb) // ‘9’按下
keyval=9;
}
}

P1=0xf7;//第四行送0
if(P1!=0xf7)
{
delay1ms(1);
if(P1!=0xf7)
{
if(P1==0xe7)//‘10’按下
keyval=10;
}
}

return(keyval);//回来键值
}
/***************************************键值显现子函数*********************

//进口参数:无
//回来参数:无
//调用子函数:press_key()
//函数功用:将键值用数码管显现出来
//*********************************************************************************
void display()
{
uchar i;
i=press_key();
SEG=tab[i];
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/256910.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部