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

📄 lcd_driver.lst

📁 51单片机驱动LCD的子程序
💻 LST
字号:
C51 COMPILER V8.02   LCD_DRIVER                                                            07/21/2008 14:22:28 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD_DRIVER
OBJECT MODULE PLACED IN lcd_driver.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd_driver.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*************************************************
   2          **文件名:lcd_driver.c
   3          **功  能:读写HT1621
   4          **版  本:1.0
   5          **作  者:寿金乔
   6          **日  期:2008.7.10
   7          *************************************************/
   8          #include <reg51.h>
   9          #define uchar unsigned char
  10          #define uint unsigned int
  11          
  12          
  13          #define BIAS 0x52               //0b1000 0101 0010 1/2duty 4com
  14          #define SYSDIS 0X00     //0b1000 0000 0000 关振系统荡器和LCD偏压发生器
  15          #define SYSEN 0X02              //0b1000 0000 0010 打开系统振荡器
  16          #define LCDOFF 0X04     //0b1000 0000 0100 关LCD偏压
  17          #define LCDON 0X06              //0b1000 0000 0110 打开LCD偏压
  18          #define XTAL 0x28               //0b1000 0010 1000 外部接时钟
  19          #define RC256 0X30              //0b1000 0011 0000 内部时钟
  20          #define TONEON 0X12     //0b1000 0001 0010 打开声音输出
  21          #define TONEOFF 0X10    //0b1000 0001 0000 关闭声音输出
  22          #define WDTDIS 0X0A     //0b1000 0000 1010 禁止看门狗
  23          
  24          
  25          //HT1621硬件连接
  26          sbit HT1621_CS = P1^4;
  27          sbit HT1621_WR = P1^6;
  28          sbit HT1621_RD = P1^5;
  29          sbit HT1621_DAT = P1^7;
  30          
  31          
  32          
  33          uchar code   Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
             -;
  34          
  35          
  36          /************************************************************
  37          **函数名:delay us
  38          **功  能:us级的延时
  39          ************************************************************/
  40          void Delay(uchar us)
  41          {
  42   1              while(--us);
  43   1      }
  44          
  45          
  46          
  47          /************************************************************
  48          **函数名:delay ms
  49          **功  能:mS级延时
  50          *************************************************************/
  51          void DelayMS(uint iMs)
  52          {
  53   1              uint i,j;
  54   1              for(i=0;i<iMs;i++)
C51 COMPILER V8.02   LCD_DRIVER                                                            07/21/2008 14:22:28 PAGE 2   

  55   1                      for(j=0;j<65;j++) 
  56   1                              Delay(1);
  57   1      }
  58          
  59          /******************************************************
  60          **函数名:Ht1621Wr_Data
  61          **功  能:写数据函数, 将数据串行移入
  62          **说  明:cnt为传送数据位数,数据传送为高位在前
  63          *******************************************************/
  64          void Ht1621Wr_Data(uchar Data,uchar cnt)
  65          {
  66   1              uchar i;
  67   1              for (i=0;i<cnt;i++)
  68   1              {
  69   2                      HT1621_WR = 0;
  70   2                      Delay(4);
  71   2                      HT1621_DAT=Data&0x80;
  72   2                      Delay(4);
  73   2                      HT1621_WR=1;
  74   2                      Delay(4);
  75   2                      Data<<=1;
  76   2              }
  77   1      }
  78          
  79          
  80          /********************************************************
  81          **函数名:void Ht1621WrCmd(uchar Cmd)
  82          **功  能: HT1621命令写入函数
  83          **说  明:Cmd为写入命令数据
  84          ********************************************************/
  85          void Ht1621WrCmd(uchar Cmd)
  86          {
  87   1              HT1621_CS=0;
  88   1              Delay(4);
  89   1              Ht1621Wr_Data(0x80,4);          //写入命令标志100,由于后面用到的命令高位都是0
  90   1              Ht1621Wr_Data(Cmd,8);           //写入命令数据
  91   1              HT1621_CS=1;
  92   1              Delay(4);
  93   1      }
  94          
  95          
  96          /********************************************************
  97          **函数名:void Ht1621WrOneData(uchar Addr,uchar Data)
  98          **功  能: HT1621在指定地址写入数据函数
  99          **说  明:Addr为写入初始地址,Data为写入数据
 100          **            因为HT1621的数据位4位,所以实际写入数据为参数的后4位
 101          **                由于数据要求是低位在先,所以对数据处理
 102          ********************************************************/
 103          void Ht1621WrOneData(uchar Addr,uchar Data)
 104          {
 105   1              
 106   1              HT1621_CS=0;
 107   1              Ht1621Wr_Data(0xa0,3);          //写入数据标志101       
 108   1              Ht1621Wr_Data(Addr<<2,6);       //写入地址数据
 109   1              Ht1621Wr_Data(Data<<4,4);       //写入数据
 110   1              HT1621_CS=1;
 111   1      }
 112          
 113          
 114          
 115          
 116          /*******************************************************
C51 COMPILER V8.02   LCD_DRIVER                                                            07/21/2008 14:22:28 PAGE 3   

 117          **函数名:Ht1621WrAllData
 118          **功  能:向HT612连续的写入数据
 119          **说  明:Addr是起始地址,*p连续写入数据指针,
 120          **                cnt为写入数据的总数(HT1621数据位是4位,但是这
 121          **        里按照8位来计算)
 122          ********************************************************/
 123          void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)
 124          {
 125   1              uchar i;
 126   1              HT1621_CS=0;
 127   1              Ht1621Wr_Data(0xa0,3);          //写入数据标志101
 128   1              Ht1621Wr_Data(Addr<<2,6);       //写入地址数据
 129   1              for (i=0;i<cnt;i++)
 130   1              {
 131   2                      Ht1621Wr_Data(*p,8);    //写入数据
 132   2                      p++;
 133   2              }
 134   1              HT1621_CS=1;
 135   1              Delay(2);
 136   1      }
 137          
 138          
 139          
 140          /********************************************************
 141          **函数名:void Ht1621_Init(void)
 142          **功  能: HT1621初始化
 143          说 明:初始化后,液晶屏所有字段均显示
 144          ********************************************************/
 145          void Ht1621_Init(void)
 146          {
 147   1              HT1621_CS=1;
 148   1              HT1621_WR=1;
 149   1              HT1621_DAT=1;
 150   1              DelayMS(2000);                          //延时使LCD工作电压稳定
 151   1              Ht1621WrCmd(BIAS);
 152   1              Ht1621WrCmd(RC256);             //使用内部振荡器
 153   1              Ht1621WrCmd(SYSDIS);
 154   1              Ht1621WrCmd(WDTDIS);
 155   1              Ht1621WrCmd(SYSEN);
 156   1              Ht1621WrCmd(LCDON);
 157   1      }
 158          
 159          
 160          
 161          void main()
 162          {
 163   1      //      uchar i,j,t;
 164   1              Ht1621_Init(); //上电初始化LCD
 165   1              DelayMS(1000); //延时一段时间
 166   1      
 167   1              Ht1621WrAllData(0,Ht1621Tab,16);
 168   1      
 169   1              Ht1621WrOneData(0x00,0x06);
 170   1              Ht1621WrOneData(0x01,0x0b);
 171   1              while(1)
 172   1              {
 173   2                      //Ht1621WrAllData(0,Ht1621Tab,16);//清除1621寄存器数据,暨清屏
 174   2              /*      for (i=0;i<32;i++)
 175   2                      {
 176   2                              t=0x01;
 177   2                              for (j=0;j<4;j++)
 178   2                              {
C51 COMPILER V8.02   LCD_DRIVER                                                            07/21/2008 14:22:28 PAGE 4   

 179   2                                      Ht1621WrOneData(i,t);
 180   2                                      t<<=1;
 181   2                                      t++;
 182   2                                      DelayMS(500);
 183   2                              }
 184   2                      } */
 185   2      
 186   2              };
 187   1      }
 188          
 189          
 190          
 191          
 192          
 193          
 194          
 195          
 196          
 197          
 198          
 199          
 200          
 201          
 202          
 203          
 204          
 205          
 206          
 207          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    297    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   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 + -