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

📄 lcd.lst

📁 应用KEILC写的一个C51程序
💻 LST
字号:
C51 COMPILER V8.02   LCD                                                                   04/16/2008 22:07:29 PAGE 1   


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

line level    source

   1          //ST7920驱动的12864(串行工作方式) 
   2          
   3          /******************************************************************************
   4          文件名 : lcd.c
   5          模块名称:st7920 串行方式驱动12232液晶驱动
   6          CPU: stc89c516rd+   主频:11.0592M
   7          ******************************************************************************/
   8          #include "lcd.h"
   9          #include "common.h"
  10          #include "delay.h"
  11          uchar code AC_TABLE[]={
  12          0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,      //第一行汉字位置
  13          0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,      //第二行汉字位置
  14          };
  15          /******************************************************************************************
  16          * 函数名称    :SendByte
  17          * 功能描述    :串口发送一个字节
  18          ******************************************************************************************/
  19          void SendByte(uchar Dbyte)
  20          {
  21   1           uchar i;
  22   1           for(i=0;i<8;i++)
  23   1           {
  24   2                 SCK = 0;
  25   2                 Dbyte=Dbyte<<1;      //左移一位
  26   2                 SID = CY;            //移出的位给SID
  27   2                 SCK = 1;
  28   2                 SCK = 0;
  29   2           }
  30   1      }
  31          /******************************************************************************************
  32          * 函数名称    :ReceiveByte
  33          * 功能描述    :串口接收一个字节
  34          ******************************************************************************************/
  35          uchar ReceiveByte(void)
  36          {
  37   1           uchar i,temp1,temp2;
  38   1           temp1 = 0;
  39   1           temp2 = 0;
  40   1           for(i=0;i<8;i++)
  41   1           {
  42   2                 temp1=temp1<<1;
  43   2                 SCK = 0;
  44   2                 SCK = 1;            
  45   2                 SCK = 0;
  46   2                 if(SID) temp1++;
  47   2           }
  48   1           for(i=0;i<8;i++)
  49   1           {
  50   2                 temp2=temp2<<1;
  51   2                 SCK = 0;
  52   2                 SCK = 1;
  53   2                 SCK = 0;
  54   2                 if(SID) temp2++;
  55   2           }
C51 COMPILER V8.02   LCD                                                                   04/16/2008 22:07:29 PAGE 2   

  56   1           return ((0xf0&temp1)+(0x0f&temp2));
  57   1      }
  58          /******************************************************************************************
  59          * 函数名称    :CheckBusy
  60          * 功能描述    :
  61          ******************************************************************************************/
  62          void CheckBusy( void )
  63          {
  64   1           do   SendByte(0xfc);      //11111,RW(1),RS(0),0
  65   1           while(0x80&ReceiveByte());      //BF(.7)=1 Busy
  66   1      }
  67          /******************************************************************************************
  68          * 函数名称    :WriteCommand
  69          * 功能描述    :
  70          ******************************************************************************************/
  71          void WriteCommand(uchar Cbyte)
  72          {
  73   1           CS = 1;
  74   1           CheckBusy();
  75   1           SendByte(0xf8);            //11111,RW(0),RS(0),0
  76   1           SendByte(0xf0&Cbyte);      //高四位
  77   1           SendByte(0xf0&Cbyte<<4);//低四位(先执行<<)
  78   1           CS = 0;
  79   1      }
  80          /******************************************************************************************
  81          * 函数名称    :WriteData
  82          * 功能描述    :
  83          ******************************************************************************************/
  84          void WriteData(uchar Dbyte)
  85          {
  86   1           CS = 1;
  87   1           CheckBusy();
  88   1           SendByte(0xfa);            //11111,RW(0),RS(1),0
  89   1           SendByte(0xf0&Dbyte);      //高四位
  90   1           SendByte(0xf0&Dbyte<<4);//低四位(先执行<<)
  91   1           CS = 0;
  92   1      }
  93          
  94          
  95          /******************************************************************************************
  96          * 函数名称    :ReadData
  97          * 功能描述    :
  98          ******************************************************************************************/
  99          uchar ReadData(void)
 100          {
 101   1           CheckBusy();
 102   1           SendByte(0xfe);            //11111,RW(1),RS(1),0
 103   1           return ReceiveByte();
 104   1      }
 105          /******************************************************************************************
 106          * 函数名称    :LcmInit
 107          ******************************************************************************************/
 108          void LcmInit(void)
 109          {
 110   1              delay_1ms(100);
 111   1          WriteCommand(0x30);      //8BitMCU,基本指令集合
 112   1          WriteCommand(0x03);      //AC归0,不改变DDRAM内容
 113   1          WriteCommand(0x0C);      //显示ON,游标OFF,游标位反白OFF
 114   1          WriteCommand(0x01);      //清屏,AC归0
 115   1          WriteCommand(0x06);      //写入时,游标右移动
 116   1      }
 117          /******************************************************************************************
C51 COMPILER V8.02   LCD                                                                   04/16/2008 22:07:29 PAGE 3   

 118          * 函数名称    :LcmClearTXT
 119          * 功能描述    :文本区清RAM函数
 120          ******************************************************************************************/
 121          void LcmClearTXT(void)
 122          {
 123   1          uchar i;
 124   1              WriteCommand(0x80);//设定DDRAM地址80H
 125   1              for(i=0;i<16;i++) WriteData(0x20); 
 126   1              WriteCommand(0x90);//设定DDRAM地址90H
 127   1          for(i=0;i<16;i++) WriteData(0x20);
 128   1      }
 129          /******************************************************************************************
 130          * 函数名称    :LcmClearBMP
 131          * 功能描述    :图形区清RAM函数
 132          ******************************************************************************************/
 133          /*void LcmClearBMP(void)
 134          {
 135               uchar i,j;
 136               WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次
 137               WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图
 138               for(i=0;i<32;i++)           
 139               {
 140                     WriteCommand(0x80|i);      //行位置
 141                     WriteCommand(0x80);      //列位置
 142                     for(j=0;j<16;j++)            
 143                          WriteData(0);
 144               }
 145          } */
 146          
 147          void ClrDis(void)
 148          {
 149   1              WriteCommand(0x01);
 150   1      }
 151          
 152          void White(uchar firstsecond)
 153          {
 154   1              WriteCommand(0x34);
 155   1              if(firstsecond==0) WriteCommand(04);
 156   1              else if(firstsecond==1) WriteCommand(05);
 157   1              WriteCommand(0x30);
 158   1      }
 159          /******************************************************************************************
 160          * 函数名称    :PutStr
 161          * 功能描述    :
 162          ******************************************************************************************/
 163          void PutStr(uchar row,uchar col,uchar *puts)
 164          {
 165   1           WriteCommand(0x30);      //8BitMCU,基本指令集合
 166   1           WriteCommand(AC_TABLE[8*row+col]);      //起始位置
 167   1           while(*puts != '\0')      //判断字符串是否显示完毕
 168   1           {
 169   2                 if(col==8)            //判断换行
 170   2                 {            //若不判断,则自动从第一行到第三行
 171   3                              col=0;
 172   3                      row++;
 173   3                 }
 174   2                 if(row==2) row=0;      //一屏显示完,回到屏左上角
 175   2                 WriteCommand(AC_TABLE[8*row+col]);
 176   2                 WriteData(*puts);      //一个汉字要写两次
 177   2                 puts++;
 178   2                 WriteData(*puts);
 179   2                 puts++;
C51 COMPILER V8.02   LCD                                                                   04/16/2008 22:07:29 PAGE 4   

 180   2                 col++;
 181   2           }
 182   1      }
 183          
 184          /*void WriteHalf(uchar ad,uchar da)
 185          {
 186                  WriteCommand(ad);       
 187                  WriteData(da);
 188          }*/
 189          
 190          /******************************************************************************************
 191          * 函数名称    :PutBMP
 192          * 功能描述    :
 193          ******************************************************************************************/
 194          /*void PutBMP(uchar *puts)
 195          {
 196               uint x=0;
 197               uchar i,j;
 198               WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次
 199               WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图
 200               for(i=0;i<32;i++)            //12864实际为256x32
 201               {
 202                     WriteCommand(0x80|i);      //行位置
 203                     WriteCommand(0x80);      //列位置
 204                     for(j=0;j<16;j++)      //256/8=32 byte
 205                     {            //列位置每行自动增加
 206                           WriteData(puts[x]);
 207                           x++;
 208                     }
 209               }
 210          }*/
 211          


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