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

📄 cm160128.lst

📁 keil c51编写的LCD 12864像素LCD显示屏程序,,通过调用函数,显示grom字库中的7千多个简体中文和字符
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   CM160128                                                              03/08/2008 16:45:23 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE CM160128
OBJECT MODULE PLACED IN CM160128.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CM160128.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include <absacc.h>
   4          #include <math.h>
   5          #include <stdio.h>
   6          #include <string.h>
   7          #include "character.h"
   8          /* 地址定义 */
   9          #define d_add XBYTE[0x8000]
  10          #define c_add XBYTE[0x8100]
  11          /* 常数定义 */
  12          //#define para1 0x20;
  13          unsigned char code para1 = 0x20;
  14          #define uchar unsigned char
  15          #define uint unsigned int
  16          unsigned char data dat1 = 0x30; //LCD显示用变量
  17          unsigned char data dat2 = 0x31;
  18          unsigned char data com = 0x32;
  19          unsigned char data code_1 = 0x33;
  20          unsigned char data attr = 0x34;
  21          unsigned char data O_Y = 0x35;
  22          unsigned char data O_X = 0x36;
  23          //-------------register------------------------
  24          sbit P1_0 = P1^0;
  25          sbit P1_1 = P1^1;
  26          sbit ACC0 = ACC^0;
  27          sbit ACC1 = ACC^1;
  28          /* 定义标志位 */
  29          sbit Acc_0=ACC^0;
  30          sbit Acc_1=ACC^1;
  31          sbit Acc_2=ACC^2;
  32          sbit Acc_3=ACC^3;
  33          uchar num=0;
  34          bit s=0;
  35          bit bStart = 0;//开机测试位
  36          uchar x=0;
  37          uchar y=0;
  38          char code RATE = -123;
  39          unsigned char data STR6[6]={0,0,0,0,0,0};
  40          unsigned int unVolt;
  41          int intTestVolt[2] = {0,100};
  42          unsigned char countVolt = 0;
  43          unsigned char countSuccess = 0;
  44          //parameters, used in SCOM
  45          int intSmpVal = 0x0800;  //模数转换值
  46          unsigned char ucMW2 = 1; //放大倍数
  47          unsigned char ucSmpT = 1;//采样时间
  48          unsigned char ucVolt = 0;//负高压
  49          int intTmpSmpVal = 0x0800;//临时存储模数转换值
  50          unsigned char ucTmpVolt = 0;//临时保存负高压
  51          unsigned int unLCDRefresh = 0;//液晶屏刷新
  52          bit bUpdateSV1 = 0;//接收采样值低4位成功标记位
  53          bit bUpdateSV2 = 0;//接收采样值中间4位成功标记位
  54          bit bUpdateSV = 0; //接收采样值成功标记位
  55          bit bUpdateMW = 0; //接收量程成功标记位
C51 COMPILER V7.06   CM160128                                                              03/08/2008 16:45:23 PAGE 2   

  56          bit bUpdateSmpT = 0;//接收采样时间成功标记位
  57          bit bUpdateVolt1 = 0;//接收负高压低4位成功标记位
  58          bit bUpdateVolt = 0; //接收负高压成功标记位
  59          //-------------------------------------------------------------------
  60          //void delay_ms();
  61          void INIT_1();//液晶初始化函数
  62          void CLEAR();//LCD清屏函数
  63          void CGRAM();//在LCD中建立字符库函数
  64          void CCW2_PR();//写16*16字符函数
  65          void CCW3_PR();//写24*48字符函数
  66          void CW2_PR();
  67          void PR1();
  68          void PR11();
  69          void PR12();
  70          void ST01();
  71          void ST3();
  72          void DISHAZIT(uchar x,uchar y,uchar d);
  73          void DISHAZIT2(uchar x,uchar y,uchar d);
  74          void DISDASC(uchar x,uchar y,uchar d);
  75          void delay_ms(int ms);
  76          //--------------------------------------------
  77          /**************************/
  78          /* 初始化函数 */
  79          /**************************/
  80          INT_1()
  81          {
  82   1          dat1=0x00; /*设文本显示区域首地址*/
  83   1          dat2=0x00;
  84   1              com=0x40;
  85   1              PR1();
  86   1      
  87   1              dat1=para1; /*设文本显示区域宽度*/
  88   1              dat2=0x00;
  89   1              com=0x41;
  90   1              PR1();
  91   1      
  92   1              dat1=0x00; /*设图形显示区域首地址*/
  93   1              dat2=0x08;
  94   1              com=0x42;
  95   1              PR1();
  96   1              dat1=para1; /*设图形显示区域宽度*/
  97   1              dat2=0x00;
  98   1              com=0x43;
  99   1              PR1();
 100   1      
 101   1              com=0xa0; /*光标形状设置*/
 102   1              PR12();
 103   1      
 104   1              com=0x80; /*显示方式设置逻辑"或"合成*/
 105   1              PR12();
 106   1      
 107   1              com=0x9c; /*显示开关设置 开文本和图形显示*/
 108   1              PR12();
 109   1      }
 110          /***************************/
 111          /* 清显示子程序 */
 112          /***************************/
 113          void CLEAR()
 114          {
 115   1              unsigned char i,j;
 116   1              dat1=0x00;
 117   1              dat2=0x00;
C51 COMPILER V7.06   CM160128                                                              03/08/2008 16:45:23 PAGE 3   

 118   1              com=0x24;
 119   1              PR1();
 120   1              com=0xb0;
 121   1              PR12();
 122   1              for(i=0;i<205;i++)
 123   1              {
 124   2                      for(j=0;j<=40;j++)
 125   2                      {
 126   3                              ST3();
 127   3                              d_add=0x00;
 128   3                      }
 129   2              }
 130   1              com=0xb2;
 131   1              PR12();
 132   1      }/**************************/
 133          /* CGRAM函数 */
 134          /**************************/
 135          void CGRAM()
 136          {
 137   1              unsigned int i;
 138   1      
 139   1              dat1=0x03;
 140   1              dat2=0x00;
 141   1              com=0x22; /* 设置CGRAM偏置地址 */
 142   1              PR1();
 143   1              dat1=0x00;
 144   1              dat2=0x1c;
 145   1              com=0x24; /* 设置存储器地址指针 */
 146   1              PR1();
 147   1              com=0xb0; /* 设置自动写方式 */
 148   1              PR12();
 149   1              for(i=0;i<320;i++)
 150   1              {
 151   2                      ST3();
 152   2                      d_add=CGTAB[i];
 153   2              }
 154   1              com=0xb2; /* 设置自动写结束方式 */
 155   1              PR12();
 156   1      }
 157          
 158          /********************************/
 159          /* 汉字写入(文本方式)函数 */
 160          /********************************/
 161          CCWD_PR() /* */
 162          {
 163   1              unsigned int i,j;
 164   1      
 165   1              i=para1;
 166   1              j=i*O_Y+O_X;
 167   1      
 168   1              dat1=j%256;
 169   1              dat2=j/256;
 170   1              com=0x24; /* 设置显示地址 */
 171   1              PR1();
 172   1              dat2=code_1; /* 写入左上半部汉字代码 */
 173   1              com=0xc0;
 174   1              PR11();
 175   1      
 176   1              j=j+i;
 177   1              dat1=j%256; /* 显示RAM地址修正 */
 178   1              dat2=j/256;
 179   1              com=0x24;
C51 COMPILER V7.06   CM160128                                                              03/08/2008 16:45:23 PAGE 4   

 180   1              PR1();
 181   1      
 182   1              dat2=code_1+0x01; /* 写入左下半部汉字代码 */
 183   1              com=0xc0;
 184   1              PR11();
 185   1      }
 186          
 187          void CCW2_PR()
 188          {
 189   1              unsigned int i,j,count1;
 190   1      
 191   1              i=para1;
 192   1              j=i*O_Y+O_X+0x0800;
 193   1              for(count1=0;count1<16;count1++)
 194   1              {
 195   2                      dat1=j%256;
 196   2                      dat2=j/256;
 197   2                      com=0x24;
 198   2                      PR1();
 199   2      
 200   2                      dat2=CCTAB[code_1][count1]; /* 写入汉字左侧代码 */
 201   2                      com=0xc0;
 202   2                      PR11();
 203   2      
 204   2                      dat2=CCTAB[code_1][count1+16]; /* 写入汉字右侧代码 */
 205   2                      PR11();
 206   2                      j=j+i;
 207   2              }
 208   1      }
 209          void CCW3_PR()//写24*48字符函数(显示采样值)
 210          {
 211   1              unsigned int i,j,count1;
 212   1      
 213   1              i=para1;
 214   1              j=i*O_Y+O_X+0x0800;
 215   1              for(count1=0;count1<48;count1++)
 216   1              {
 217   2                      dat1=j%256;
 218   2                      dat2=j/256;
 219   2                      com=0x24;
 220   2                      PR1();
 221   2      
 222   2                      dat2=CCTAB2[code_1][count1]; /* 写入汉字左侧代码 */
 223   2                      com=0xc0;
 224   2                      PR11();
 225   2                      dat2=CCTAB2[code_1][count1+48]; /* 写入汉字中间代码 */
 226   2                      PR11();
 227   2                      dat2=CCTAB2[code_1][count1+96]; /* 写入汉字右侧代码 */
 228   2                      PR11();
 229   2                      j=j+i;
 230   2              }
 231   1      }
 232          void CCW4_PR()//写160*128字符函数
 233          {
 234   1              unsigned int i,j,count1;
 235   1              unsigned char h = 0;
 236   1              i=para1;
 237   1              j=i*O_Y+O_X+0x0800;
 238   1              for(count1=0;count1<128;count1++)
 239   1              {
 240   2                      dat1=j%256;
 241   2                      dat2=j/256;
C51 COMPILER V7.06   CM160128                                                              03/08/2008 16:45:23 PAGE 5   

 242   2                      com=0x24;
 243   2                      PR1();
 244   2      
 245   2                      dat2=welcome[code_1][count1];
 246   2                      com=0xc0;
 247   2                      PR11();
 248   2      
 249   2                      for(h = 1; h < 20; h++)
 250   2                      {
 251   3                           dat2=welcome[code_1][count1+128*h];
 252   3                           PR11();
 253   3                      }
 254   2                      j=j+i;
 255   2              }
 256   1      }
 257          
 258          /****************************/
 259          /* 写指令和写数据函数 */
 260          /****************************/
 261          void PR1() /* 双字节参数指令写入入口 */
 262          {
 263   1              ST01();
 264   1              d_add=dat1; /* 取第一参数单元数据 */

⌨️ 快捷键说明

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