?? lcd.lst
字號:
C51 COMPILER V7.50 LCD 07/14/2008 10:33:20 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.obj
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE source\lcd.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lcd.lst) OBJEC
-T(lcd.obj)
line level source
1 // LCD型號:TC802B
2 // P0為數據口線
3 #include "../header/lcd.h"
4 /***********************************************
5 函 數: InitLcdMouble
6 功 能: 初始化TCB802B所有內部寄存器
7 輸 入: /
8 輸 出: /
9 描 述: /
10 ***********************************************/
11 void InitLcdMouble(void)
12 {
13 1 WriteLcdCmd(0x01); // 清屏命令
14 1 Delay(3); // 延時3ms
15 1
16 1 WriteLcdCmd(0x38); // 8位數據接口,兩行5x7點顯示
17 1 Delay(3); // 延時3ms
18 1
19 1 WriteLcdCmd(0x06); // 地址從左至右,自動加1
20 1 Delay(3); // 延時3ms
21 1
22 1 WriteLcdCmd(0x0c); // 開顯示,光標關閉,無閃爍
23 1
24 1 LcdDclear();
25 1 LcdDisplay(&logo,0x10);
26 1 }
27 /***********************************************
28 函 數: WriteLcdCmd
29 功 能: 寫TCB802B一個內部寄存器
30 輸 入: CmdValue
31 輸 出: /
32 描 述: /
33 ***********************************************/
34 void WriteLcdCmd(uchar CmdValue)
35 {
36 1 LCD_Rs = false; // 選擇指令寄存器
37 1 LCD_Rw = false; // 選擇寫使能
38 1
39 1 LCD_En = true;
40 1 Delay(1); // 延時1ms
41 1 P0 = CmdValue;
42 1 Delay(1); // 延時1ms
43 1 LCD_En = false; // 下降沿觸發鎖定
44 1
45 1 LCD_Rw = true; // 恢復默認讀使能
46 1 LCD_Rs = true; // 恢復默認數據寄存器
47 1 }
48 /***********************************************
49 函 數: WriteLcdData
50 功 能: 寫TCB802B一個顯示數據
51 輸 入: DataValue
52 輸 出: /
53 描 述: /
54 ***********************************************/
C51 COMPILER V7.50 LCD 07/14/2008 10:33:20 PAGE 2
55 void WriteLcdData(uchar DataValue)
56 {
57 1 LCD_Rw = false; // 選擇寫使能
58 1 Delay(1); // 延時1ms
59 1 LCD_En = true;
60 1 Delay(1); // 延時1ms
61 1 P0 = DataValue;
62 1 Delay(1); // 延時1ms
63 1 LCD_En = false; // 下降沿觸發鎖定
64 1
65 1 LCD_Rw = true; // 恢復默認讀使能
66 1 }
67 /***********************************************
68 函 數: Lcd_Display_Hex()
69 功 能: 顯示十六進制數據在LCD上
70 輸 入: /
71 輸 出: /
72 描 述: /
73 ***********************************************/
74 void Lcd_Display_Hex(uchar hex)
75 {
76 1 uchar temp;
77 1
78 1 temp = hex;
79 1 temp >>= 0x04;
80 1
81 1 /* 以下程序為把十六進制數據換為LCD顯示的字模 */
82 1 if((temp&0x0f) >= 0x0a)
83 1 WriteLcdData((temp&0x0f)+0x37);
84 1 else
85 1 WriteLcdData((temp&0x0f)+0x30);
86 1
87 1 if((hex&0x0f) >= 0x0a)
88 1 WriteLcdData((hex&0x0f)+0x37);
89 1 else
90 1 WriteLcdData((hex&0x0f)+0x30);
91 1 }
92 /***********************************************
93 函 數: LcdDisplay
94 功 能: 顯示緩沖區數據
95 輸 入: buffer,number
96 輸 出: /
97 描 述: 從LCD第一個位置開始顯示number個數據
98 ***********************************************/
99 void LcdDisplay(uchar *buffer,uchar number)
100 {
101 1 uchar i;
102 1 uchar temp;
103 1
104 1 WriteLcdCmd(0x08); //關顯示,光標關閉,無閃爍
105 1 Delay(3); // 延時3ms
106 1
107 1 if(number>0x08)
108 1 {
109 2 temp = number - 0x08;
110 2
111 2 WriteLcdCmd(0x80); // 設置DDRAM地址第一行
112 2 Delay(3); // 延時3ms
113 2 for(i=0x00;i<0x08;i++)
114 2 {
115 3 WriteLcdData(*buffer);
116 3 buffer ++;
C51 COMPILER V7.50 LCD 07/14/2008 10:33:20 PAGE 3
117 3 }
118 2
119 2 Delay(3); // 延時3ms
120 2 WriteLcdCmd(0xc0); // 設置DDRAM地址第二行
121 2 Delay(3); // 延時3ms
122 2 for(i=0x00;i<temp;i++)
123 2 {
124 3 WriteLcdData(*buffer);
125 3 buffer ++;
126 3 }
127 2 }
128 1 else
129 1 {
130 2 WriteLcdCmd(0x80); // 設置DDRAM地址第一行
131 2 Delay(3); // 延時3ms
132 2 for(i=0x00;i<number;i++)
133 2 {
134 3 WriteLcdData(*buffer);
135 3 buffer ++;
136 3 }
137 2 }
138 1
139 1 WriteLcdCmd(0x0c); // 開顯示,光標關閉,無閃爍
140 1 }
141 /***********************************************
142 函 數: Lcd_Display_Character
143 功 能: 顯示一個字符
144 輸 入: /
145 輸 出: /
146 描 述: /
147 ***********************************************/
148 void Lcd_Display_Character(uchar character)
149 {
150 1 WriteLcdData(character);
151 1 }
152 /***********************************************
153 函 數: LcdDclear
154 功 能: 清除緩沖區數據
155 輸 入: /
156 輸 出: /
157 描 述: /
158 ***********************************************/
159 void LcdDclear(void)
160 {
161 1 uchar i;
162 1
163 1 WriteLcdCmd(0x08); // 關顯示,光標關閉,無閃爍
164 1 Delay(3); // 延時3ms
165 1
166 1
167 1 WriteLcdCmd(0x80); // 設置DDRAM地址第一行
168 1 Delay(3); // 延時3ms
169 1
170 1 for(i=0x00;i<0x08;i++)
171 1 {
172 2 WriteLcdData(0x20);
173 2 }
174 1
175 1 Delay(3); // 延時3ms
176 1 WriteLcdCmd(0xc0); // 設置DDRAM地址第二行
177 1 Delay(3); // 延時3ms
178 1
C51 COMPILER V7.50 LCD 07/14/2008 10:33:20 PAGE 4
179 1 for(i=0x00;i<0x08;i++)
180 1 {
181 2 WriteLcdData(0x20);
182 2 }
183 1
184 1 WriteLcdCmd(0x0c); // 開顯示,光標關閉,無閃爍
185 1 }
186 /***********************************************
187 函 數: Delay
188 功 能: 延時X(0x00-0xff)毫秒
189 輸 入: X
190 輸 出: /
191 描 述: 誤差1ms,要求有定時器定時1ms,使用全局變量Time_count
192 ***********************************************/
193 void Delay(uchar X)
194 {
195 1 Time_Count = X;
196 1 while(Time_Count)
197 1 {
198 2 }
199 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 414 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 11
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 + -