⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hd7279.lst

📁 hd7279对键盘和数码管矩阵扫描译码显示功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   HD7279                                                                04/28/2007 16:48:04 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE HD7279
OBJECT MODULE PLACED IN hd7279.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE hd7279.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /* File Name:           hd7279.c    */
   3          /* Author:              Huaming Liu */
   4          /* Created:             2007-4-28   */
   5          /* Modified:                    no          */
   6          /* Revision:            V1.0            */
   7          /************************************************************************************/
   8          /*程序作用:测试hd7279键盘显示芯片是否能正常工作     */
   9          /*程序功能:按下0号键点亮4个LED灯 ,按下1号键显示0、1、2、3,按下2号键显示c、d、e、f*/
  10          /*              按下3号键显示4、5、6、7,按下4号键显示8、9、a、b*/
  11          /************************************************************************************/
  12          
  13          #include <reg52.h>                                      /*定义头文件*/                           
  14          #include <absacc.h>
  15          #define Set_Bit(BIT)    (BIT = 1)       /*定义置1函数*/
  16          #define Clear_Bit(BIT)  (BIT = 0)       /*定义清0函数*/
  17          typedef unsigned char BYTE;             /*自定义字节类型*/
  18                            
  19          BYTE Keyboard_Out;              /*定义键值变量*/
  20          bit Keyboard_Flag;              /*定义按键标志*/
  21          /*   char* Wdt =DBYTE[0x00A6];/*定义看门狗SFR*/ 
  22          
  23          sbit Hd7279_CS=P1^0;    /*定义HD7279片选信号连接*/
  24          sbit Hd7279_Clk=P1^1;   /*定义HD7279时钟硬件连接*/
  25          sbit Hd7279_Data=P1^2;  /*定义HD7279数据硬件连接*/
  26          sbit Hd7279_Key=P1^3;   /*定义HD7279中断硬件连接*/
  27          
  28          /****** HD7279的指令 ******/
  29          #define CMD_RESET       0xa4
  30          #define CMD_TEST        0xbf  /*所有LED均亮,且闪烁*/
  31          #define DECODE0         0x80  /*0位LED按方式0译码,1-7位LED需在低三位改动(000-111)*/
  32          #define DECODE1         0xc8  /*0位LED按方式1译码,1-7位LED需在低三位改动(000-111)*/
  33                                                            /*都是按BCD译码,只是A-F译码方式不同*/
  34          #define UNDE_CODE       0x90  /*0位LED不译码,即是七段码(最高位DP,其次A,B…)*/
  35          #define CMD_READ        0x15  /*键盘读取*/
  36          #define RL_CYCLE        0xa3  /*左移,循环移位*/
  37          #define RR_CYCLE        0xa2  /*右移,循环移位*/
  38          #define RL_UNCYL        0xa1  /*左移,非循环移位*/
  39          #define RR_UNCYL        0xa0  /*右移,非循环移位*/
  40          #define ACT_CTL         0x98  /*消隐控制,被消隐的位不显示但数据被保存*/
  41          #define SEG_ON          0xe0  /*段点亮,段值范围0~3FH,LED位从0-7,段位从G-A-DP*/
  42          #define SEG_OFF         0xc0
  43          #define BLINK_CTL       0x88  /*闪烁控制*/
  44          
  45          void Led_On(BYTE);                              /*定义点亮LED灯函数*/
  46          void Led_Off(BYTE);                     /*定义熄灭LED灯函数*/
  47          void Write_Hd7279(BYTE,BYTE);   /*定义HD7279写函数,先写命令再写控制信息*/
  48          BYTE Read_Hd7279(BYTE);                 /*定义HD7279读函数,只需发出命令再读入数据*/
  49          void Send_Byte(BYTE);                   /*定义HD7279发送字节函数*/
  50          BYTE Receive_Byte(void);                /*定义HD7279接收字节函数*/
  51          void Short_Delay(void);                 /*定义短延时函数*/
  52          void Long_Delay(void);                  /*定义长延时函数*/
  53          void Mcu_Init(void);                    /*定义MCU初始化函数*/
  54          void Delay_200_mS(void);                /*定义200ms延时函数*/
  55          
C51 COMPILER V7.20   HD7279                                                                04/28/2007 16:48:04 PAGE 2   

  56          
  57          /************************************************************************************/
  58          void main(void) /*主函数*/
  59          {
  60   1              Mcu_Init();             /*MCU初始化*/
  61   1              while(1)
  62   1              {
  63   2              if(Keyboard_Flag)  /*if1,有按键按下*/
  64   2                      {
  65   3                      Clear_Bit(Keyboard_Flag);
  66   3                      if(Keyboard_Out==0)  /*0号键处理*/ 
  67   3                              {/*按下0号键点亮4个LED灯*/
  68   4                              Led_On(0x00);
  69   4                              Led_On(0x01);
  70   4                              Led_On(0x02);
  71   4                              Led_On(0x03);
  72   4                              }
  73   3                      else if(Keyboard_Out==1) /*1号键处理*/
  74   3                              { /*显示0、1、2、3*/
  75   4                              Write_Hd7279(0xc9,0x03);
  76   4                              Write_Hd7279(0xca,0x02);
  77   4                              Write_Hd7279(0xcb,0x01);
  78   4                              Write_Hd7279(0xcc,0x00);                                                                               
             -                                                                                                                        
             -                          Led_Off(0x02);
  79   4                              }
  80   3                      else if(Keyboard_Out==2) /*2号键处理*/
  81   3                              { /*显示c、d、e、f*/
  82   4                              Write_Hd7279(0xc9,0x0f);
  83   4                              Write_Hd7279(0xca,0x0e);
  84   4                              Write_Hd7279(0xcb,0x0d);
  85   4                              Write_Hd7279(0xcc,0x0c);                                                                               
             -                                                                                                                        
             -                          Led_Off(0x02);
  86   4                              } 
  87   3                      else if(Keyboard_Out==3) /*3号键处理*/
  88   3                              { /*显示4、5、6、7*/
  89   4                              Write_Hd7279(0xc9,0x07);
  90   4                              Write_Hd7279(0xca,0x06);
  91   4                              Write_Hd7279(0xcb,0x05);
  92   4                              Write_Hd7279(0xcc,0x04);                                                                               
             -                                                                                                                        
             -                          Led_Off(0x02);
  93   4                              }
  94   3                      else  /*4号键处理*/
  95   3                              { /*显示8、9、a、b*/
  96   4                              Write_Hd7279(0xc9,0x0b);
  97   4                              Write_Hd7279(0xca,0x0a);
  98   4                              Write_Hd7279(0xcb,0x09);
  99   4                              Write_Hd7279(0xcc,0x08);                                                                               
             -                                                                                                                        
             -                          Led_Off(0x02);
 100   4                              } 
 101   3                      Delay_200_mS();
 102   3                      }          /*if1*/
 103   2              }         /*while*/
 104   1      }          /*main*/
 105          
 106          
 107          void Delay_200_mS(void)  /*200ms延时函数*/
 108                  {
 109   1              BYTE i,j;
C51 COMPILER V7.20   HD7279                                                                04/28/2007 16:48:04 PAGE 3   

 110   1              i=200;
 111   1              while (i--)
 112   1              {
 113   2              j=228;
 114   2              while(j--);
 115   2              } 
 116   1              } 
 117          
 118          
 119          void Mcu_Init(void) /*MCU初始化函数*/
 120                  {
 121   1              Set_Bit(EX0);   /*外部中断0使能*/
 122   1              Set_Bit(IT0);   /*外部中断0下降沿触发*/
 123   1              Set_Bit(EA);    /*中断使能*/
 124   1              DBYTE[0X00A6]=0x1e;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -