📄 ps2lcd.lst
字号:
C51 COMPILER V8.02 PS2LCD 06/02/2007 12:08:11 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE PS2LCD
OBJECT MODULE PLACED IN ps2lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ps2lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <Reg51.h>
2
3
4 #define LCM_Data P0
5 sbit LCM_RW=P1^3; //定义LCD引脚
6 sbit LCM_RS=P1^1;
7 sbit LCM_E=P1^2;
8 sbit Key_Data=P1^0; //定义Keyboard引脚
9 sbit Key_CLK=P3^2;
10
11 #define Busy 0x80 //用于检测LCM状态字中的Busy标识
12
13 void LCMInit(void);
14 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
15 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
16 void Delay5Ms(void);
17 void Delay400Ms(void);
18 void Decode(unsigned char ScanCode);
19 void WriteDataLCM(unsigned char WDLCM);
20 void WriteCommandLCM(unsigned char WCLCM,BuysC);
21
22 unsigned char ReadDataLCM(void);
23 unsigned char ReadStatusLCM(void);
24 unsigned char code cdle_net[] = {"--cug--"};
25 unsigned char code email[] = {"wy112708@163.com"};
26 unsigned char code Cls[] = {" "};
27 static unsigned char IntNum = 0; //中断次数计数
28 static unsigned char KeyV; //键值
29 static unsigned char DisNum = 0; //显示用指针
30 static unsigned char Key_UP=0, Shift = 0;//Key_UP是键松开标识,Shift是Shift键按下标识
31 static unsigned char BF = 0; //标识是否有字符被收到
32 unsigned char code UnShifted[59][2] = {
33 0x1C, 'a',
34 0x32, 'b',
35 0x21, 'c',
36 0x23, 'd',
37 0x24, 'e',
38 0x2B, 'f',
39 0x34, 'g',
40 0x33, 'h',
41 0x43, 'i',
42 0x3B, 'j',
43 0x42, 'k',
44 0x4B, 'l',
45 0x3A, 'm',
46 0x31, 'n',
47 0x44, 'o',
48 0x4D, 'p',
49 0x15, 'q',
50 0x2D, 'r',
51 0x1B, 's',
52 0x2C, 't',
53 0x3C, 'u',
54 0x2A, 'v',
55 0x1D, 'w',
C51 COMPILER V8.02 PS2LCD 06/02/2007 12:08:11 PAGE 2
56 0x22, 'x',
57 0x35, 'y',
58 0x1A, 'z',
59 0x45, '0',
60 0x16, '1',
61 0x1E, '2',
62 0x26, '3',
63 0x25, '4',
64 0x2E, '5',
65 0x36, '6',
66 0x3D, '7',
67 0x3E, '8',
68 0x46, '9',
69 0x0E, '`',
70 0x4E, '-',
71 0x55, '=',
72 0x5D, '\\',
73 0x29, ' ',
74 0x54, '[',
75 0x5B, ']',
76 0x4C, ';',
77 0x52, '\'',
78 0x41, ',',
79 0x49, '.',
80 0x4A, '/',
81 0x71, '.',
82 0x70, '0',
83 0x69, '1',
84 0x72, '2',
85 0x7A, '3',
86 0x6B, '4',
87 0x73, '5',
88 0x74, '6',
89 0x6C, '7',
90 0x75, '8',
91 0x7D, '9',
92 };
93
94 unsigned char code Shifted[59][2] = {
95 0x1C, 'A',
96 0x32, 'B',
97 0x21, 'C',
98 0x23, 'D',
99 0x24, 'E',
100 0x2B, 'F',
101 0x34, 'G',
102 0x33, 'H',
103 0x43, 'I',
104 0x3B, 'J',
105 0x42, 'K',
106 0x4B, 'L',
107 0x3A, 'M',
108 0x31, 'N',
109 0x44, 'O',
110 0x4D, 'P',
111 0x15, 'Q',
112 0x2D, 'R',
113 0x1B, 'S',
114 0x2C, 'T',
115 0x3C, 'U',
116 0x2A, 'V',
117 0x1D, 'W',
C51 COMPILER V8.02 PS2LCD 06/02/2007 12:08:11 PAGE 3
118 0x22, 'X',
119 0x35, 'Y',
120 0x1A, 'Z',
121 0x45, '0',
122 0x16, '1',
123 0x1E, '2',
124 0x26, '3',
125 0x25, '4',
126 0x2E, '5',
127 0x36, '6',
128 0x3D, '7',
129 0x3E, '8',
130 0x46, '9',
131 0x0E, '~',
132 0x4E, '_',
133 0x55, '+',
134 0x5D, '|',
135 0x29, ' ',
136 0x54, '{',
137 0x5B, '}',
138 0x4C, ':',
139 0x52, '"',
140 0x41, '<',
141 0x49, '>',
142 0x4A, '?',
143 0x71, '.',
144 0x70, '0',
145 0x69, '1',
146 0x72, '2',
147 0x7A, '3',
148 0x6B, '4',
149 0x73, '5',
150 0x74, '6',
151 0x6C, '7',
152 0x75, '8',
153 0x7D, '9',
154 };
155
156 void main(void)
157 {
158 1 unsigned char TempCyc;
159 1
160 1 Delay400Ms(); //启动等待,等LCM讲入工作状态
161 1 LCMInit(); //LCM初始化
162 1 Delay5Ms(); //延时片刻(可不要)
163 1
164 1 DisplayListChar(0, 0, cdle_net);
165 1 DisplayListChar(0, 1, email);
166 1 ReadDataLCM();//测试用句无意义
167 1 for (TempCyc=0; TempCyc<10; TempCyc++)
168 1 Delay400Ms(); //延时
169 1 DisplayListChar(0, 1, Cls);
170 1
171 1 IT0 = 1;
172 1 EA = 1;
173 1 EX0 = 1; //开中断
174 1
175 1 do
176 1 {
177 2 if (BF)
178 2 Decode(KeyV);
179 2 else
C51 COMPILER V8.02 PS2LCD 06/02/2007 12:08:11 PAGE 4
180 2 EA = 1; //开中断
181 2 }
182 1 while(1);
183 1 }
184
185 //写数据
186 void WriteDataLCM(unsigned char WDLCM)
187 {
188 1 ReadStatusLCM(); //检测忙
189 1 LCM_Data=WDLCM;
190 1 LCM_RS=1;
191 1 LCM_RW=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -