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

📄 main.lst

📁 LCD128x64驱动(KS0108)
💻 LST
字号:
C51 COMPILER V9.00   MAIN                                                                  05/02/2011 12:47:57 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"LCDzimo.h"
   2          #include <at89x52.h>  //头文件
   3          //液晶信号控制引脚定义
   4          #define DATAport P0 // LCD数据口
   5          sbit LCDC1=P2^0;        // 片选1
   6          sbit LCDC2=P2^1;        // 片选2
   7          sbit LCDRS=P2^2;        // 数据\指令 选择
   8          sbit LCDRW=P2^3;        // 读\写 选择
   9          sbit LCDE =P2^4;        // 读\写 使能
  10          
  11          void delay(unsigned char x){
  12   1              unsigned int i;
  13   1              while(x--){
  14   2                      for(i=100;i>0;i--);
  15   2              }
  16   1      }
  17          /*LCD忙状态检测*/
  18          void LCDbusy(){
  19   1              unsigned char busy;
  20   1              LCDRS=0;//指令模式
  21   1              LCDRW=1;//读控制器模式
  22   1              do{
  23   2                  DATAport=0x00;//此条指令做仿真调试用
  24   2                      LCDE=1; 
  25   2                      busy=DATAport;
  26   2                      LCDE=0;
  27   2                      busy=busy&0x80;//取出最高位
  28   2              }
  29   1              while(busy);
  30   1      }
  31          /*LCD写命令函数*/
  32          void LCDcmd(unsigned char cmd){
  33   1              LCDbusy();
  34   1              LCDRS=0;//指令模式
  35   1              LCDRW=0;//写控制器模式
  36   1              DATAport=cmd;
  37   1              LCDE=1;//采用下降沿将数据写入LCD
  38   1              LCDE=0;
  39   1      }
  40          /*LCD写数据函数*/
  41          void LCDdat(unsigned char dat){
  42   1              LCDbusy();
  43   1              LCDRS=1;//数据模式
  44   1              LCDRW=0;//写控制器模式
  45   1              DATAport=dat;
  46   1              LCDE=1;//采用下降沿将数据写入LCD
  47   1              LCDE=0; 
  48   1      }
  49          /*LCD片选控制函数*/
  50          void LCDcs(unsigned char x){
  51   1              switch(x){
  52   2                      case 0://选择2片(左右两片)
  53   2                              LCDC1=0;
  54   2                              LCDC2=0;
  55   2                              break;
C51 COMPILER V9.00   MAIN                                                                  05/02/2011 12:47:57 PAGE 2   

  56   2                      case 1://选择左片液晶
  57   2                              LCDC1=0;
  58   2                              LCDC2=1;
  59   2                              break;
  60   2                      case 2://选择右片液晶
  61   2                              LCDC1=1;
  62   2                              LCDC2=0;
  63   2                              break;
  64   2                      default:
  65   2                              break;
  66   2              }       
  67   1      }
  68          /*LCD清屏函数*/
  69          void LCDclear(){                                                 //清屏
  70   1              unsigned char page,i;
  71   1              LCDcs(0);
  72   1              for(page=0xb8;page<0xc0;page++){ //一共写8页
  73   2                      LCDcmd(page);//控制器页选择
  74   2                      LCDcmd(0x40);//控制器列选择
  75   2                      for(i=0;i<64;i++){//写64列数据,每列为一个字节
  76   3                              LCDdat(0x00);//(8个位纵向组成一个页)
  77   3                      }
  78   2              }
  79   1      }
  80          /*LCD初始化函数*/
  81          void LCDrst(){
  82   1              LCDcmd(0xc0); //显示起始为0页
  83   1              LCDcmd(0x3f);  //开启液晶
  84   1      }
  85          /*LCD显示函数*/
  86          void LCDshow(unsigned int x){
  87   1              unsigned char i,p;
  88   1              for(p=0;p<8;p++){//一共写8页
  89   2                      LCDcmd(0xb8+p);//控制器页选择
  90   2                      LCDcmd(0x40);//控制器列选择
  91   2                      LCDcs(1);//左片选择
  92   2                      for(i=0;i<64;i++){
  93   3                              LCDdat(tab0[8+p*8+x*8*12][i]);
  94   3                      }
  95   2                      LCDcs(2);//右片选择
  96   2                      for(i=0;i<64;i++){
  97   3                              LCDdat(tab0[8+p*8+x*8*12][i+64]);
  98   3                      }
  99   2                      LCDcs(0);//左右一起使能
 100   2              }
 101   1      }
 102          /*****主函数*****/
 103          main(){
 104   1              unsigned char page=0;
 105   1          LCDrst(); //初始化液晶
 106   1              LCDcs(0);//选择2块液晶 
 107   1              LCDclear();//清屏
 108   1              while(1){
 109   2      //              LCDcmd(0x3e); //关显示
 110   2                      LCDshow(page);//传数据
 111   2      //              LCDcmd(0x3f); //开显示
 112   2                      delay(1000);
 113   2                      page=page+1;
 114   2                      if(page==4)page=0;
 115   2              }
 116   1      }

C51 COMPILER V9.00   MAIN                                                                  05/02/2011 12:47:57 PAGE 3   


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