查看: 1222|回复: 7

您喜欢单片机吗?(献给太湖的初学者们)

[复制链接]
发表于 2006-7-23 17:15 | 显示全部楼层 |阅读模式
/*************************名称:矩阵式键盘的典型应用*********************************
**************************设计:黄龙松*******************************************
**************************日期:2006年7月23日于南京******************************/
#include \"include.h\"
sbit sclk = Port3^1;      //定义P3.1为CP脉冲信号
sbit dat = Port3^0;        //定义P3.0为数据信号
sbit beep = Port3^7;
//******************************************************************************
void Send_data (uchar dat1);    //发送键值至74LS164
uchar Key_Scan(void);            //键码扫描
void delay(uchar t);            //延时
void Display(uchar Led_dat);    //字符显示
void Key_Display(void);          //发送键值至LED
void Speaker (void);
//******************************************************************************
uchar Key_Scan(void)
{  
  uchar code_h;
  uchar code_l;
  Port1=0xf0;
  if((Port1&0xf0)!=0xf0)
  {
    delay(20);
    if((Port1&0xf0)!=0xf0)
    {
      code_h = 0xfe;
      while((code_h&0x10)!=0)
      {
        Port1=code_h;
        if((Port1&0xf0)!=0xf0)
        {
          code_l=(Port1&0xf0|0x0f);
          return(~code_l+~code_h);
        }
        else   code_h=(code_h<<1)|0x01;
      }
    }
      
  }
  return(0);
}
//******************************************************************************
void delay(uchar t)
{   
    uchar i;
    for(;--t;)
    {
      for(i=0;i<100;i++);
    }
}
//******************************************************************************
void Speaker (void)
{  
  beep = 0;
  delay(250);
  delay(250);
  delay(250);
  beep = 1;
}
//******************************************************************************
void Send_data (uchar dat1)
{
  uchar j;
  for(j=0;j<8;j++)
  {  
    if((dat1<<j)&0x80)         //识别位状态
       dat = 1;         
    else dat = 0;
    sclk = 1;            //产生脉冲信号,上升沿有效
    sclk = 0;
  }
}
//******************************************************************************
void Display(uchar Led_dat)//字符显示,基于74LS164
{
    sclk = 0;
    Send_data(Led_dat);  
    Speaker ();
}
//******************************************************************************      
void Key_Display(void)
{
  switch(Key_Scan())
    {
      case 0x88:
       Display(ZK[0]);break;
      case 0x48:
       Display(ZK[1]);break;
      case 0x28:
       Display(ZK[2]);break;
      case 0x18:
       Display(ZK[3]);break;
      case 0x84:
      Display(ZK[4]);break;
      case 0x44:
      Display(ZK[5]);break;
      case 0x24:
      Display(ZK[6]);break;
      case 0x14:
      Display(ZK[7]);break;
      case 0x82:
      Display(ZK[8]);break;
      case 0x42:
      Display(ZK[9]);break;
      case 0x22:
      Display(ZK[10]);break;
      case 0x12:
      Display(ZK[11]);break;
      case 0x81:
      Display(ZK[12]);break;
      case 0x41:
      Display(ZK[13]);break;
      case 0x21:
      Display(ZK[14]);break;
      case 0x11:
      Display(ZK[15]);break;
  //  case 0x00:
  //  Display(0xff);break;
  }
}  
void main (void)
{  
  while(1)      
  {  
    Key_Display();
  }
}
//************************************END*********************************
     
发表于 2006-7-23 19:25 | 显示全部楼层
这是什么啊?
我刚开始没看清楚题目
还以为是说RPG呢
回复 支持 反对

使用道具 举报

发表于 2006-7-24 08:04 | 显示全部楼层
我学过,现在不用了,还老师了,呵呵
回复 支持 反对

使用道具 举报

发表于 2006-7-24 12:49 | 显示全部楼层
单片机运用很广泛,可是理论学习太枯燥
回复 支持 反对

使用道具 举报

发表于 2006-7-25 10:12 | 显示全部楼层
嘿嘿,这是很有用的一门专业知识
回复 支持 反对

使用道具 举报

发表于 2006-7-25 10:35 | 显示全部楼层
樓主是在讀書還是在那家公司上班呀,有機會想找樓主學習學習,呵呵,
回复 支持 反对

使用道具 举报

发表于 2006-9-13 18:30 | 显示全部楼层
这个呀,楼主习惯用C语言呀,我是用汇编呀,楼主QQ号多少呀,
回复 支持 反对

使用道具 举报

     
发表于 2006-9-15 11:00 | 显示全部楼层
想学啊,有机会就在这交流吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表