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

📄 lce128642.lst

📁 12864的LCD驱动程序加仿真,可以运行和调整的,自己弄得,大家批判了
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.12  LCE128642                                                              04/27/2007 18:12:05 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE LCE128642
OBJECT MODULE PLACED IN .\lce128642.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\lce128642.c DEBUG OBJECTEXTEND CODE SYMBOLS

stmt level    source

   1          //Lcm.c
   2          //
   3          //Body: HT48C30-1
   4          //Mask option
   5          //BZ/BZB : All Disable
   6          //the others use the default value
   7          
   8          #include <reg52.h>
   9          #include <INTRINS.H>
  10          #define Uchar  unsigned char
  11          #define Uint   unsigned int
  12          #define Datalcm P2
  13          #define cotr    P3
  14          
  15          sbit	Elcm=	   P3^0;
  16          sbit	Rwlcm=	P3^1;
  17          sbit	Dilcm=	P3^2;	
  18          sbit	CS2LCM=	P3^3;
  19          sbit	CS1LCM=	P3^4;
  20          
  21          //#pragma vector isr_4 @ 0x4
  22          //#pragma vector isr_8 @ 0x8
  23          //#pragma vector isr_c @ 0xc
  24          
  25          //ISR for safequard
  26          ///void isr_4(){} // external ISR
  27          //void isr_8(){}// timer/event 0
  28          //void isr_c(){} // timer/event 1
  29          
  30          //initialize registers for safeguard
  31          //void safeguard_init(){
  32                //  _intc = 0;
  33                  _//tmrc = 0;
  34                  //tmr = 0;
  35                  //_pac = 0xff; //input mode
  36                  //_pbc = 0xff;
  37                  //_pcc = 0x00;
  38          //}
  39          
  40          //#define FOUR_BIT
  41          //#define ONE_LINE
  42          
  43          
  44          
  45          
  46          
  47          
  48          #define  DISPON 0x3f /*显示on */
  49          #define  DISPOFF 0x3e /*显示off */
  50          #define  DISPFIRST 0xc0 /*显示起始行定义 */
  51          #define  SETX 0x40 /*X定位设定指令(页) */
  52          #define  SETY 0xb8 /*Y定位设定指令(列) */
  53          #define  Lcdbusy 0x80 /*LCM忙判断位 */
  54          
  55          /**************显示分区边界位置*****************/
C51 COMPILER V6.12  LCE128642                                                              04/27/2007 18:12:05 PAGE 2   

  56          #define  MODL 0x00 /*左区 */
  57          
  58          #define  MODR 0x40 /*中区和右区分界 */
  59          #define LCMLIMIT 0x80 /*显示区的右边界 */
  60          
  61          
  62          ;void compute(Uchar *shuzhu,char);
  63          void Lcminit(void); /*液晶模块初始化 */
  64          void Delay(Uchar); /*延时,入口数为Ms */
  65          void lcdbusyL(void); /*busy判断、等待(左区) */
  66          
  67          void lcdbusyR(void); /*busy判断、等待(右区) */
  68          void Putedot(Uchar); /*半角字符输出 */
  69          void Putcdot(Uchar); /*全角(汉字)输出 */
  70          void Wrdata(Uchar); /*数据输出给LCM */
  71          void Lcmcls( void ); /*LCM全屏幕清零(填充0) */
  72          void wtcom(void); /*公用busy等待 */
  73          void Locatexy(void); /*光标定位 */
  74          void WrcmdL(Uchar); /*左区命令输出 */
  75          
  76          void WrcmdR(Uchar); /*右区命令输出 */
  77          void Putstr(Uchar *puts,Uchar i); /*中英文字符串输出 */
  78          void Rollscreen(Uchar x); /*屏幕向上滚动演示 */
  79          void Rddata(void); /*  从液晶片上读数据 */
  80          void point(void); /*打点 */
  81          void Linexy(Uchar endx,Uchar endy);
  82          
  83          void display(void);
  84          /*数组列表*/
  85          char code Ezk[]={
  86          
  87          	
  88             /*-文字:0--0x30 */
  89           0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
  90           0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
  91          /*-文字:1--0x31 */
  92           0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
  93           0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
  94          /*-文字:2--0x32 */
  95           0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
  96           0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
  97          /*-文字:3--0x33 */
  98           0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
  99           0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
 100          /*-文字:4--0x34 */
 101           0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
 102           0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
 103          /*-文字:5--0x35 */
 104           0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
 105           0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
 106          /*-文字:6--0x36 */
 107           0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
 108           0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
 109          /*-文字:7--0x37 */
 110           0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
 111           0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
 112          /*-文字:8--0x38 */
 113           0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
 114           0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
 115          /*-文字:9--0x39 */
 116           0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
 117           0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
C51 COMPILER V6.12  LCE128642                                                              04/27/2007 18:12:05 PAGE 3   

 118          /*-文字::-- */
 119           0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,
 120           0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
 121           /*-文字:.--0x2e */
 122           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 123           0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
 124          
 125          }; /*ASCII常规字符点阵码表 */
 126          
 127          /****************************************/
 128          /* 定义ASCII字库8列*16行 */
 129          /****************************************/
 130          
 131           
 132          Uchar code Hzk[]={
 133                0x00,0x3E,0x22,0xE2,0x22,0x3E,0x00,0xFE,//"距", 
 134                0x22,0x22,0x22,0x22,0xF3,0x22,0x00,0x00,
 135                0x20,0x7F,0x20,0x3F,0x12,0x12,0x00,0x7F,
 136                0x42,0x42,0x42,0x42,0x47,0x60,0x40,0x00,
 137          
 138                0x04,0x04,0x04,0xF4,0x04,0x8C,0x55,0x26,//"离", 
 139                0x54,0x8C,0x04,0xF4,0x04,0x06,0x04,0x00,
 140                0x00,0xFC,0x04,0x05,0x25,0x35,0x2D,0x27,
 141                0x25,0x35,0x25,0x45,0x84,0x7E,0x04,0x00,
 142          
 143          		
 144                0x00,0x00,0xFC,0x24,0x24,0x24,0x24,0x24,//"后",
 145                0x24,0x22,0x22,0x23,0xA2,0x30,0x20,0x00,
 146                0x40,0x30,0x0F,0x00,0x00,0xFF,0x41,0x41,
 147                0x41,0x41,0x41,0x41,0xFF,0x01,0x00,0x00,
 148          
 149          
 150          	  0x08,0x08,0x08,0x08,0x88,0x78,0x0F,0x08,//"左", 
 151                0x08,0x08,0x08,0x88,0x0C,0x08,0x00,0x00,
 152                0x20,0x50,0x48,0x46,0x41,0x41,0x41,0x41,
 153                0x7F,0x41,0x41,0x41,0x41,0x60,0x40,0x00,
 154          
 155          		
 156          	  
 157          
 158                0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,//"右",
 159                0x08,0x08,0x08,0x08,0x88,0x0C,0x08,0x00,
 160                0x08,0x04,0x02,0x01,0xFF,0x41,0x41,0x41,
 161                0x41,0x41,0x41,0x41,0xFF,0x01,0x00,0x00,
 162          
 163          		
 164          	   0x10,0x10,0x10,0x10,0x10,0xF1,0x92,0x96,//	"方", 
 165                0x90,0x90,0x90,0xD0,0x90,0x18,0x10,0x00,
 166                0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,
 167                0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00
 168           };
 169          /*自用汉字点阵码表 */
 170          
 171          char dot2[]=10;
 172          
 173          Uchar disdatahou[4];//="20.0"; /*自定义字符串 */
 174          Uchar   disdatayou[4];//="05.0"; 
 175          Uchar disdatazuo[4];//="05.0"; 
 176          
 177          Uchar   datahou=211;
 178          Uchar   datayou=55;
 179          Uchar   datazuo=50;
C51 COMPILER V6.12  LCE128642                                                              04/27/2007 18:12:05 PAGE 4   

 180          
 181          Uchar   dir;//pian duan fang xiang 
 182          
 183          //Uchar STRhh[]; 
 184          //Uchar  STRh1[];
 185          //Uchar  STRh2[];
 186          //Uchar  STRh3[];
 187          //Uchar  num[];
 188          
 189          /********************************/
 190          /* 演示主程序 */
 191          /********************************/
 192          Uchar col;
 193          Uchar row;
 194          Uchar cbyte; /*列x,行(页)y,输出数据 */
 195          Uchar hou,zuo,you;
 196          bit xy; /*画线方向标志:1水平 */
 197          
 198          void main(void)
 199          
 200          {
 201   1      //Uchar x,y;
 202   1      col=0;
 203   1      row=0;
 204   1      Delay(40); /*延时大约40Ms,等待外设准备好 */
 205   1      Lcminit(); /*液晶模块初始化,包括全屏幕清屏*/
 206   1      
 207   1      
 208   1      while(1){
 209   2      display();
 210   2      }
 211   1      
 212   1      
 213   1      
 214   1      }
 215          
 216          
 217          
 218          
 219          
 220          /****************************************/
 221          /* 画点 */
 222          /****************************************/
 223          
 224          void point(void)
 225          {
 226   1      Uchar x1,y1,x,y;
 227   1      x1=col;
 228   1      y1=row;
 229   1      row=y1>>3; /*取Y方向分页地址 */
 230   1      Rddata();
 231   1      y=y1&0x07; /*字节内位置计算 */
 232   1      x=0x01;
 233   1      x=x<<y; /*移入所画点 */
 234   1      Wrdata(cbyte|x); /*画上屏幕 */
 235   1      col=x1; /*恢复xy坐标 */
 236   1      row=y1;
 237   1      }
 238          
 239          /****************************************/
 240          /* 屏幕滚动定位 */
 241          /****************************************/
C51 COMPILER V6.12  LCE128642                                                              04/27/2007 18:12:05 PAGE 5   

 242          void Rollscreen(Uchar x)
 243          {
 244   1      cbyte = DISPFIRST|x; /*定义显示起始行为x?*/
 245   1      WrcmdL(cbyte);
 246   1      
 247   1      WrcmdR(cbyte);
 248   1      }
 249          
 250          /****************************************/
 251          /* 一个字串的输出 */
 252          /****************************************/
 253          void Putstr(Uchar *puts,Uchar i)
 254          {
 255   1      Uchar j,X;
 256   1      for (j=0;j<i;j++)
 257   1      {
 258   2      X = puts[j];
 259   2      if (X&0x80)
 260   2      {
 261   3      Putcdot(X&0x7f); /*只保留低7位*/
 262   3      }
 263   2      else Putedot(X); /*ascii码表从0x20开始*/
 264   2      //else Putedot(X);
 265   2      }
 266   1      }
 267          
 268          /****************************************/
 269          /*   半角字符点阵码数据输出 */
 270          /****************************************/
 271          void Putedot(Uchar Order)
 272          {
 273   1      Uchar i,bakerx,bakery; /*共定义4个局部变量 */
 274   1      int x; /*偏移量,字符量少的可以定义为UCHAR */
 275   1      bakerx = col; /*暂存x,y坐标,已备下半个字符使用 */
 276   1      bakery = row;
 277   1      x=Order * 0x10; /*半角字符,每个字符16字节 */
 278   1      /*上半个字符输出,8列 */
 279   1      for(i=0;i<8;i++)
 280   1      {
 281   2      cbyte = Ezk[x]; /*取点阵码,rom数组 */
 282   2      Wrdata(cbyte); /*写输出一字节 */
 283   2      x++;
 284   2      col++;

⌨️ 快捷键说明

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