📄 testlcd.lst
字号:
C51 COMPILER V7.20 TESTLCD 09/29/2006 20:06:10 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE TESTLCD
OBJECT MODULE PLACED IN testlcd.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE testlcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg52.h"
2 #include <intrins.h>
3
4 #define uchar unsigned char
5
6 typedef bit BOOL ;
7
8 sbit rs = P2^6 ;
9 sbit rw = P3^6 ;
10 sbit ep = P2^7 ;
11
12
13 void delay(uchar) ;
14 void lcd_wcmd(uchar) ;
15 BOOL lcd_bz() ;
16 void lcd_pos(uchar) ;
17 void lcd_wdat(uchar) ;
18 void display(uchar,uchar *) ;
19
20 code uchar dis1[] = {" www.52eda.com "} ;
21 code uchar dis2[] = {"WELCOME TO 52EDA"} ;
22
23
24
25 void longdelay(uchar s) //长延时
26 {
27 1 while(s--)
28 1 {
29 2 delay(60) ;
30 2 }
31 1 }
32
33 void delay(uchar ms)
34 { // 延时子程序
35 1 uchar i ;
36 1 while(ms--)
37 1 {
38 2 for(i = 0 ; i<250;i++) ;
39 2 }
40 1 }
41
42 BOOL lcd_bz()
43 { // 测试LCD忙碌状态
44 1 BOOL result ;
45 1 rs = 0 ;
46 1 rw = 1 ;
47 1 ep = 1 ;
48 1 result = (BOOL)(P0 & 0x80) ;
49 1 ep = 0 ;
50 1 return result ;
51 1 }
52
53 void lcd_wcmd(uchar cmd)
54 { // 写入指令数据到LCD
55 1 while(lcd_bz()) ;
C51 COMPILER V7.20 TESTLCD 09/29/2006 20:06:10 PAGE 2
56 1 rs = 0 ;
57 1 rw = 0 ;
58 1 ep = 0 ;
59 1 P0 = cmd ;
60 1 ep = 1 ;
61 1 ep = 0 ;
62 1 }
63
64 void lcd_pos(uchar pos)
65 { //设定显示位置
66 1 lcd_wcmd(pos | 0x80) ;
67 1 }
68
69 void lcd_wdat(uchar dat)
70 { //写入字符显示数据到LCD
71 1 while(lcd_bz()) ;
72 1 rs = 1 ;
73 1 rw = 0 ;
74 1 ep = 0 ;
75 1 P0 = dat ;
76 1 ep = 1 ;
77 1 ep = 0 ;
78 1 }
79
80 void lcd_init()
81 { //LCD初始化设定
82 1 lcd_wcmd(0x38) ; //function set
83 1 delay(1) ;
84 1 lcd_wcmd(0x38) ; //function set
85 1 delay(1) ;
86 1 lcd_wcmd(0x08) ; //display on/off
87 1 delay(1) ;
88 1 lcd_wcmd(0x01) ; //清除LCD的显示内容
89 1 delay(1) ;
90 1 lcd_wcmd(0x06) ; //entry mode set
91 1 delay(1) ;
92 1 lcd_wcmd(0x0c) ; //entry mode set
93 1 delay(1) ;
94 1 }
95
96 /*---------------
97 函数名称:display()
98 功能 :在LCD上显示数组的数据
99 说明 :先写显示地址,后写显示数据
100 调用 :lcd_wcmd(), lcd_pos()
101 入口参数:pos 写入的位置,q指向要写入的数据所在的数组
102 返回值 :无
103 ----------------*/
104 void display(uchar pos, uchar *q)
105 {
106 1 uchar i ;
107 1 //lcd_wcmd(0x01) ; //clear
108 1 delay(10) ;
109 1 lcd_pos(pos) ;
110 1 for(i=0 ;i<16;i++)
111 1 {
112 2 lcd_wdat(*q) ;
113 2 q++ ;
114 2 longdelay(2) ;
115 2 }
116 1 }
117
C51 COMPILER V7.20 TESTLCD 09/29/2006 20:06:10 PAGE 3
118 main()
119 {
120 1 lcd_init() ; // 初始化LCD
121 1 delay(10) ;
122 1 display(0x00,dis1) ;
123 1 display(0x40,dis2) ;
124 1 display(0x14,dis1) ;
125 1 display(0x54,dis2) ;
126 1 lcd_wcmd(0x07) ; //entry mode set
127 1 delay(1) ;
128 1 while(1)
129 1 {
130 2 display(0x00,dis1) ;
131 2 /*
132 2 display(0x40,dis2) ;
133 2 display(0x14,dis1) ;
134 2 display(0x54,dis2) ;
135 2 */
136 2 }
137 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 279 ----
CONSTANT SIZE = 35 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -