📄 c19264.lst
字号:
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE C19264
OBJECT MODULE PLACED IN C19264.OBJ
COMPILER INVOKED BY: D:\c51v808a\C51\BIN\C51.EXE C19264.c OPTIMIZE(1,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************************
2 **
3 ** 西安博控电子科技有限公司.
4 **
5 ** 文件名: C19264.c
6 **
7 ** 用途: C19264 LCD Driver
8 **
9 ** 修改时间: $ 年 月 日 shw $
10 ******************************************************************************/
11 #include "system.h"
12 #include <intrins.h>
13 #include "HANZI.H"
14 #include <math.h>
15
16 //状态检查
17 void CheckState()
18 {
19 1 Uchar dat;
20 1 di=0;
21 1 rw=1;
22 1 do{
23 2 LCD12864DataPort=0xff;
24 2 en=1;
25 2 dat=LCD12864DataPort;
26 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
27 2 en=0;
28 2 dat=0x90 & dat; //仅当第4,7位为0时才可操作
29 2 }while(!(dat==0x00));
30 1 }
31 /******************************************************************************
32 ** 函数名: void WriteByte(Uchar dat)
33
34 ** 描述: 写数据
35
36 ** 修改的全局变量:
37
38 ** 输入参数:
39
40 ** 返回值:
41 *******************************************************************************/
42 void WriteByte(Uchar dat)
43 {
44 1 CheckState();
45 1 di=1; rw=0;
46 1 LCD12864DataPort=dat;
47 1 en=0;
48 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
49 1 en=1;
50 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
51 1 en=0;
52 1 rw=1;
53 1 }
54
55 /******************************************************************************
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 2
56 ** 函数名: void WriteByte(Uchar dat)
57
58 ** 描述: 写数据
59
60 ** 修改的全局变量:
61
62 ** 输入参数:
63
64 ** 返回值:
65 *******************************************************************************/
66 unsigned char ReadByte(void)
67 {
68 1 unsigned char Dat;
69 1 CheckState();
70 1 di=1; rw=1;
71 1 LCD12864DataPort=0xFF;
72 1 en=0;
73 1 en=1;
74 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
75 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
76 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
77 1 Dat = LCD12864DataPort;
78 1 en=0;
79 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
80 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
81 1
82 1 //Dat = LCD12864DataPort;
83 1 //Dat = LCD12864DataPort;
84 1 return Dat;
85 1 }
86 /*-----------------------------------------------------------------------------------------------------*/
87 /******************************************************************************
88 ** 函数名: void SendCommandToLCD(Uchar command)
89
90 ** 描述: 写命令
91
92 ** 修改的全局变量:
93
94 ** 输入参数:
95
96 ** 返回值:
97 *******************************************************************************/
98 void SendCommandToLCD(Uchar command)
99 {
100 1 CheckState();
101 1 rw=0;
102 1 LCD12864DataPort=command;
103 1 en=1;
104 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
105 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
106 1 en=0;
107 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
108 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
109 1
110 1 rw=1;
111 1 }
112 /*----------------------------------------------------------------------------------------------------*/
113 //设定行地址(页)--X 0-7
114 void SetLine(Uchar line)
115 {
116 1 line=line & 0x07; // 0<=line<=7
117 1 line=line|0xb8; //1011 1xxx
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 3
118 1 SendCommandToLCD(line);
119 1 }
120 //设定列地址--Y 0-63
121 void SetColumn(Uchar column)
122 {
123 1 column=column &0x3f; // 0=<column<=63
124 1 column=column | 0x40; //01xx xxxx
125 1 SendCommandToLCD(column);
126 1 }
127
128
129 void Rst_LCD(void)
130 {
131 1 LCD_RST=0;
132 1 delay(2000);
133 1 LCD_RST=1;
134 1 }
135 //选择屏幕
136 //screen: 0-全屏,1-第一屏,2-第二屏,3-第三屏
137 void SelectScreen(Uchar screen)
138 { //北京显示器:负有效
139 1 switch(screen)
140 1 {
141 2 //------------------------------------------------------------------------------------------------
142 2 case 0: cs1=0;//全屏
143 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
144 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
145 2 cs2=0;
146 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
147 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
148 2 cs3=0;
149 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
150 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
151 2 break;
152 2 //------------------------------------------------------------------------------------------------
153 2 case 1: cs1=0;//
154 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
155 2 cs2=1;
156 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
157 2 cs3=1;
158 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
159 2 break;
160 2 //------------------------------------------------------------------------------------------------
161 2 case 2: cs1=1;//
162 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
163 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
164 2 cs2=0;
165 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
166 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
167 2 cs3=1;
168 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
169 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
170 2 break;
171 2 //------------------------------------------------------------------------------------------------
172 2 case 3: cs1=1;//
173 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
174 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
175 2 cs2=1;
176 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
177 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
178 2 cs3=0;
179 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 4
180 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
181 2 break;
182 2 }
183 1 }
184 /******************************************************************************
185 ** 函数名: void SetOnOff(Uchar onoff)
186
187 ** 描述: 开/关显示
188
189 ** 修改的全局变量:
190
191 ** 输入参数:
192
193 ** 返回值:
194 *******************************************************************************/
195 void SetOnOff(Uchar onoff)
196 {
197 1 onoff=0x3e | onoff; //0011 111x
198 1 SelectScreen(1);
199 1 SendCommandToLCD(onoff);
200 1 SelectScreen(2);
201 1 SendCommandToLCD(onoff);
202 1 SelectScreen(3);
203 1 SendCommandToLCD(onoff);
204 1 }
205
206 /******************************************************************************
207 ** 函数名: void ClearScreen(Uchar screen)
208
209 ** 描述:
210
211 ** 修改的全局变量:
212
213 ** 输入参数: screen: 0-全屏,1-第一屏,2-第二屏,3-第三屏
214
215 ** 返回值:
216 *******************************************************************************/
217 void ClearScreen(Uchar screen)
218 { Uchar i,j;
219 1 SelectScreen(screen);
220 1 for(i=0;i<8;i++)
221 1 { SetLine(i);
222 2 for(j=0;j<64;j++)
223 2 {
224 3 WriteByte(0x00);
225 3 }
226 2 }
227 1 }
228
229 /*--------------------------------------------------------------------------------------------------*/
230 //显示8*8点阵
231 //旋转90度:字模被竖着切分
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -