📄 lcd.lst
字号:
99 #define LCD_AUT_WR 0xB0 /* 自动写设置 */
100 #define LCD_AUT_RD 0xB1 /* 自动读设置 */
101 #define LCD_AUT_OVR 0xB2 /* 自动读/写结束 */
102
103 #define LCD_INC_WR 0xC0 /* 数据一次写,地址加1 */
104 #define LCD_INC_RD 0xC1 /* 数据一次读,地址加1 */
105 #define LCD_DEC_WR 0xC2 /* 数据一次写,地址减1 */
106 #define LCD_DEC_RD 0xC3 /* 数据一次读,地址减1 */
107 #define LCD_NOC_WR 0xC4 /* 数据一次写,地址不变 */
108 #define LCD_NOC_RD 0xC5 /* 数据一次读,地址不变 */
109
110 #define LCD_SCN_RD 0xE0 /* 屏读 */
111
112 #define LCD_SCN_CP 0xE8 /* 屏拷贝 */
113
114 #define LCD_BIT_OP 0xF0 /* 位操作:D0-D2--定义D0-D7位,D3--1为置位,0为清除 */
115
116
117 uint8 xdata LCD_Command _at_ 0xfdff;
118 uint8 xdata LCD_Data _at_ 0xfcff;
119 #define LCD_Data XBYTE[0x8000]/*数据入口*/
120
121 void LCD_Write_Command(uint8 dat)
122 {
123 1 while(!(0xfe|LCD_Command));
124 1 LCD_Command=dat;
125 1 }
126 void LCD_Write_Data(uint8 dat)
127 {
128 1 while(!(0xfd|LCD_Command));
129 1 LCD_Data=dat;
C51 COMPILER V6.12 LCD 07/05/2008 16:56:51 PAGE 8
130 1 }
131 #define LCD_Read_Command() LCD_Command
132 #define LCD_Read_Data() LCD_Data
133
134 void LCD_Write_Command3(uint8 command,uint8 dat1,uint8 dat2)
135 {
136 1 LCD_Write_Data(dat1);
137 1 LCD_Write_Data(dat2);
138 1 LCD_Write_Command(command);
139 1 }
140
141 void LCD_Write_Command1(uint8 command,uint8 dat1)
142 {
143 1 LCD_Write_Data(dat1);
144 1 LCD_Write_Command(command);
145 1 }
146
147
148
149 void LCD_Initialize()
150 {
151 1 LCD_Write_Command3(LCD_TXT_STP,0x00,0x00);
152 1 LCD_Write_Command3(LCD_TXT_WID,32,0x00);
153 1 LCD_Write_Command3(LCD_GRH_STP,0x00,0x00);
154 1 LCD_Write_Command3(LCD_GRH_WID,32,0x00);
155 1 LCD_Write_Command(LCD_MOD_OR);
156 1 LCD_Write_Command(LCD_DIS_SW|0x08);
157 1 }
158
159 void LCD_FillAll(uint8 dat)
160 { uint32 i;
161 1
162 1 LCD_Write_Command3(LCD_ADR_POS, 0x00, 0x00); // 置地址指针
163 1 LCD_Write_Command(LCD_AUT_WR); // 自动写
164 1 for(i=0;i<240*128;i++)
165 1 {
166 2 LCD_Write_Data(dat);
167 2 }
168 1 LCD_Write_Command(LCD_AUT_OVR); // 自动写结束
169 1 LCD_Write_Command3(LCD_ADR_POS,0x00,0x00); // 重置地址指针
170 1 }
171
172 void LCD_UpdatePoint(uint32 x, uint32 y,uint8 dat)
173 { uint32 addr;
174 1
175 1 /* 找出目标地址 */
176 1 addr = y*(256>>3) + (x>>3);
177 1 LCD_Write_Command3(LCD_ADR_POS, addr&0xFF, addr>>8); // 置地址指针
178 1
179 1 /* 输出数据 */
180 1 LCD_Write_Command1(LCD_INC_WR, dat);
181 1 }
182
183 void Disp_LCD(uint8 *dat)
184 {
185 1 uint8 i,j;
186 1 for(j=0;j<127;j++)
187 1 {
188 2 for(i=0;i<239;)
189 2 {
190 3 LCD_UpdatePoint(i,j,*dat);
191 3 dat++;
C51 COMPILER V6.12 LCD 07/05/2008 16:56:51 PAGE 9
192 3 i+=8;
193 3 }
194 2 }
195 1 }
196 void main()
197 {
198 1 uint32 i,j;
199 1 uint8 *dat;
200 1 dat=BMP;
201 1 CS1=0;
202 1 CS2=0;
203 1 LCD_Initialize();
204 1 // LCD_FillAll(0x81);
205 1 // LCD_Write_Command3(LCD_ADR_POS,0,0);
206 1 CS1=1;CS2=0;
207 1 Disp_LCD(BMP1);
208 1 CS1=0;CS2=1;
209 1 Disp_LCD(BMP);
210 1
211 1 while(1);
212 1 }
*** WARNING C280 IN LINE 198 OF LCD.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 198 OF LCD.C: 'j': unreferenced local variable
213
214
215
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 407 ----
CONSTANT SIZE = 7620 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -