?? lcd.lst
字號:
C51 COMPILER V8.02 LCD 05/18/2002 13:46:58 PAGE 1
C51 COMPILER V8.02, 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 <c8051f020.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4
5
6 void Lcd1602_Write_Command(uchar Command_Code);
7 void Lcd1602_Write_Data(uchar row,uchar column,uchar Data); //row取1或2,column取0到15
8 void Lcd1602_Write_String(uchar row,uchar column,uchar *dis_buffer);
9 void delay(uint t1,t2);
10
11 void Lcd1602_initial( )
12 {
13 1 Lcd1602_Write_Command(0x38);//顯示模式設置
14 1 Lcd1602_Write_Command(0x0c);//開顯示,顯示光標,光標閃爍
15 1 Lcd1602_Write_Command(0x01);//顯示清屏。
16 1 Lcd1602_Write_Command(0x06);//顯示光標自動右移,整屏不移動。
17 1
18 1 Lcd1602_Write_Command(0x80);//將數據指針設置到第一行的第一個字符。
19 1 Lcd1602_Write_Command(0x02);//數據指針清零
20 1 Lcd1602_Write_Command(0x0c);//開顯示,顯示光標,光標閃爍
21 1 Lcd1602_Write_Command(0x80);//將數據指針設置到第一行的第一個字符。
22 1
23 1 }
24
25
26 //===========================
27 //寫一個命令字節
28 //===========================
29 void Lcd1602_Write_Command(uchar Command_Code)
30 {
31 1 P4=0x00; //RS=0,RW=0
32 1 P5=Command_Code;
33 1 delay(10,1);
34 1 P4 |=0x04; //EN=1
35 1 delay(10,10);
36 1 P4 &=~0x04; //EN=0
37 1
38 1 }
39 //===========================
40 //寫一個字節數據
41 //===========================
42
43 void Lcd1602_Write_Data(uchar row,uchar column,uchar Data)
44 {
45 1
46 1 if (row==2)
47 1 column |= 0x40; //當要顯示第二行時地址碼+0x40;
48 1 column |= 0x80; // 算出指令碼
49 1
50 1 Lcd1602_Write_Command(column); //這里不檢測忙信號,發送地址碼
51 1
52 1 P4=0x01; //RS=1,RW=0
53 1 P5=Data;
54 1 delay(10,10);
55 1 P4 |=0x04; //EN=1
C51 COMPILER V8.02 LCD 05/18/2002 13:46:58 PAGE 2
56 1 delay(10,10);
57 1 P4 &=~0x04; //EN=0
58 1
59 1 }
60
61
62 //===========================================
63 //寫字符串到LCD,如果一行寫不下,則寫到下一行,
64 //如果一屏寫不下,則只寫一屏
65 //row的值從1-2,column的值從1-16,不進行值的
66 //有效性檢查,有調用者自己保證
67 //===========================================
68
69 void Lcd1602_Write_String(uchar row,uchar column,uchar *dis_buffer)
70 {
71 1 uchar i=0;
72 1
73 1 while(dis_buffer[i]!='\0')
74 1 {
75 2 Lcd1602_Write_Data(row,column,dis_buffer[i]);
76 2 i++;column++;
77 2 if(column==40)
78 2 {
79 3 column=1;
80 3 row++;
81 3 if(row==2)
82 3 return;
83 3 else
84 3 {
85 4 switch(row)//這種結構保持以后升級到多行顯示液晶
86 4 {
87 5 case 1:Lcd1602_Write_Command(0x80);break;
88 5 case 2:Lcd1602_Write_Command(0x80+0x40);break;//重新調整數據地址指針
89 5 default:break;
90 5 }
91 4 }
92 3 }
93 2 }
94 1 }
95
96 void delay(uint t1,t2)
97 {
98 1 long int i,j; //為什么不能改為uint ,一改即有問題
99 1 for(i=1;i<t1;i++)
100 1 for(j=1;j<t2;j++);
101 1
102 1 }
103
104
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 313 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -