📄 lcddev_ra8806.lst
字号:
C51 COMPILER V7.09 LCDDEV_RA8806 02/09/2009 16:04:54 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCDDEV_RA8806
OBJECT MODULE PLACED IN LcdDev_Ra8806.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LcdDev_Ra8806.C OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include <c8051f020.h> // SFR declaratiONs
3 #include "DataTypeDef.H"
4 #include "LcdDev_Ra8806.H"
5 #include "GraphicHZ/HanZi48x48.C"
6 #include "GraphicHZ/HanZi32x32.C"
7 #include "GraphicHZ/ASCII_24x48.C"
8 #include "GraphicHZ/ASCII_16x32.C"
9
10 void LCD_ChkBusy(void);
11
12 static void LCD_Delay(INT16U KK)
13 {
14 1 while(KK--) ;
15 1 }
16 /*******************************************************************************************************
17 **
18 ** LCD底层驱动部分代码
19 **
20 ********************************************************************************************************/
21
22 /*******************************************************************************************************
23 ** 名 称: void LCD_CmdWrite(INT8U CmdReg,INT8U CmdValue)
24 ** 功 能:向LCD中写入指令数据
25 ** 入口参数:CmdReg
26 ** CmdValue
27 ** 出口参数:无
28 **----------------------------------------------------------------------------------------------------
29 ** 作 者 : 严 俊 生
30 ** 日 期 : 2009-01-26
31 *******************************************************************************************************/
32 void LCD_CmdWrite(INT8U CmdReg)
33 {
34 1 LCD_ChkBusy(); // 判断 RA8803 是否忙碌中
35 1 LcdDataPort_OutPut(); // 设置LCD总线的端口状态为输出
36 1 //LCD_DataPort = CmdReg; // 准备预写入显示内存的数据
37 1 LcdCS_ON(); // 片选LCD信号使能
38 1 LcdRD_OFF(); // "读"信号禁能
39 1 LcdRS_INS(); // 选择写入指令信号
40 1
41 1 LCD_DataPort = CmdReg; // 准备预写入显示内存的数据
42 1 LcdWR_ON(); // "写"信号使能
43 1 //LCD_Delay(0);
44 1 LcdWR_OFF(); // "写"信号禁能
45 1
46 1 LcdCS_OFF(); // 片选LCD信号禁能
47 1 }
48
49 /*******************************************************************************************************
50 ** 名 称: INT8U LCD_CmdRead(void)
51 ** 功 能:读取LCD对应地址寄存器中到数据
52 ** 入口参数:CmdReg 寄存器的地址
53 ** 出口参数:寄存器中的内容
54 **----------------------------------------------------------------------------------------------------
55 ** 作 者 : 严 俊 生
C51 COMPILER V7.09 LCDDEV_RA8806 02/09/2009 16:04:54 PAGE 2
56 ** 日 期 : 2009-01-26
57 *******************************************************************************************************/
58 INT8U LCD_CmdRead(void)
59 { INT8U CmdReg;
60 1 //------------------------------------------- 执行读寄存器内容时序操作
61 1 LcdDataPort_InPut(); // 设置LCD总线的端口状态为输入
62 1 LcdCS_ON(); // 片选LCD信号使能
63 1 //LcdRS_DAT(); // 选择写入数据信号
64 1 LcdRS_INS(); // 选择写入指令信号
65 1 LcdWR_OFF(); // "写"信号禁能
66 1
67 1 LcdRD_ON(); // "读"信号使能
68 1 CmdReg = LCD_DataPort;
69 1 LcdRD_OFF(); // "读"信号禁能
70 1
71 1 //LcdRS_OFF(); // 指令/数据端口复位
72 1 LcdCS_OFF(); // 片选LCD信号禁能
73 1 return CmdReg;
74 1 }
75 /*******************************************************************************************************
76 ** 名 称: void LCD_DataWrite(INT8U DatValue)
77 ** 功 能:向LCD中写入指令数据
78 ** 入口参数:DatValue
79 ** 出口参数:无
80 **----------------------------------------------------------------------------------------------------
81 ** 作 者 : 严 俊 生
82 ** 日 期 : 2009-01-26
83 *******************************************************************************************************/
84 void LCD_DataWrite(INT8U DatValue)
85 {
86 1
87 1 LCD_ChkBusy(); // 判断 RA8803 是否忙碌中
88 1 LcdDataPort_OutPut(); // 设置LCD总线的端口状态为输出
89 1 //LCD_DataPort = DatValue; // 准备预写入显示内存的数据
90 1 LcdCS_ON(); // 片选LCD信号使能
91 1 LcdRD_OFF(); // "读"信号禁能
92 1 LcdRS_DAT(); // 选择写入数据信号
93 1 LcdWR_ON(); // "写"信号使能
94 1 LCD_DataPort = DatValue; // 准备预写入显示内存的数据
95 1 LCD_Delay(10);
96 1 LcdWR_OFF(); // "写"信号禁能
97 1 LcdCS_OFF(); // 片选LCD信号禁能
98 1 }
99 void LCD_StringWrite(INT8U *pStr,INT8U StrLen,INT8U DispMode)
100 {
101 1 INT16U i;
102 1 LCD_ChkBusy(); // 判断 RA8803 是否忙碌中
103 1 LcdDataPort_OutPut(); // 设置LCD总线的端口状态为输出
104 1 LcdRS_INS(); // 选择写入指令信号
105 1 LcdRD_OFF(); // "读"信号禁能
106 1 LcdCS_ON(); // 片选LCD信号使能
107 1
108 1 LCD_DataPort = 0xB0; // 准备预写入显示内存的数据
109 1 LcdWR_ON(); // "写"信号使能
110 1 //LCD_Delay(0);
111 1 LcdWR_OFF(); // "写"信号禁能
112 1
113 1 LcdCS_OFF(); // 片选LCD信号禁能
114 1
115 1 LcdRS_DAT(); // 选择写入数据信号
116 1 LcdCS_ON(); // 片选LCD信号使能
117 1 for(i=0; i<StrLen; i++)
C51 COMPILER V7.09 LCDDEV_RA8806 02/09/2009 16:04:54 PAGE 3
118 1 {
119 2 if(DispMode == 1)
120 2 LCD_DataPort = ((*pStr++)); // 准备预写入显示内存的数据
121 2 else
122 2 LCD_DataPort = (~(*pStr++)); // 准备预写入显示内存的数据
123 2 LcdWR_ON(); // "写"信号使能
124 2 //LCD_Delay(0);
125 2 LcdWR_OFF(); // "写"信号禁能
126 2 }
127 1
128 1 LcdCS_OFF(); // 片选LCD信号禁能
129 1 }
130
131 INT8U LCD_DataRead(void)
132 { INT8U uData;
133 1 LCD_ChkBusy(); // 判断 RA8803 是否忙碌中
134 1 //------------------------------------------- 执行读寄存器内容时序操作
135 1 LcdDataPort_InPut(); // 设置LCD总线的端口状态为输入
136 1 LcdCS_ON(); // 片选LCD信号使能
137 1 LcdRS_DAT(); // 选择写入数据信号
138 1 //LcdRS_INS(); // 选择写入指令信号
139 1 LcdWR_OFF(); // "写"信号禁能
140 1
141 1 LcdRD_ON(); // "读"信号使能
142 1 uData = LCD_DataPort;
143 1 LcdRD_OFF(); // "读"信号禁能
144 1
145 1 LcdRS_OFF(); // 指令/数据端口复位
146 1 LcdCS_OFF(); // 片选LCD信号禁能
147 1 return uData;
148 1 }
149
150 //==============================================================================
151 //Subroutine: LCD_ChkBusy
152 //Function:
153 //==============================================================================
154 void LCD_ChkBusy(void)
155 {
156 1 volatile INT8U temp;
157 1 do
158 1 {
159 2 temp = LCD_CmdRead();
160 2 LCD_Delay(10);
161 2 }while(temp & 0xC0);
162 1 }
163
164 /*******************************************************************************************************
165 ** **
166 ** LCD控制部分代码 **
167 ** **
168 ********************************************************************************************************/
169
170 void LcdReset(void)
171 {
172 1 LedReset_ON();
173 1 LCD_Delay(2000);
174 1 LedReset_OFF();
175 1 LCD_Delay(25000);
176 1 LedReset_ON();
177 1 LCD_Delay(65000);
178 1 }
179
C51 COMPILER V7.09 LCDDEV_RA8806 02/09/2009 16:04:54 PAGE 4
180 //==============================================================================
181 //Subroutine: LCD_On
182 //Function:
183 //==============================================================================
184 void LCD_ON(void)
185 {
186 1 unsigned char temp;
187 1
188 1 LCD_CmdWrite(WLCR);
189 1 temp = LCD_DataRead();
190 1 temp |= cSetb2;
191 1 LCD_CmdWrite(WLCR);
192 1 LCD_DataWrite(temp);
193 1 }
194 //==============================================================================
195 //Subroutine: LCD_OFF
196 //Function:
197 //==============================================================================
198 void LCD_OFF(void)
199 {
200 1 unsigned char temp;
201 1
202 1 LCD_CmdWrite(WLCR);
203 1 temp = LCD_DataRead();
204 1 temp &= cClrb2;
205 1 LCD_CmdWrite(WLCR);
206 1 LCD_DataWrite(temp);
207 1 }
208 //==============================================================================
209 //Subroutine: LCD_Text
210 //Function:
211 //==============================================================================
212 void LCD_Text(void)
213 {
214 1 unsigned char temp;
215 1 LCD_CmdWrite(WLCR);
216 1 temp = LCD_DataRead();
217 1 temp |= cSetb3;
218 1 LCD_CmdWrite(WLCR);
219 1 LCD_DataWrite(temp);
220 1 }
221 //==============================================================================
222 //Subroutine: LCD_Graphic
223 //Function:
224 //==============================================================================
225 void LCD_Graphic(void)
226 {
227 1 unsigned char temp;
228 1
229 1 LCD_CmdWrite(WLCR);
230 1 temp = LCD_DataRead();
231 1 temp &= cClrb3;
232 1 LCD_CmdWrite(WLCR);
233 1 LCD_DataWrite(temp);
234 1 }
235
236 //==============================================================================
237 //Subroutine: Reverse_Data
238 //Function:
239 //==============================================================================
240 void Reverse_Data(void)
241 {
C51 COMPILER V7.09 LCDDEV_RA8806 02/09/2009 16:04:54 PAGE 5
242 1 unsigned char temp;
243 1 LCD_CmdWrite(WCCR);
244 1 temp = LCD_DataRead();
245 1 temp |= (cSetb4);
246 1 LCD_CmdWrite(WCCR);
247 1 LCD_DataWrite(temp);
248 1 }
249
250 //==============================================================================
251 //Subroutine: Access_2Page
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -