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

📄 12864.lst

📁 液晶模块12864的c语言程序
💻 LST
字号:
C51 COMPILER V7.50   12864                                                                 08/07/2007 10:01:30 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 12864
OBJECT MODULE PLACED IN D:\VW\WORK\CM12864\12864.OBJ
COMPILER INVOKED BY: d:\keil\C51\BIN\C51.EXE D:\VW\WORK\CM12864\12864.C DB SB OE

line level    source

   1          /*
   2          12864LCD (ST7920)驱动程序
   3          马文垒     2004/12/27
   4          
   5          */
   6          
   7          #include <reg52.h>
   8          #include <intrins.h>
   9            //引脚定义
  10          sbit CS=P2^0;   //片选 高电平有效 单片LCD使用时可固定高电平
  11          sbit SID=P2^2;  //数据
  12          sbit SCLK=P2^4; //时钟
  13          sbit PSB=P3^5;  //低电平时表示用串口驱动,可固定低电平
  14          sbit RESET=P3^7;        //LCD复位,LCD模块自带复位电路。可不接
  15          
  16          void write(bit start, unsigned char ddata);
  17          void sendbyte(unsigned char bbyte);
  18          void delaynms(unsigned int di);
  19          void lcdinit(void);
  20          void lcdtest(void);
  21          void lcdcls(void);
  22          
  23          unsigned char code ma[] ={"  汉字显示LCD   "};
  24          unsigned char code ma2[]={"自带字库图文混排"};
  25          unsigned char code ma3[]={"控制IC:ST7920  "};
  26          unsigned char code ma4[]={"湘潭大学信工学院"};
  27          
  28          void lcdinit(void)      //初始化LCD
  29          {
  30   1        delaynms(10); //启动等待,等LCM讲入工作状态
  31   1        PSB=0; ;       //串口驱动模式
  32   1        RESET=0; delaynms(1); RESET=1; // 复位LCD
  33   1        CS=1;
  34   1        write(0,0x30);  //8 位介面,基本指令集
  35   1        write(0,0x0c);  //显示打开,光标关,反白关
  36   1        write(0,0x01);  //清屏,将DDRAM的地址计数器归零
  37   1      }
  38          
  39          void write(bit start, unsigned char ddata) //写指令或数据
  40          {
  41   1        unsigned char start_data,Hdata,Ldata;
  42   1        if(start==0) start_data=0xf8;  //写指令
  43   1          else       start_data=0xfa;  //写数据
  44   1      
  45   1        Hdata=ddata&0xf0;               //取高四位
  46   1        Ldata=(ddata<<4)&0xf0;  //取低四位
  47   1        sendbyte(start_data);   //发送起始信号
  48   1        delaynms(5); //延时是必须的
  49   1        sendbyte(Hdata);            //发送高四位
  50   1        delaynms(1);  //延时是必须的
  51   1        sendbyte(Ldata);                //发送低四位
  52   1        delaynms(1);  //延时是必须的
  53   1      }
  54          
  55          void sendbyte(unsigned char bbyte) //发送一个字节
C51 COMPILER V7.50   12864                                                                 08/07/2007 10:01:30 PAGE 2   

  56          {
  57   1       unsigned char i;
  58   1       for(i=0;i<8;i++)
  59   1         {
  60   2         SID=bbyte&0x80; //取出最高位
  61   2         SCLK=1;
  62   2         SCLK=0;
  63   2         bbyte<<=1; //左移
  64   2         }
  65   1      }
  66          
  67          void delaynms(unsigned int di) //延时
  68          {
  69   1       unsigned int da,db;
  70   1       for(da=0;da<di;da++)
  71   1         for(db=0;db<10;db++);
  72   1      }
  73          
  74          void lcdtest(void)      //图形方式下屏幕全黑
  75          {
  76   1      unsigned char i,j;
  77   1      for(i=0;i<32;i++)
  78   1        { write(0,0x80+i);write(0,0x80);
  79   2          for(j=0;j<16;j++) write(1,0xff);
  80   2        }
  81   1      
  82   1       for(i=0;i<32;i++)
  83   1        { write(0,0x80+i);write(0,0x88);
  84   2          for(j=0;j<16;j++) write(1,0xff);
  85   2        }
  86   1      }
  87          
  88          void lcdcls(void)  //图形方式下清屏
  89          {
  90   1      unsigned char i,j;
  91   1      for(i=0;i<32;i++)
  92   1        { write(0,0x80+i);write(0,0x80);
  93   2          for(j=0;j<16;j++) write(1,0x00);
  94   2        }
  95   1      
  96   1       for(i=0;i<32;i++)
  97   1        { write(0,0x80+i);write(0,0x88);
  98   2          for(j=0;j<16;j++) write(1,0x00);
  99   2        }
 100   1      }
 101          
 102          void main(void)
 103          {
 104   1       unsigned char i;
 105   1       lcdinit();
 106   1      
 107   1       while(1)
 108   1       {
 109   2        write(0,0x80); for(i=0;i<16;i++)  write(1,ma[i]);
 110   2        write(0,0x90); for(i=0;i<16;i++)  write(1,ma2[i]);
 111   2        write(0,0x88); for(i=0;i<16;i++)  write(1,ma3[i]);
 112   2        write(0,0x98); for(i=0;i<16;i++)  write(1,ma4[i]);
 113   2      
 114   2        write(0,0x36); //图形方式
 115   2        lcdtest();
 116   2        lcdcls();
 117   2       }
C51 COMPILER V7.50   12864                                                                 08/07/2007 10:01:30 PAGE 3   

 118   1      
 119   1      }
 120          
 121          
 122          
 123          
C51 COMPILER V7.50   12864                                                                 08/07/2007 10:01:30 PAGE 4   

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


ma2. . . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0011H  17
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
ma3. . . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0022H  17
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
ma4. . . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0033H  17
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
RESET. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
CS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A0H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
write. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0008H  -----
  start. . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  ddata. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  start_data . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  Hdata. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
  Ldata. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0003H  1
SCLK . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A4H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
_delaynms. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  di . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  da . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
  db . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
_sendbyte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  bbyte. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
ma . . . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  17
SID. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A2H  1
PSB. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
lcdinit. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
lcdtest. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
lcdcls . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    499    ----
   CONSTANT SIZE    =     68    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -