?? lcd1602func.lst
字號:
C51 COMPILER V8.08 LCD1602FUNC 06/04/2007 09:25:14 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCD1602FUNC
OBJECT MODULE PLACED IN lcd1602func.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602func.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 **函數功能:LCD的驅動函數 **
3 **創建人:xingyuegu **
4 **創建日期:2006-7-12 **
5 **版本:1.0 **
6 **修改日期:2006-10-30 **
7 **版本:2.0 **
8 *******************************************************************/
9
10 #include "lcd1602.h"
11
12
13 /*************************************************************
14 **功能:延時1.64ms **
15 **參數:無 **
16 *************************************************************/
17
18 void delay1_64ms(void)
19 {
20 1 uchar i;
21 1 for(i = 0;i < 250;i++)
22 1 {
23 2 _nop_();
24 2 _nop_();
25 2 _nop_();
26 2 _nop_();
27 2 }
28 1 }
29 /*************************************************************
30 **功能:延時40us **
31 **參數:無 **
32 *************************************************************/
33
34 /*void delay40us(void)
35 {
36 uchar i;
37 for(i = 0;i < 20;i++)
38 {
39 ;
40 }
41 }*/
42 /*************************************************************
43 **功能:判斷LCD忙 **
44 **參數:無 **
45 *************************************************************/
46
47 unsigned char Lcd_Wait(void)
48 {
49 1
50 1 while(1)
51 1 {
52 2 DBPort=0xff;
53 2 LcdEn=0;
54 2 _nop_();
55 2 LcdRs=0;
C51 COMPILER V8.08 LCD1602FUNC 06/04/2007 09:25:14 PAGE 2
56 2 _nop_();
57 2 _nop_();
58 2 LcdRw=1;
59 2 _nop_();
60 2 _nop_();
61 2 LcdEn=1;
62 2 _nop_();
63 2 _nop_();
64 2
65 2 _nop_();
66 2 _nop_();
67 2 if((DBPort&0x80)==0)
68 2 {
69 3 break;
70 3
71 3 }
72 2 LcdEn=0;
73 2 }
74 1 //delay40us();
75 1 return DBPort;
76 1 }
77 /**************************************************************
78 **功能:寫LCD函數 **
79 **參數:style為寫命令/數據,0-命令,1-數據;input為寫入的8位 **
80 ** 命令/數據 **
81 **************************************************************/
82
83
84 void Lcd_Write(bit style,unsigned char input)
85 {
86 1 LcdEn=0;
87 1 _nop_();
88 1 _nop_();
89 1 LcdRs=style;
90 1 _nop_();
91 1 _nop_();
92 1 LcdRw=0;
93 1 DBPort=input;
94 1 _nop_();
95 1 _nop_();
96 1 LcdEn=1;
97 1 _nop_();
98 1 _nop_();
99 1 LcdEn=0;
100 1 _nop_();
101 1 Lcd_Wait();
102 1
103 1 }
104 /****************************************************************
105 **功能:LCD清屏函數 **
106 **參數:無 **
107 ****************************************************************/
108 void ClrScreen(void)
109 {
110 1 Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
111 1 //delay1_64ms();
112 1 }
113
114 /****************************************************************
115 **功能:LCD歸位函數 **
116 **參數:無 **
117 ****************************************************************/
C51 COMPILER V8.08 LCD1602FUNC 06/04/2007 09:25:14 PAGE 3
118 void Screen_home(void)
119 {
120 1
121 1 Lcd_Write(Lcd_Command,Lcd_Home);
122 1 //delay1_64ms();
123 1
124 1 }
125 /***************************************************************
126 **功能:設置顯示模式 **
127 **參數: **
128 ***************************************************************/
129
130 void Lcd_SetDisplay(unsigned char DisplayMode)
131 {
132 1 Lcd_Write(Lcd_Command,0x08|DisplayMode);
133 1
134 1 }
135 /***************************************************************
136 **功能:LCD移動設置 **
137 **參數:取值如下 **
138 ***************************************************************/
139
140
141 void Lcd_Move(unsigned char MoveMode)
142 {
143 1 Lcd_Write(Lcd_Command,0x10|MoveMode);
144 1
145 1 }
146
147 /****************************************************************
148 **功能:LCD輸入設置 **
149 **參數:取值如下 **
150 ****************************************************************/
151 //
152 void Lcd_SetInput(unsigned char InputMode)
153 {
154 1 Lcd_Write(Lcd_Command,0x04|InputMode);
155 1
156 1 }
157 /****************************************************************
158 **功能:LCD初始化 **
159 **參數:取值如下 **
160 ****************************************************************/
161 void Lcd_Init(void)
162 {
163 1 Lcd_Write(Lcd_Command,0x38); //8位數據端口,2行顯示,5*7點陣
164 1 // Lcd_Write(Lcd_Command,0x38);
165 1 // Lcd_Write(Lcd_Command,0x38);
166 1 Lcd_SetDisplay(Lcd_Display_On); //開啟顯示, 無光標|Lcd_Cursor|Lcd_Flash
167 1 //Lcd_Move(Lcd_CursorMove|Lcd_Left);
168 1
169 1 Lcd_SetInput(Lcd_Ac_Up|Lcd_No_Move); //AC遞增, 畫面不動_To
170 1
171 1
172 1 }
173
174 /****************************************************************
175 **功能:顯示位置設置 **
176 **參數:x-行;y-列 **
177 ****************************************************************/
178 void GotoXY(unsigned char x,unsigned char y)
179 {
C51 COMPILER V8.08 LCD1602FUNC 06/04/2007 09:25:14 PAGE 4
180 1 if(y==0)
181 1 {Lcd_Write(Lcd_Command,0x80|x);
182 2 }
183 1 if(y==1)
184 1 {Lcd_Write(Lcd_Command,0x80|(x+0x40));
185 2 }
186 1
187 1 }
188
189 /****************************************************************
190 **功能:LCD顯示函數 **
191 **參數:str-要顯示的字符串指針 **
192 ****************************************************************/
193 void Print(unsigned char *str)
194 {
195 1 while(*str!='\0')
196 1 {
197 2
198 2 Lcd_Write(Lcd_Data,*str);
199 2
200 2 str++;
201 2
202 2 }
203 1 }
204
205 void print_char(uchar a)
206 {
207 1 if(a>=0&&a<=9)
208 1 Lcd_Write(Lcd_Data,a+'0');
209 1 else if(a>=0x0a &&a<= 0x0f)
210 1 Lcd_Write(Lcd_Data,a+0x37);
211 1
212 1 //Lcd_Wait();
213 1 }
214
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 230 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -