原创 74HC245按键扫描(电子表项目)

2009-6-28 16:54 2480 5 5 分类: MCU/ 嵌入式

//程序说明:用TIMER0中断实现对键盘每隔500MS扫描进行扫描
//返回键值放主程序中处理
#ifndef __keyscan__h__
#define __keyscan__h__


//定义按键的扫描芯片断口
sbit keycs1=P3^2;  //74HC245双向总线发送接收器
sbit keycs2=P3^3; 
sbit keycs3=P1^1;
sbit keycs4=P1^0


sbit key0=P1^0;


sbit key1=P1^1;


sbit key2=P1^2;


sbit key3=P1^3;


sbit key4=P1^4;


sbit key5=P1^5;


sbit key6=P1^6;


sbit key7=P1^7


void timer0() intrrupt 1

    //扫描74HC245时要,要先锁存74H573,防止按键电平干扰影响显示
   uchar i,temp;
      TH0=0X12      //重装值
      TL0=0XEF
      keycs1=1;  //选通74HC245 按键为扬升快捷键 1%、2%、3%。。。。。
      keycs2=0;
      keycs3=0;
      keycs4=0;    //屏蔽其他三个74HC245;
     if(!key1)
{
     incline_flag1=1;
    if(!key2)
{
     incline_flag2=1;
}
     if(!key1)
{
     incline_flag3=1;
    if(!key2)
{
     incline_flag4=1;
}
     if(!key1)
{
     incline_flag5=1;
    if(!key2)
{
     incline_flag6=1;
}
     if(!key1)
{
     incline_flag7=1;
    if(!key2)
{
     incline_flag8=1;
}



      keycs1=0; 
      keycs2=1;      //选通74HC245 按键为扬升快捷键 9%、10%速度加、减等按键
      keycs3=0;
      keycs4=0;    //屏蔽其他三个74HC245;
     if(!key0)
{
     incline_flag9=1;
    if(!key1)
{
     incline_flag10=1;
}
     if(!key2)
{
     inclineADD_flag=1;
    if(!key3)
{
     inclineDEC_flag=1;
}
     if(!key4)
{
     speedADD_flag=1;
    if(!key5)
{
     speedDEC_flag=1;
}
 //    if(!key6)
//{
 //    incline_flag7=1;
 //   if(!key7)
//{
 //    incline_flag8=1;
//}



      keycs1=0; 
      keycs2=0;     
      keycs3=1;      //选通74HC245 按键为速度快捷键 8KM/H、7KM/H、6KM/H。。
      keycs4=0;    //屏蔽其他三个74HC245;
    if(!key0)
{
     speed_flag8=1;
    if(!key1)
{
     speed_flag7=1;
}
     if(!key2)
{
     speed_flag6=1;
}
    if(!key3)
{
     speed_flag5=1;
}
     if(!key4)
{
     speed_flag4=1;
    if(!key5)
{
     speed_flag3=1;
}
    if(!key6)
{
     speed_flag2=1;
    if(!key7)
{
    speed_flag1=1;
}



      keycs1=0; 
      keycs2=0;     
      keycs3=0;      //选通74HC245 按键为其他捷键 START、STOP、等
      keycs4=1;    //屏蔽其他三个74HC245;


if(!key0)
{
   ST0_flag=1;
}
if(!key1)
{
   STA_flag=1;
}
if(!key2)
{
   pro_flag=1;
}
if(!key3)
{
   CLR_falg=1;
}
if(!key4)
{
    mod_flag=1;
}
if(!key5)
{
    fan_flag=1;
}
if(!key6)
{
    speed_flag=1;
}
if(!key7)
{
    speed_flag=1;
}


#endif

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条