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

📄 k1621.lst

📁 用ht1621驱动笔段式液晶屏,用AT89S52做主控制器。
💻 LST
字号:
C51 COMPILER V7.04   K1621                                                                 11/07/2007 09:51:31 PAGE 1   


C51 COMPILER V7.04, COMPILATION OF MODULE K1621
OBJECT MODULE PLACED IN E:\RAR\STEPMO~1\K1621.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\RAR\STEPMO~1\K1621.C DB SB OE

stmt level    source

   1          /*MCU:AT89S51
   2          *Freq:12M
   3          .edit Tab:4
   4          driver:ht1621   //judge communication namely 1621 work
   5          **********************************/
   6          
   7          #include <reg51.h>
   8          #include <intrins.h>
   9          #include <absacc.h>
  10          
  11          #define uchar unsigned char
  12          #define uint unsigned int
  13          #define _Nop() _nop_()
  14                                      //0b1000 0100 0000  1/2duty 2com for 0x40
  15          #define BIAS 0x40          //0b1000 0101 0010  1/3duty 4com for 0x52
  16          #define SYSDIS 0X00   //0b1000 0000 0000  关振系统荡器和LCD偏压发生器
  17          #define LCDOFF 0X04   //0b1000 0000 0100  关LCD偏压
  18          #define LCDON 0X06   //0b1000 0000 0110  打开LCD偏压
  19          #define SYSEN 0X02   //0b1000 0000 0010 打开系统振荡器
  20          #define XTAL 0x28   //0b1000 0010 1000 外部接时钟
  21          #define RC256 0X30   //0b1000 0011 0000  内部时钟
  22          #define TONEON 0X12   //0b1000 0001 0010  打开声音输出
  23          #define TONEOFF 0X10   //0b1000 0001 0000 关闭声音输出
  24          #define WDTDIS 0X0A   //0b1000 0000 1010  禁止看门狗
  25          
  26          //HT1621控制位(液晶模块接口定义,根据自已的需要更改)
  27          sbit HT1621_DAT=P0^0;
  28          sbit HT1621_CS=P0^2;    //lower enable
  29          sbit HT1621_WR=P0^1;    //rising edge
  30          
  31          
  32          
  33          //0,1,...4     //2 com also calculator 4 coms but other 2 com dont out
  34          uchar code Ht1621Tab[]=
  35          {
  36          0xc4,0xc8,0x04,0x40,0x4c,0x88,0x4c,0x48,0x8c,0x40,
  37          0xc8,0x48,0xc8,0xc8,0x44,0x40,0xcc,0xc8,0xcc,0x48
  38          };
  39          // 1 is display , 0 is off
  40          
  41          //13_LED  5...8,9
  42          uchar code Ht1621Tab1[]={0xeb,0x0a,0xad,0x8f,0x4e,0xc7,0xe7,0x8a,0xef,0xcf};
  43          
  44          //uchar data DispBuffer;
  45          
  46          
  47          //delay us
  48          void Delay(uchar us)  //5,7,9
  49          {
  50   1       while(--us);
  51   1      }
  52          
  53          
  54          //delay ms
  55          void DelayMS(uint iMs)
C51 COMPILER V7.04   K1621                                                                 11/07/2007 09:51:31 PAGE 2   

  56          {
  57   1       uint i,j;
  58   1         for(i=0;i<iMs;i++)
  59   1          for(j=0;j<65;j++) Delay(1);
  60   1      
  61   1      }
  62          //完成写一个命令包括头(100)
  63          void Ht1621WrCmd(uchar ucTmpCmd)
  64          {
  65   1       uchar data i,ucCmdByte=0x80;
  66   1       HT1621_CS=0;
  67   1       _Nop();
  68   1       _Nop();
  69   1       for (i=0;i<4;i++)
  70   1       {
  71   2        if (ucCmdByte&0x80) HT1621_DAT=1;
  72   2        else  HT1621_DAT=0;
  73   2        HT1621_WR=0;
  74   2        _Nop();
  75   2        _Nop();
  76   2        HT1621_WR=1;
  77   2        _Nop();
  78   2        ucCmdByte<<=1;
  79   2       }
  80   1       for (i=0;i<8;i++)
  81   1       {
  82   2        if (ucTmpCmd&0x80) HT1621_DAT=1;
  83   2        else HT1621_DAT=0;
  84   2        HT1621_WR=0;
  85   2        _Nop();
  86   2        _Nop();
  87   2        HT1621_WR=1;
  88   2        _Nop();
  89   2        ucTmpCmd<<=1;
  90   2       }
  91   1       HT1621_CS=1;
  92   1       _Nop();
  93   1       _Nop();
  94   1      }
  95          
  96          //写命令+地址
  97          void Ht1621WrDataCmd(uchar ucAddr)
  98          {
  99   1       uchar data i,ucDataCmd=0x05;    //101
 100   1       ucDataCmd<<=5;
 101   1       for (i=0;i<3;i++)
 102   1       {
 103   2        if (ucDataCmd&0x80) HT1621_DAT=1;
 104   2        else HT1621_DAT=0;
 105   2        HT1621_WR=0;
 106   2        _Nop();
 107   2        _Nop();
 108   2        HT1621_WR=1;
 109   2        _Nop();
 110   2        ucDataCmd<<=1;
 111   2       }
 112   1       ucAddr<<=2;
 113   1       for (i=0;i<6;i++)
 114   1       {
 115   2        if (ucAddr&0x80) HT1621_DAT=1;
 116   2        else HT1621_DAT=0;
 117   2        HT1621_WR=0;
C51 COMPILER V7.04   K1621                                                                 11/07/2007 09:51:31 PAGE 3   

 118   2        _Nop();
 119   2        _Nop();
 120   2        HT1621_WR=1;
 121   2        _Nop();
 122   2        ucAddr<<=1;
 123   2       }
 124   1      
 125   1      }
 126          
 127          //完成写一个字节数据
 128          void Ht1621WrByte(uchar ucTmpData)
 129          {
 130   1       uchar data i;
 131   1      
 132   1       for (i=0;i<8;i++)
 133   1       {
 134   2        if (ucTmpData&0x80) HT1621_DAT=1;
 135   2        else HT1621_DAT=0;
 136   2        HT1621_WR=0;
 137   2        _Nop();
 138   2        _Nop();
 139   2        HT1621_WR=1;
 140   2        _Nop();
 141   2        ucTmpData<<=1;
 142   2       }
 143   1      
 144   1      }
 145          
 146          
 147          void CPU_Init()
 148          {
 149   1       P0=0XFF;   //input
 150   1       P1=0xff;
 151   1       P2=0XFF;
 152   1       P3=0XFF;
 153   1      }
 154          
 155          
 156          void Ht1621_Init()
 157          {
 158   1       HT1621_CS=1;
 159   1       HT1621_WR=0;
 160   1       HT1621_DAT=1;
 161   1       DelayMS(2000);     //延时使LCD工作电压稳定
 162   1       Ht1621WrCmd(BIAS);
 163   1       Ht1621WrCmd(RC256);    //使用内部振荡器
 164   1       Ht1621WrCmd(SYSDIS);
 165   1       Ht1621WrCmd(WDTDIS);
 166   1       Ht1621WrCmd(SYSEN);
 167   1       Ht1621WrCmd(LCDON);
 168   1      }
 169          
 170          void main()
 171          {
 172   1       uchar data i;
 173   1       CPU_Init();
 174   1       Ht1621_Init();     //上电初始化LCD,init success full light
 175   1      
 176   1      
 177   1        HT1621_CS=0;
 178   1        Ht1621WrDataCmd(12);    //往RAM的地址4写数据  这里的参数范围为:0-31
 179   1        for (i=0;i<8;i++)
C51 COMPILER V7.04   K1621                                                                 11/07/2007 09:51:31 PAGE 4   

 180   1        {
 181   2         Ht1621WrByte(Ht1621Tab[i]);
 182   2        }
 183   1         HT1621_CS=1;
 184   1         DelayMS(2000);      //2S
 185   1         while(1) ;
 186   1      }
C51 COMPILER V7.04   K1621                                                                 11/07/2007 09:51:31 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


Ht1621_Init. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
Ht1621Tab. . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  20
HT1621_DAT . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0080H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
_Ht1621WrDataCmd . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  ucAddr . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  ucDataCmd. . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
_Ht1621WrCmd . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  ucTmpCmd . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  ucCmdByte. . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
_Ht1621WrByte. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  ucTmpData. . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
_Delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  us . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
Ht1621Tab1 . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0014H  10
HT1621_CS. . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0082H  1
CPU_Init . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
HT1621_WR. . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0081H  1
_DelayMS . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  iMs. . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0082H  2


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