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

📄 hd7279a_driver.lst

📁 懒人HD7279A驱动模块
💻 LST
字号:
C51 COMPILER V7.06   HD7279A_DRIVER                                                        01/08/2009 14:15:21 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE HD7279A_DRIVER
OBJECT MODULE PLACED IN HD7279A_Driver.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE HD7279A_Driver.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<config.c>//管脚配置文件
   2          #include<reg51.h>
   3          
   4          
   5          #define HD7279A_RESET                   0xA4//重启指令
   6          #define HD7279A_TEST                    0xBF//测试指令
   7          #define HD7279A_LEFT                    0xA1//左移指令
   8          #define HD7279A_RIGHT                   0xA0//右移指令
   9          #define HD7279A_CLEFT                   0xA3//循环左移
  10          #define HD7279A_CRIGHT                  0xA2//循环右移
  11          #define HD7279A_FLASH                   0x88//闪烁控制
  12          #define HD7279A_VISIBLE                 0x98//消隐控制
  13          #define HD7279A_SEG_ON                  0xE0//段点亮
  14          #define HD7279A_SEG_OFF                 0xC0//段关闭
  15          #define HD7279A_READ_KEY                0x15//读取键盘数据
  16          
  17          
  18          //sbit HD7279A_LCSPIN=P3^2;//片选指令,低电平有效
  19          //sbit HD7279A_CLKPIN=P3^3;//脉冲,上升沿数据有效
  20          //sbit HD7279A_DATAPIN=P3^4;//串行数据输入端
  21          //sbit HD7279A_KEYPIN=P3^5;//按键有效输出端
  22          
  23          void HD7279A_Delay(unsigned int uiTime);//延迟函数,参数:时间
  24          void HD7279A_SendData(unsigned char ucCMD,unsigned char ucData);//传输数据,参数:命令,数据    
  25          void HD7279A_SendCommand(unsigned char ucByte);//传输命令,参数:命令
  26          unsigned char HD7279A_ReadByte(unsigned char ucCMD);//读取字节,参数:命令      
  27          
  28          
  29          void HD7279A_Delay(unsigned int uiTime)
  30          {
  31   1              unsigned int i;
  32   1              for(i=0;i<uiTime;i++)//粗略延时
  33   1              {
  34   2                      ;
  35   2              }
  36   1      }
  37          
  38          void HD7279A_SendCommand(unsigned char ucByte)
  39          {
  40   1              unsigned char i;
  41   1              HD7279A_LCSPIN=0;//片选
  42   1              HD7279A_Delay(0x30);//延迟30us左右
  43   1              for(i=0;i<8;i++)//循环左移,串行传输数据
  44   1          {
  45   2                      if(ucByte&0x80)//取最高位
  46   2                      {
  47   3                              HD7279A_DATAPIN=1;//传输
  48   3                      }
  49   2                      else
  50   2                      {
  51   3                              HD7279A_DATAPIN=0;
  52   3                      }
  53   2                      HD7279A_CLKPIN=1;//设定上升沿环境
  54   2                      HD7279A_Delay(0x08);//延时8us
  55   2                      HD7279A_CLKPIN=0;//设定clk低电平
C51 COMPILER V7.06   HD7279A_DRIVER                                                        01/08/2009 14:15:21 PAGE 2   

  56   2                      HD7279A_Delay(0x08);
  57   2                      ucByte<<=1;//左移
  58   2              }
  59   1              HD7279A_DATAPIN=0;
  60   1              HD7279A_LCSPIN=1;
  61   1      }
  62          
  63          void HD7279A_SendData(unsigned char ucCMD,unsigned char ucData)
  64          {
  65   1              unsigned char i;
  66   1              HD7279A_LCSPIN=0;
  67   1              HD7279A_Delay(0x30);
  68   1              for (i=0;i<8;i++)//首先传输指令
  69   1              {
  70   2                      if (ucCMD&0x80)
  71   2                      {
  72   3                              HD7279A_DATAPIN=1;
  73   3                      }
  74   2                      else
  75   2                      {
  76   3                              HD7279A_DATAPIN=0;
  77   3                      }
  78   2                      HD7279A_CLKPIN=1;
  79   2                      HD7279A_Delay(0x08);
  80   2                      HD7279A_CLKPIN=0;
  81   2                      HD7279A_Delay(0x08);
  82   2                      ucCMD<<=1;
  83   2              }
  84   1              HD7279A_Delay(0x11);//延迟,等待传输数据
  85   1              for (i=0;i<8;i++)//传输数据
  86   1              {
  87   2                      if(ucData&0x80)
  88   2                      {
  89   3                              HD7279A_DATAPIN=1;
  90   3                      }
  91   2                      else
  92   2                      {
  93   3                              HD7279A_DATAPIN=0;
  94   3                      }
  95   2                      HD7279A_CLKPIN=1;
  96   2                      HD7279A_Delay(0x08);
  97   2                      HD7279A_CLKPIN=0;
  98   2                      HD7279A_Delay(0x08);
  99   2                      ucData<<=1;
 100   2              }
 101   1              HD7279A_DATAPIN=0;
 102   1              HD7279A_Delay(0x08);
 103   1              HD7279A_LCSPIN=1;
 104   1              HD7279A_Delay(0x08);
 105   1      
 106   1      }
 107          
 108          
 109          
 110          unsigned char HD7279A_ReadByte(unsigned char ucCMD)
 111          {
 112   1              unsigned char i;
 113   1              unsigned char ucRec=0;
 114   1              HD7279A_LCSPIN=0;
 115   1              HD7279A_Delay(0x30);
 116   1              for(i=0;i<8;i++)//传输读取字节命令
 117   1              {
C51 COMPILER V7.06   HD7279A_DRIVER                                                        01/08/2009 14:15:21 PAGE 3   

 118   2                      if(ucCMD&0x80)
 119   2                      {
 120   3                              HD7279A_DATAPIN=1;
 121   3                      }
 122   2                      else
 123   2                      {
 124   3                              HD7279A_DATAPIN=0;
 125   3                      }
 126   2                      HD7279A_CLKPIN=1;
 127   2                      HD7279A_Delay(0x08);
 128   2                      HD7279A_CLKPIN=0;
 129   2                      HD7279A_Delay(0x08);
 130   2                      ucCMD<<=1;
 131   2               }
 132   1              // HD7279A_DATAPIN=1;
 133   1               HD7279A_Delay(0x14);
 134   1               for(i=0;i<8;i++)//开始接受数据
 135   1               {
 136   2                      HD7279A_CLKPIN=1;
 137   2                      HD7279A_Delay(0x05);
 138   2                      if(HD7279A_DATAPIN==1)
 139   2                      {
 140   3                              ucRec=ucRec|0x01;//存储到ucRec中
 141   3                      }
 142   2                      HD7279A_Delay(0x08);
 143   2                      HD7279A_CLKPIN=0;
 144   2                      ucRec<<=1;
 145   2               }
 146   1               HD7279A_DATAPIN=0;
 147   1               HD7279A_LCSPIN=1;
 148   1               return ucRec;//返回数据
 149   1      }
 150          
 151          main()
 152          {
 153   1              unsigned int i,j;
 154   1              while(1)
 155   1              {
 156   2                      for(i=0;i<2000;i++)
 157   2                      {
 158   3                              ;
 159   3                      }
 160   2                      P0=0xFF;
 161   2                      HD7279A_SendCommand(HD7279A_RESET);
 162   2                      HD7279A_SendData(0xc8,0x08);
 163   2                      HD7279A_SendData(0xc9,0x00);
 164   2                      HD7279A_SendData(0xca,0x00);
 165   2                      HD7279A_SendData(0xcb,0x02);
 166   2                      for (i=0;i<300;i++)
 167   2                      {
 168   3                              for (j=0;j<2000;j++)
 169   3                              {
 170   4                                      ;
 171   4                              }
 172   3                      }
 173   2                      P0=0x00;
 174   2                      HD7279A_SendCommand(HD7279A_RESET);
 175   2                      HD7279A_SendCommand(HD7279A_TEST);
 176   2                      for (i=0;i<300;i++)
 177   2                      {
 178   3                              for (j=0;j<2000;j++)
 179   3                              {
C51 COMPILER V7.06   HD7279A_DRIVER                                                        01/08/2009 14:15:21 PAGE 4   

 180   4                                      ;
 181   4                              }
 182   3                      }
 183   2                      P0=0xff;
 184   2                      HD7279A_SendCommand(HD7279A_RESET);
 185   2              }
 186   1      
 187   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    365    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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