📄 lcd_1621.lst
字号:
178 1 lcd_writedata(18,lcd_buf[1],0);
179 1 lcd_writedata(16,lcd_buf[1]>>4,0);
C51 COMPILER V8.02 LCD_1621 05/04/2008 21:35:46 PAGE 4
180 1 return 1;
181 1 }
182 /**************************************************************************
183 * 函数原型: BOOL lcd_writenum(char num[7])
184 * 功 能: 在数字区写入数据
185 * 入口:需写入的数字或字母的数组
186 * 出口:返回是否写入成功
187 **************************************************************************/
188 unsigned char lcd_writenum(unsigned char *num)
189 {
190 1 uchar i=0,j=0;
191 1 Uchar show_temp=0;
192 1 for(i=0;i<6;i++)
193 1 {
194 2 show_temp=num[j];
195 2 if(show_temp>='a') show_temp-=('a'-10);
196 2 else if(show_temp>='A') show_temp-=('A'-10);
197 2 else if(show_temp>='0') show_temp-='0';
198 2 else if(show_temp=='-') show_temp=36;//'-'
199 2 else if(show_temp>9)show_temp=0x25;//blank
200 2 if(num[++j]=='.')
201 2 {
202 3 j++;
203 3 show_temp|=0x80;
204 3 }
205 2 lcd_nbuf[i]=show_temp;
206 2 }
207 1 lcd_outnum(0);
208 1 return j;
209 1 }
210 void lcd_outnum(unsigned char flashbit)
211 {
212 1 uchar i=0;
213 1 Uchar show_temp=0;
214 1 for(i=0;i<6;i++)
215 1 {
216 2 show_temp=lcd_num[0x7f&lcd_nbuf[i]];
217 2 if(0x80&lcd_nbuf[i])show_temp|=0x80;
218 2 // if(((6-i)==flashbit)||flashbit>6)show_temp&=0x80;
219 2 lcd_writedata(i*2,show_temp,1);
220 2 }
221 1 }
*** WARNING C280 IN LINE 210 OF LCD_1621.C: 'flashbit': unreferenced local variable
222
223 /**************************************************************************
224 * 函数原型: BOOL lcd_writechar(char wchar[3])
225 * 功 能: 在字符写入数据
226 * 入口:需写入的数字或字母的数组
227 * 出口:返回是否写入成功
228 **************************************************************************/
229 BOOL lcd_writechar(char *wchar)
230 {
231 1 uchar i,j=0,k=0;
232 1 Uchar show_temp=0;
233 1 for(i=0;i<3;i++)
234 1 {
235 2 show_temp=wchar[j];
236 2 if(show_temp>='a')
237 2 show_temp-='a'-36;
238 2 else if(show_temp>='A')
239 2 show_temp-='A'-10;
240 2 else if(show_temp>='0') show_temp-='0';
C51 COMPILER V8.02 LCD_1621 05/04/2008 21:35:46 PAGE 5
241 2 else show_temp=63;
242 2 k=i*4+12+(i>0?5:0);
243 2 lcd_writedata(k,lcd_char[show_temp][0],1);
244 2 show_temp=lcd_char[show_temp][1];
245 2 if(wchar[++j]=='.')
246 2 {
247 3 j++;
248 3 show_temp|=0x80;
249 3 }
250 2 lcd_writedata(k+2,show_temp,1);
251 2 }
252 1 return 1;
253 1 }
254
255 /**************************************************************************
256 * 函数原型: void command(bit temp)
257 * 功 能: 写命令或写数据
258 **************************************************************************/
259 void lcd_command(bit temp)
260 {
261 1 LCS=LOW;
262 1 LDATA=HIGH; //端口置高 1
263 1 lcd_writerising(); //写入
264 1 LDATA=LOW; // 0
265 1 lcd_writerising();
266 1 LDATA=temp; // 0/1 写命令或数据
267 1 lcd_writerising();
268 1 }
269
270 /**************************************************************************
271 * 函数原型:void lcd_datadriver(Uchar seg,Uchar form)
272 * 功 能:写行地址及数据
273 **************************************************************************/
274 void lcd_writedata(Uchar seg,Uchar form,bit mode)
275 {
276 1 Uchar j;
277 1 EA=0;
278 1 lcd_command(HIGH); //101XXXXXXX write
279 1 for(j=0;j<6;j++)
280 1 {
281 2 LDATA=(bit)(seg&0x20); //地址6位
282 2 seg<<=1;
283 2 lcd_writerising();
284 2 }
285 1 for(j=0;j<(mode?0x8:0x4);j++)
286 1 {
287 2 LDATA=(bit)(form&0x01); //数据
288 2 form>>=1;
289 2 lcd_writerising();
290 2 }
291 1 LDATA=HIGH;
292 1 LCS=HIGH;
293 1 EA=1;
294 1 }
295 /**************************************************************************
296 * 函数原型:void write_lcdcommand(Uchar commandcode);
297 * 功 能:写一字节命令到LCD。
298 **************************************************************************/
299 void lcd_writecommand(Uchar commandcode)
300 {
301 1 Uchar i;
302 1 EA=0;
C51 COMPILER V8.02 LCD_1621 05/04/2008 21:35:46 PAGE 6
303 1 lcd_command(LOW); //100XXXXXXX 送命令
304 1 for(i=0;i<8;i++)
305 1 {
306 2 LDATA=(bit)(commandcode&0x80);
307 2 commandcode=commandcode<<1;
308 2 lcd_writerising();
309 2 }
310 1 lcd_writerising(); //送无效数据位
311 1 LDATA=HIGH; //第九位数据位
312 1 LCS=HIGH; //CS置高
313 1 EA=1;
314 1 }
315 /**************************************************************************
316 * 函数原型: void lcd_writerising(void);
317 * 功 能:产生写信号上升沿。
318 **************************************************************************/
319 /*void lcd_writerising(void)
320 {
321 LWR=LOW;
322 LWR=HIGH;
323 } */
324 /**************************************************************************
325 * 函数原型: void init_lcd(void);
326 * 功 能:初始化LCD。
327 **************************************************************************/
328 void lcd_init(void) //初始化送命令
329 {
330 1 Uint i=0;
331 1 LCS=HIGH;
332 1 LDATA=HIGH;
333 1 LWR=HIGH;
334 1 lcd_writecommand(0x01);
335 1 lcd_writecommand(0x02);
336 1 lcd_writecommand(0x18);
337 1 lcd_writecommand(0x29);
338 1 lcd_writecommand(0x60);
339 1 lcd_writecommand(0xe3);
340 1 lcd_writecommand(0x03);
341 1 lcd_writecommand(0x08);
342 1 lcd_clr();
343 1 }
344
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 868 ----
CONSTANT SIZE = 183 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 18
IDATA SIZE = ---- ----
BIT SIZE = ---- 5
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -