📄 ocm12864.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 + -