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

📄 lcd_driver.lst

📁 51单片机驱动LCD的子程序
💻 LST
字号:
C51 COMPILER V8.02   LCD_DRIVER                                                            07/23/2008 14:26:38 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          //测试LCD上用
  33          sbit HT1621_CS = P1^3;
  34          sbit HT1621_WR = P1^1;
  35          sbit HT1621_RD = P1^2;
  36          sbit HT1621_DAT = P1^0;
  37          
  38          
  39          uchar code   Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
             -;
  40          
  41          
  42          /************************************************************
  43          **函数名:delay us
  44          **功  能:us级的延时
  45          ************************************************************/
  46          void Delay(uchar us)
  47          {
  48   1              while(--us);
  49   1      }
  50          
  51          
  52          
  53          /************************************************************
  54          **函数名:delay ms
C51 COMPILER V8.02   LCD_DRIVER                                                            07/23/2008 14:26:38 PAGE 2   

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

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

 179   3                              {
 180   4                                      Ht1621WrOneData(i,t);
 181   4                                      t<<=1;
 182   4                                      t++;
 183   4                                      DelayMS(100);
 184   4                              }
 185   3                      }
 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        =    326    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   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 + -