📄 lcd.lst
字号:
C51 COMPILER V7.09 LCD 08/24/2007 09:37:12 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include"Config.h"
3 #include"IOCfg.c"
4 #include"TimeDLY.h"
5 #include"LCD.h"
6
7 //IO输入输出控制
8 void InitLCDData(bit i)
9 {
10 1 if(i==1) LCDData = 0xff;
11 1 else LCDData = 0x00;
12 1 }
13
14 //指令/数据选择函数:SetLCD_RS()
15 void SetLCD_RS(bit i)
16 {
17 1 if(i==1) LCDRS = 1;
18 1 else LCDRS = 0;
19 1 }
20
21 //读写操作控制信号:SetLCD_RW()
22 void SetLCD_RW(bit i)
23 {
24 1 if(i==1) LCDRW = 1;
25 1 else LCDRW = 0;
26 1 }
27
28 //使能信号:SetLCD_EN()
29 void SetLCD_EN(bit i)
30 {
31 1 if(i==1) LCDE = 1;
32 1 else LCDE = 0;
33 1 }
34
35 //复位:SetLCD_RST()
36 void SetLCD_RST(bit i)
37 {
38 1 if(i==1) LCDRST = 1;
39 1 else LCDRST = 0;
40 1 }
41
42 //读状态函数:ReadStatus()
43 INT8U ReadStatus(void)
44 {
45 1 INT8U i;
46 1 InitLCDData(1);
47 1 SetLCD_RW(1);
48 1 SetLCD_RS(0);
49 1 SetLCD_EN(0);
50 1 nNop(10);
51 1 SetLCD_EN(1);
52 1 nNop(20);
53 1 i = LCDData;
54 1 nNop(40);
55 1 SetLCD_EN(0);
C51 COMPILER V7.09 LCD 08/24/2007 09:37:12 PAGE 2
56 1 return(i);
57 1 }
58
59 //读一字节数据函数:ReadOneByte()
60 INT8U ReadOneByte(void)
61 {
62 1 INT8U i;
63 1 InitLCDData(1);
64 1 SetLCD_RW(1);
65 1 SetLCD_RS(1);
66 1 SetLCD_EN(0);
67 1 nNop(10);
68 1 SetLCD_EN(1);
69 1 nNop(20);
70 1 i = LCDData;
71 1 nNop(40);
72 1 SetLCD_EN(0);
73 1 return(i);
74 1 }
75
76 //写指令函数:WriteInstruc()
77 void WriteInstruc(INT8U Instruction)
78 {
79 1 while((ReadStatus() & 0x80)!= 0x00);
80 1 InitLCDData(0);
81 1 SetLCD_RW(0);
82 1 SetLCD_RS(0);
83 1 SetLCD_EN(0);
84 1 LCDData = Instruction;
85 1 nNop(100);
86 1 SetLCD_EN(1);
87 1 nNop(100);
88 1 SetLCD_EN(0);
89 1 }
90
91 //写一字节数据函数:WriteOneByte()
92 void WriteOneByte(INT8U Data)
93 {
94 1 while((ReadStatus() & 0x80)!= 0x00);
95 1 InitLCDData(0);
96 1 SetLCD_RW(0);
97 1 SetLCD_RS(1);
98 1 SetLCD_EN(0);
99 1 LCDData = Data;
100 1 nNop(100);
101 1 SetLCD_EN(1);
102 1 nNop(100);
103 1 SetLCD_EN(0);
104 1 }
105
106 //复位函数:ResetLCD()
107 void ResetLCD(void)
108 {
109 1 LDelay(40);
110 1 SetLCD_RST(0);
111 1 LDelay(1);
112 1 SetLCD_RST(1);
113 1 LDelay(1);
114 1 }
115
116 //初始化函数:InitLCD()
117 void InitLCD(void)
C51 COMPILER V7.09 LCD 08/24/2007 09:37:12 PAGE 3
118 {
119 1 ResetLCD();
120 1 FunctionSet(0x30); // Function Set: 8_bits_Data, Base_Instrution
121 1 LDelay(1);
122 1 FunctionSet(0x30); // Function Set: 8_bits_Data, Base_Instrution
123 1 LDelay(1);
124 1 Disp_OnOff(0x0c); // Disp_ON: The Whole ALL_ON
125 1 LDelay(1);
126 1 ClearLCD(); // Clear LCD
127 1 LDelay(1);
128 1 PointSet(0x06); // Entry Mode Set: DDRAM Address Counter(AC) + 1
129 1 LDelay(1);
130 1 }
131
132 //显示一个汉字(16x16)函数:DispOneWord()
133 void DispOneWord(INT8U X,INT8U Y,INT16U Word)
134 {
135 1 INT8U Disp_Address;
136 1 INT8U Address_H;
137 1 INT8U Address_L;
138 1
139 1 if((X == 0x00)||(X == 0x02)) // 0,2行
140 1 Address_H = 0x80;
141 1 else // 1,3行
142 1 Address_H = 0x90;
143 1
144 1 if((X == 0x00)||(X == 0x01)) // 0,1行
145 1 Address_L = Y;
146 1 else // 2,3行
147 1 Address_L = Y + 0x08;
148 1 Disp_Address = (Address_H | Address_L) & 0xff;
149 1 SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
150 1 WriteOneByte(((Word & 0xff00) >> 8) & 0xff); // H_Byte
151 1 WriteOneByte(Word & 0xff); // L_Byte
152 1 }
153
154
155 //显示两个字符(8x16)函数:DispTwoCharacter()
156 void DispTwoCharacter(INT8U X,INT8U Y,INT8U Character1,INT8U Character2)
157 {
158 1 INT8U Disp_Address;
159 1 INT8U Address_H;
160 1 INT8U Address_L;
161 1
162 1 if((X == 0x00)||(X == 0x02)) // 0,2行
163 1 Address_H = 0x80;
164 1 else // 1,3行
165 1 Address_H = 0x90;
166 1
167 1 if((X == 0x00)||(X == 0x01)) // 0,1行
168 1 Address_L = Y;
169 1 else // 2,3行
170 1 Address_L = Y + 0x08;
171 1 Disp_Address = Address_H | Address_L;
172 1 SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
173 1 WriteOneByte(Character1);
174 1 WriteOneByte(Character2);
175 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 452 ----
C51 COMPILER V7.09 LCD 08/24/2007 09:37:12 PAGE 4
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 14
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 + -