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

📄 lcd_driver.lst

📁 51单片机驱动LCD的子程序
💻 LST
字号:
C51 COMPILER V8.02   LCD_DRIVER                                                            07/24/2008 17:10:48 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          **功  能:测试LCD中的全部段是否好
   4          **现  象:上电后全部段点亮1S后,全部关然后再全部点亮
   5          **版  本:1.0
   6          **作  者:寿金乔
   7          **日  期:2008.7.10
   8          *************************************************/
   9          #include <reg51.h>
  10          #define uchar unsigned char
  11          #define uint unsigned int
  12          
  13          
  14          #define BIAS 0x52               //0b1000 0101 0010 1/2duty 4com
  15          #define SYSDIS 0X00     //0b1000 0000 0000 关振系统荡器和LCD偏压发生器
  16          #define SYSEN 0X02              //0b1000 0000 0010 打开系统振荡器
  17          #define LCDOFF 0X04     //0b1000 0000 0100 关LCD偏压
  18          #define LCDON 0X06              //0b1000 0000 0110 打开LCD偏压
  19          #define XTAL 0x28               //0b1000 0010 1000 外部接时钟
  20          #define RC256 0X30              //0b1000 0011 0000 内部时钟
  21          #define TONEON 0X12     //0b1000 0001 0010 打开声音输出
  22          #define TONEOFF 0X10    //0b1000 0001 0000 关闭声音输出
  23          #define WDTDIS 0X0A     //0b1000 0000 1010 禁止看门狗
  24          
  25          /*
  26          //HT1621硬件连接
  27          sbit HT1621_CS = P1^4;
  28          sbit HT1621_WR = P1^6;
  29          sbit HT1621_RD = P1^5;
  30          sbit HT1621_DAT = P1^7;
  31          */
  32          
  33          //测试LCD上用
  34          sbit HT1621_CS = P1^3;
  35          sbit HT1621_WR = P1^1;
  36          sbit HT1621_RD = P1^2;
  37          sbit HT1621_DAT = P1^0;
  38          
  39          
  40          uchar code   Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
             -;
  41          
  42          
  43          /************************************************************
  44          **函数名:delay us
  45          **功  能:us级的延时
  46          ************************************************************/
  47          void Delay(uchar us)
  48          {
  49   1              while(--us);
  50   1      }
  51          
  52          
  53          
  54          /************************************************************
C51 COMPILER V8.02   LCD_DRIVER                                                            07/24/2008 17:10:48 PAGE 2   

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

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

 179   2                      for (i=0;i<32;i++)
 180   2                      {
 181   3                              t=0x0f;
 182   3                              for (j=0;j<4;j++)
 183   3                              {
 184   4                                      Ht1621WrOneData(i,t);
 185   4                                      //t<<=1;
 186   4                                      //t++;
 187   4                                       Delay(1);
 188   4                              }
 189   3                      }
 190   2                      DelayMS(1500);
 191   2                      for (i=0;i<32;i++)
 192   2                      {
 193   3                              t=0x00;
 194   3                              for (j=0;j<4;j++)
 195   3                              {
 196   4                                      Ht1621WrOneData(i,t);
 197   4                                      //t<<=1;
 198   4                                      //t++;
 199   4                                       Delay(1);
 200   4                              }
 201   3                      }
 202   2                      DelayMS(1500);
 203   2              }
 204   1      }
 205          
 206          
 207          
 208          
 209          
 210          
 211          
 212          
 213          
 214          
 215          
 216          
 217          
 218          
 219          
 220          
 221          
 222          
 223          
 224          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    353    ----
   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 + -