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

📄 text1.lst

📁 基于51单片机的12864液晶显示源程序
💻 LST
字号:
C51 COMPILER V7.06   TEXT1                                                                 12/17/2008 10:18:35 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN .\Text1.obj
COMPILER INVOKED BY: F:\Hardware Develop\Develop Tools\Keil uVision v2.0\KEIL\C51\BIN\C51.EXE C:\Documents and Settings\
                    -Administrator\桌面\Text1.C BROWSE DEBUG OBJECTEXTEND PRINT(.\Text1.lst) OBJECT(.\Text1.obj)

stmt level    source

   1          //带中文字库的12864LCD显示程序
   2          #include <reg52.H>
   3          #include <intrins.H>
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          //SCM12864-05端口定义
   7          #define LCD_DATA P1 //数据口
   8          sbit RS = P3^2; //并行的指令/数据选择信号, H数据, L命令
   9          sbit RW = P3^3; //并行读写选择信号, H读, L写
  10          sbit E = P3^4; //并行使能端, H有效, L无效
  11          sbit PSB = P3^5; //并/串接口选择, H并,L串
  12          sbit RET = P3^6; //复位, L有效
  13          uchar code datas1[] = {"    平板显示    "};
  14          uchar code datas2[] = {"  机电工程学院  "};
  15          uchar code datas3[] = {"05电子科学与技术"};
  16          uchar code datas4[] = {" 张敏 051203082 "};
  17          //延时约2us
  18          void delayUs()
  19          {
  20   1          _nop_();_nop_();
  21   1      }
  22          //延时 a * 1ms
  23          void delayMs(uint a)
  24          {
  25   1          uint i, j;
  26   1          for(i = a; i > 0; i--)
  27   1              for(j = 100; j > 0; j--);
  28   1      }
  29          //检测LCD是否处于忙状态, 若忙返回1, 空闲返回0
  30          bit checkBusy()
  31          {
  32   1          bit busy;
  33   1          RS = 0;
  34   1          RW = 1;
  35   1          E = 1;
  36   1          delayUs();
  37   1          busy = (bit)(LCD_DATA&0x80);
  38   1          E = 0;
  39   1          return busy;
  40   1      }
  41          
  42          
  43          
  44          //等待LCD到空闲
  45          void wait()
  46          {
  47   1          while(checkBusy());
  48   1      }
  49          //写命令
  50          void writeCmd(uchar cmd)
  51          {
  52   1          wait();
  53   1          RS = 0;
  54   1          RW = 0;
C51 COMPILER V7.06   TEXT1                                                                 12/17/2008 10:18:35 PAGE 2   

  55   1          E = 0;
  56   1          delayUs();
  57   1          LCD_DATA = cmd;
  58   1          delayUs();
  59   1          E = 1;
  60   1          delayUs();
  61   1          E = 0;
  62   1      }
  63          //写数据
  64          void writeData(uchar dat)
  65          {
  66   1          wait();
  67   1          RS = 1;
  68   1          RW = 0;
  69   1          E = 0;
  70   1          delayUs();
  71   1          LCD_DATA = dat;
  72   1          delayUs();
  73   1          E = 1;
  74   1          delayUs();
  75   1          E = 0;
  76   1      }
  77          //初始化LCD
  78          void init()
  79          {
  80   1          PSB = 1; //并口方式
  81   1          writeCmd(0x30); //基本指令, 扩充指令为34H
  82   1          delayMs(10);
  83   1          writeCmd(0x0c); //显示开, 关光标
  84   1          delayMs(10);
  85   1       
  86   1      
  87   1      
  88   1         writeCmd(0x01); //清屏
  89   1          delayMs(10);
  90   1      }
  91          void setPosition(uchar x, uchar y)
  92          {
  93   1          uchar p;
  94   1          switch(x%4)
  95   1          {
  96   2              case 0: p = 0x80; break; //第一行开始地址
  97   2              case 1: p = 0x90; break; //第二行
  98   2              case 2: p = 0x88; break; //第三行
  99   2              case 3: p = 0x98; break; //第四行
 100   2          }
 101   1          p += y;
 102   1          writeCmd(p);
 103   1      }
 104          void writeString(uchar * str)
 105          {
 106   1          uchar i = 0;
 107   1          while(str[i] != '\0')
 108   1          {
 109   2              writeData(str[i++]);
 110   2          }
 111   1      }
 112          /**********************LCD12864*****************************/
 113          void main()
 114          {
 115   1          init();
 116   1          setPosition(0, 0);
C51 COMPILER V7.06   TEXT1                                                                 12/17/2008 10:18:35 PAGE 3   

 117   1          writeString(datas1);
 118   1          setPosition(1, 0);
 119   1          writeString(datas2);
 120   1          setPosition(2, 0);
 121   1          writeString(datas3);
 122   1          setPosition(3, 0);
 123   1          writeString(datas4);
 124   1          while(1);
 125   1      }
 126          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    272    ----
   CONSTANT SIZE    =     68    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   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 + -