📄 lcd.lst
字号:
169 byte YStart,
170 byte Width,
171 byte Height,
172 bool bReverseDisplay,
173 byte GraphicIndex)
174 {
175 1 byte PageCounter; /*页计数值*/
176 1 byte ColumnCounter; /*X位置计数值*/
177 1 byte PageStart; /*起始页码*/
178 1 byte PageEnd; /*终止页码*/
C51 COMPILER V7.10 LCD 12/14/2004 10:51:15 PAGE 4
179 1 byte code *pGraphic; /*指向发送显示数据的指针*/
180 1
181 1 pGraphic = g_Graphic[GraphicIndex]; /*r取出要显示的图像区头地址给指针pGraphic*/
182 1 PageStart = YStart >> 3; /*r由于是整页显示,不能随意位置,所以指定除8*/
183 1 PageEnd = (YStart + Height) >> 3;
184 1
185 1
186 1 for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
187 1 {
188 2 SetColumn(XStart);
189 2 SetPage(PageCounter);
190 2 RS = 1;
191 2 for(ColumnCounter = 0; ColumnCounter < Width; ColumnCounter++)
192 2 {
193 3 if(!bReverseDisplay)
194 3 {
195 4 WLCD = *pGraphic++; /*r正常显示,白屏黑字*/
196 4 }
197 3 else
198 3 {
199 4 WLCD = ~(*pGraphic++); /*r反转显示,黑屏白字*/
200 4 }
201 3 }
202 2 }
203 1 }
204
205
206 /******************************************************************************************
207 *函数名: lcd_display_char
208 *参数: XStart 开始显示的X坐标像素值
209 YStart 开始显示的Y坐标像素值
210 bReverseDisplay 标识是否反显,1为反显,0为不反显
211 character 显示字符的ASCII码表值
212 *返回值: 无
213 *描述: 字符显示程序
214 *编写: 王绍伟
215 *版本信息: V1.0 2003年8月15日
216 ******************************************************************************************/
217 extern void lcd_display_char( /*为整个PAGE显示,不能任意位置*/
218 byte XStart,
219 byte YStart,
220 bool bReverseDisplay,
221 byte character)
222 {
223 1 byte PageCounter; /*页标志*/
224 1 byte ColumnCounter; /*X位置标志*/
225 1 byte PageStart; /*起始页码*/
226 1 byte PageEnd; /*终止页码*/
227 1 byte code *pChar; /*指向字符存放数据(按page划分存储)区的指针*/
228 1
229 1 pChar = g_ASCII[character-0x20]; /*r根据ASCI码表,*/
230 1 PageStart = YStart >> 3; /*r由于是整页显示,不能随意位置,所以指定除8*/
231 1 PageEnd = PageStart + 2; /*r一个字符在纵向占两个page*/
232 1
233 1 for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
234 1 {
235 2 SetColumn(XStart);
236 2 SetPage(PageCounter);
237 2
238 2 RS = 1;
239 2 for(ColumnCounter = 0; ColumnCounter < 8; ColumnCounter++) /*r一个字符在横向占8列*/
240 2 {
C51 COMPILER V7.10 LCD 12/14/2004 10:51:15 PAGE 5
241 3 if(!bReverseDisplay)
242 3 {
243 4 WLCD = *pChar++;
244 4 }
245 3 else
246 3 {
247 4 WLCD = ~(*pChar++);
248 4 }
249 3 }
250 2 }
251 1 }
252
253
254 /******************************************************************************************
255 *函数名: lcd_display_text
256 *参数: XStart 字符串开始X坐标像素值
257 YStart 字符串开始Y坐标像素值,实际得按照page显示
258 bReverseDisplay 标识是否反显
259 pText 指向字符串ASCII码存放首址的指针
260 *返回值: 无
261 *描述: 显示小于8个字符的字符串文本
262 *编写: 王绍伟
263 *版本信息: V1.0 2003年8月15日
264 ******************************************************************************************/
265 extern void lcd_display_text( byte XStart,
266 byte YStart,
267 bool bReverseDisplay,
268 byte* pText)
269 {
270 1 byte i;
271 1 byte len;
272 1 len = strlen(pText);
273 1 if(len > 8)
274 1 {
275 2 len = 8;
276 2 }
277 1 for(i = 0; i < len; i++)
278 1 {
279 2 lcd_display_char(XStart + i * 8, YStart, bReverseDisplay, *pText++);
280 2 }
281 1 }
282
283
284 /******************************************************************************************
285 *函数名: lcd_display_byte
286 *参数: XStart
287 YStart
288 bHex 标识是否为十六进制数据
289 bReverseDisplay 标识是否反显
290 value
291 *返回值: 无
292 *描述: 在LCD液晶屏上显示一个字节的内容,若此字节中数标识用
293 十六进制显示,则其中字节的高四位为 一个字符的ASCII码
294 值,低四位又是另外一个字符的ASCII码字
295 *编写:王绍伟
296 *版本信息:V1.0 2003年8月15日
297 ******************************************************************************************/
298 extern void lcd_display_byte(byte XStart,
299 byte YStart,
300 bool bHex,
301 bool bReverseDisplay,
302 byte value)
C51 COMPILER V7.10 LCD 12/14/2004 10:51:15 PAGE 6
303 {
304 1 byte Shift; /*暂存余数*/
305 1 byte Result; /*暂存除得结果值*/
306 1
307 1 if(bHex)
308 1 {
309 2 lcd_display_char(XStart + 8, YStart, bReverseDisplay, g_Data2Char[value&0x0F]);
310 2 lcd_display_char(XStart, YStart, bReverseDisplay, g_Data2Char[value>>4]);
311 2 }
312 1 else
313 1 {
314 2 Shift = value % 100;
315 2 Result = value / 100;
316 2 if(Result)
317 2 {
318 3 lcd_display_char(XStart, YStart, bReverseDisplay, g_Data2Char[Result]);
319 3 }
320 2 Result = Shift / 10;
321 2 Shift = Shift % 10;
322 2 if(Result)
323 2 {
324 3 lcd_display_char(XStart + 8, YStart, bReverseDisplay, g_Data2Char[Result]);
325 3 }
326 2 lcd_display_char(XStart + 16, YStart, bReverseDisplay, g_Data2Char[Shift]);
327 2 }
328 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 659 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 23
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 5
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -