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

📄 ocm12864.lst

📁 LCD显示 在液晶屏上显示文字 51单片机应用
💻 LST
字号:
C51 COMPILER V8.02   OCM12864                                                              08/12/2008 19:23:49 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE OCM12864
OBJECT MODULE PLACED IN ocm12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ocm12864.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          下面是对OCM12864进行操作的函数接口
   3          */
   4          #include "reg51.h"
   5          #include "ldy.h"
*** ERROR C252 IN LINE 2 OF LDY.H: misplaced primary control, line ignored
*** ERROR C231 IN LINE 3 OF LDY.H: 'SP': redefinition
*** ERROR C231 IN LINE 4 OF LDY.H: 'DPL': redefinition
*** ERROR C231 IN LINE 5 OF LDY.H: 'DPH': redefinition
*** ERROR C231 IN LINE 6 OF LDY.H: 'PCON': redefinition
*** ERROR C231 IN LINE 7 OF LDY.H: 'TCON': redefinition
*** ERROR C231 IN LINE 8 OF LDY.H: 'TMOD': redefinition
*** ERROR C231 IN LINE 9 OF LDY.H: 'TL0': redefinition
*** ERROR C231 IN LINE 10 OF LDY.H: 'TL1': redefinition
*** ERROR C231 IN LINE 11 OF LDY.H: 'TH0': redefinition
*** ERROR C231 IN LINE 12 OF LDY.H: 'TH1': redefinition
*** ERROR C231 IN LINE 13 OF LDY.H: 'P1': redefinition
*** ERROR C231 IN LINE 14 OF LDY.H: 'P0': redefinition
*** ERROR C231 IN LINE 15 OF LDY.H: 'P2': redefinition
*** ERROR C231 IN LINE 16 OF LDY.H: 'SCON': redefinition
*** ERROR C231 IN LINE 17 OF LDY.H: 'SBUF': redefinition
*** ERROR C231 IN LINE 18 OF LDY.H: 'IE': redefinition
*** ERROR C231 IN LINE 19 OF LDY.H: 'P3': redefinition
*** ERROR C231 IN LINE 20 OF LDY.H: 'IP': redefinition
*** ERROR C231 IN LINE 21 OF LDY.H: 'PSW': redefinition
*** ERROR C231 IN LINE 22 OF LDY.H: 'ACC': redefinition
*** ERROR C231 IN LINE 23 OF LDY.H: 'B': redefinition
*** ERROR C231 IN LINE 32 OF LDY.H: 'CY': redefinition
   6          #include "ZiMo.h"       
*** ERROR C141 IN LINE 788 OF ZIMO.H: syntax error near 'char'
   7          #include "ExternDefine.h"
*** WARNING C318 IN LINE 7 OF ocm12864.c: can't open file 'ExternDefine.h'
   8          
   9          #define uchar unsigned char             //声明uchar为无符号字符型
  10          #define uint unsigned int               //声明uint为无符号整型
  11          
  12          #define REFRESH 20
  13          uchar ucFn = 0;
  14          bit bChinese = 1;
  15          bit bErrorFlag = 0;     //是否已显示提示错误
  16          
  17          //bit bPause = 0;       //暂停指示灯标志位
  18          extern unsigned char idata Buffer[RDCOUNT][BUFFLEN];
*** ERROR C202 IN LINE 18 OF OCM12864.C: 'RDCOUNT': undefined identifier
*** ERROR C136 IN LINE 18 OF OCM12864.C: invalid dimension size: [0]
*** ERROR C136 IN LINE 18 OF OCM12864.C: invalid dimension size: [0]
  19          extern unsigned char buffin,ucRCount,ucDCount;
  20          extern bit bReceError1,bReceError2;     //add by zhx,05.12.29,出现校验和错误
  21          extern bit bAllUp,bLast;
  22          extern unsigned char KeyValue[2];
  23          
  24          /****************************/
  25          /********/
  26          /*函数原型:void delay(uint v)
  27          /*参数:v
C51 COMPILER V8.02   OCM12864                                                              08/12/2008 19:23:49 PAGE 2   

  28          /*功能:延时
  29          /*说明:delay(1)相当于延时10微秒(us)
  30          /********/
  31          /****************************************/
  32          void delay(uint v) //声明函数名为delay的函数,并定义无符号整形变量v
  33                  {
  34   1      
  35   1              WDTRST = 0x1E;  //启动看门狗
*** ERROR C202 IN LINE 35 OF OCM12864.C: 'WDTRST': undefined identifier
  36   1              WDTRST = 0xE1;  
*** ERROR C202 IN LINE 36 OF OCM12864.C: 'WDTRST': undefined identifier
  37   1      
  38   1              while(v!=0)v--;//当v不等于0时,v自减,目的为指令延时
  39   1              WDTRST = 0x1E;  //启动看门狗
*** ERROR C202 IN LINE 39 OF OCM12864.C: 'WDTRST': undefined identifier
  40   1              WDTRST = 0xE1;  
*** ERROR C202 IN LINE 40 OF OCM12864.C: 'WDTRST': undefined identifier
  41   1          }
  42          
  43          /****************************/
  44          /********/
  45          /*函数原型:void reset()
  46          /*参数:
  47          /*功能:复位
  48          /*说明:当RST送低电平复位,高电平正常工作
  49          /********/
  50          /****************************************/
  51          
  52          void reset()            //声明函数名为reset的函数
  53                  {
  54   1              P32=0;         //LCD的RST置低电平
  55   1              delay(20);     //延时约200微秒
  56   1              P32=1;         //LCD的RST置高电平
  57   1              delay(20);     //延时约200微秒
  58   1              }
  59          
  60          /*******************************/
  61          /********/
  62          /*函数原型:void wcode(uchar c,uchar cs1,uchar cs2)
  63          /*参数:c,cs1,cs2
  64          /*功能:写代码
  65          /*说明:D/I和R/W都为0时为写代码,根据p1不同的数据发送不同的指令cs1、cs2分别为左右选屏
  66          /*********/
  67          /****************************************/
  68          void wcode(uchar c,uchar cs1,uchar cs2)       //声明函数名为wcode()的函数,并定义无符号整形变量c,cs1,cs2
  69                  {
  70   1              P34=cs1;       //cs1=1打通LCD左半屏片选
  71   1              P33=cs2;       //cs2=1选通LCD右半屏片选
  72   1              P37=0;         //D/I赋0为写代码(命令)
  73   1              P36=0;             //R/W赋0为写操作
  74   1              P1=c;              //c数据送p1
  75   1              P35=0;         //使能位置0
  76   1              delay(10);         //延时约100微秒
  77   1              P35=1;         //使能位置1
  78   1              delay(10);     //延时约100微秒
  79   1              P35=0;         //使能位由1变0,数据有效传送
  80   1              }
  81                  
  82          /*************************************/
  83          /********/
  84          /*函数原型:void wdata(uchar c,uchar cs1,uchar cs2)
  85          /*参数:c,cs1,cs2
C51 COMPILER V8.02   OCM12864                                                              08/12/2008 19:23:49 PAGE 3   

  86          /*功能:写显示数据
  87          /*说明:D/I为1、R/W为0时,c为要发送到RAM中的显示数据,cs1、cs2分别为选择左右半屏,置1为选中,置0为不选。
  88          /********/
  89          /*************************************/
  90          void wdata(uchar c,uchar cs1,uchar cs2) //定义名为wdata的函数,并将形参c,cs1,cs2定义为无符号字符型变量
  91                  {
  92   1              P34=cs1;        //是否选中左半屏
  93   1              P33=cs2;        //是否选中右半屏
  94   1              P37=1;          //LCM的D/I置1,选择显示资料寄存器
  95   1              P36=0;          //LCM的R/W置0,选择写操作
  96   1              P1=c;           //将要写入LCM的显示资料送P1
  97   1              P35=0;          //使能位置0
  98   1              delay(10);      //延时约100微秒
  99   1              P35=1;          //使能位置1
 100   1              delay(10);      //延时约100微秒
 101   1              P35=0;          //使能位由1到0向下跳变,显示数据有效传送
 102   1              }
 103                  
 104          /********************************************/
 105          /********/
 106          /*函数原型:void set_startline(uchar i) 
 107          /*参数:i
 108          /*功能:设置显示开始行
 109          /*说明:设置显示开始行为第i行,i为小于64的正整数
 110          /********/
 111          /*******************************************/
 112          void set_startline(uchar i)     //定义名为set_startline的函数,并将形参i定义为无符号字符型变量
 113                  {
 114   1              i=0xc0+i;               //设定显示起始行的指令代码
 115   1              wcode(i,1,1);           //将显示起始行指令写入LCM的左右半屏
 116   1              }
 117                  
 118          /******************************************/
 119          /********/
 120          /*函数原型:void set_adr(uchar x,uchar y)       
 121          /*参数:x,y
 122          /*功能:设置读/写显示数据的具体位置
 123          /*说明:设置读/写显示数据的具体位置为第X页的第Y列
 124          /********/
 125          /*******************************************/
 126          void set_adr(uchar x,uchar y)   //定义名为set_ adr的函数,并将形参x、y定义为无符号字符型变量
 127                  {
 128   1              x=x+0xb8;y=y+0x40;      //设置第X页和第Y列的指令代码
 129   1              wcode(x,1,1);           //将页地址写入LCM的左右半屏
 130   1              wcode(y,1,1);           //将列地址写入LCM的左右半屏
 131   1              }
 132                  
 133          /*****************************/
 134          /*函数原型:dison_off(uchar o)
 135          /*参数:o
 136          /*功能:显示开关
 137          /*说明:当o为0时为关显示,当o为1时为开显示
 138          /*****************************/
 139          void dison_off(uchar o)         //定义名为dison_off的函数,并将形参o定义为无符号字符型变量
 140                  {
 141   1              o=o+0x3e;               //设定显示开关的指令代码
 142   1              wcode(o,1,1);           //将显示开关指令写入LCM的左右半屏       
 143   1              }
 144                  
 145          /****************************/
 146          /********/
 147          /*函数原型:void clear()
C51 COMPILER V8.02   OCM12864                                                              08/12/2008 19:23:49 PAGE 4   

 148          /*功能:清屏
 149          /*说明:以整个显示RAM填0的方式清屏
 150          /*************/
 151          /****************************************/
 152          void clear()                                //声明清屏函数void clear()
 153          {
 154   1              uchar i,loop;                       //定义无符号整形变量i,loop
 155   1              
 156   1              for(i=0;i<8;i++)                                //整屏共8页,循环8次
 157   1                      {
 158   2                      WDTRST = 0x1E;  //启动看门狗
*** ERROR C202 IN LINE 158 OF OCM12864.C: 'WDTRST': undefined identifier
 159   2                      WDTRST = 0xE1;  
*** ERROR C202 IN LINE 159 OF OCM12864.C: 'WDTRST': undefined identifier
 160   2                      set_adr(i,0);                           //设置页地址
 161   2                      for(loop=0;loop<64;loop++)      //一页有64个Y地址,循环64次
 162   2                              wdata(0,1,1);                   //写0至左右半屏 
 163   2                      }
 164   1      }
 165          
 166          /****************************/
 167          /********/
 168          /*函数原型:void Lcd_Init()
 169          /*功能:液晶屏初始化
 170          /*说明:指令代码控制屏幕的开启
 171          /*************/
 172          /****************************************/
 173          void Lcd_Init()         //液晶初始化
 174          {
 175   1              reset();        //复位子程序
 176   1              clear();        //清屏
 177   1              dison_off(1);   //开屏
 178   1      }
 179          
 180          /*****************************/
 181          /*函数原型:Show12864_Row(unsigned char cs1,unsigned char cs2,unsigned char x,unsigned char y,unsigned cha
             -r ucSelect,unsigned char * pScr_Row)
 182          /*参数:cs1,cs2,X,Y,ucSelect,*pScr_Row
 183          /*功能:液晶显示的具体位置和显示时的正反选状态以及显示的内容
 184          /*说明:cs1为1时打开左屏,为cs2为1时打开右屏;x为显示的行值,可以为0,1,2,3; y为显示的列值(0~127);ucSelect为0

⌨️ 快捷键说明

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