📄 lcd1602func.lst
字号:
C51 COMPILER V8.08 LCD1602FUNC 05/10/2007 16:08:32 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCD1602FUNC
OBJECT MODULE PLACED IN lcd1602func.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE lcd1602func.c 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 unsigned char data ac=0;
12
13 /*************************************************************
14 **功能:延时1.64ms **
15 **参数:无 **
16 *************************************************************/
17
18 void delay1_64ms(void)
19 {
20 1 uint i;
21 1 for(i = 0;i < 200;i++)
22 1 {
23 2 ;
24 2 }
25 1 }
26 /*************************************************************
27 **功能:延时40us **
28 **参数:无 **
29 *************************************************************/
30
31 void delay40us(void)
32 {
33 1 uchar i;
34 1 for(i = 0;i < 11;i++)
35 1 {
36 2 ;
37 2 }
38 1 }
39 /*************************************************************
40 **功能:判断LCD忙 **
41 **参数:无 **
42 *************************************************************/
43
44 unsigned char Lcd_Wait(void)
45 {
46 1 LcdRs=0;
47 1 LcdRw=1;
48 1
49 1 LcdEn=1;
50 1 _nop_();
51 1 _nop_();
52 1 //while(DBPort&0x80);
53 1 LcdEn=0;
54 1 return DBPort;
55 1 }
C51 COMPILER V8.08 LCD1602FUNC 05/10/2007 16:08:32 PAGE 2
56 /**************************************************************
57 **功能:写LCD函数 **
58 **参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
59 ** 命令/数据 **
60 **************************************************************/
61
62
63 void Lcd_Write(bit style,unsigned char input)
64 {
65 1 LcdEn=0;
66 1 LcdRs=style;
67 1 LcdRw=0;
68 1 DBPort=input;
69 1 LcdEn=1;
70 1 LcdEn=0;
71 1 Lcd_Wait();
72 1 }
73 /****************************************************************
74 **功能:LCD清屏函数 **
75 **参数:无 **
76 ****************************************************************/
77 void ClrScreen(void)
78 {
79 1
80 1 Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
81 1 delay1_64ms(); //必须有,LCD清屏要1.64ms
82 1 ac=0;
83 1 }
84
85 /****************************************************************
86 **功能:LCD归位函数 **
87 **参数:无 **
88 ****************************************************************/
89 void Screen_home(void)
90 {
91 1
92 1 Lcd_Write(Lcd_Command,Lcd_Home);
93 1 delay1_64ms(); //必须有,LCD清屏要1.64ms
94 1 ac=0;
95 1 }
96 /***************************************************************
97 **功能:设置显示模式 **
98 **参数: **
99 ***************************************************************/
100
101 void Lcd_SetDisplay(unsigned char DisplayMode)
102 {
103 1 Lcd_Write(Lcd_Command,0x08|DisplayMode);
104 1 delay40us(); //在真硬件时不需要
105 1 }
106 /***************************************************************
107 **功能:LCD移动设置 **
108 **参数:取值如下 **
109 ***************************************************************/
110
111
112 void Lcd_Move(unsigned char MoveMode)
113 {
114 1 Lcd_Write(Lcd_Command,0x10|MoveMode);
115 1 delay40us(); //在真硬件时不需要
116 1 }
117
C51 COMPILER V8.08 LCD1602FUNC 05/10/2007 16:08:32 PAGE 3
118 /****************************************************************
119 **功能:LCD输入设置 **
120 **参数:取值如下 **
121 ****************************************************************/
122 //
123 void Lcd_SetInput(unsigned char InputMode)
124 {
125 1 Lcd_Write(Lcd_Command,0x04|InputMode);
126 1 delay40us(); //在真硬件时不需要
127 1 }
128 /****************************************************************
129 **功能:LCD初始化 **
130 **参数:取值如下 **
131 ****************************************************************/
132 void Lcd_Init(void)
133 {
134 1
135 1 Lcd_Write(Lcd_Command,0x38); //8位数据端口,2行显示,5*7点阵
136 1 delay1_64ms();
137 1 Lcd_SetDisplay(Lcd_Display_On|Lcd_No_Cursor|Lcd_No_Flash); //开启显示, 无光标
138 1 Lcd_Write(Lcd_Command,Lcd_Clear_Screen); //清屏
139 1 Lcd_SetInput(Lcd_Ac_Up|Lcd_No_Move); //AC递增, 画面不动
140 1 delay1_64ms(); //在真硬件时不需要
141 1
142 1 }
143
144 /****************************************************************
145 **功能:显示位置设置 **
146 **参数:x-行;y-列 **
147 ****************************************************************/
148 void GotoXY(unsigned char x,unsigned char y)
149 {
150 1 if(y==0)
151 1 {Lcd_Write(Lcd_Command,0x80|x);
152 2 ac=x;}
153 1 if(y==1)
154 1 {Lcd_Write(Lcd_Command,0x80|(x+0x40));
155 2 ac=16+x;}
156 1 }
157
158 /****************************************************************
159 **功能:LCD显示函数 **
160 **参数:str-要显示的字符串指针 **
161 ****************************************************************/
162 void Print(unsigned char *str)
163 {
164 1 while(*str!='\0')
165 1 {
166 2
167 2 if(ac==16)
168 2 GotoXY(0,1);
169 2 else if(ac==32)
170 2 {GotoXY(0,0);
171 3 ac=0;}
172 2 Lcd_Write(Lcd_Data,*str);
173 2 ac++;
174 2 str++;
175 2 }
176 1 }
177
178
179
C51 COMPILER V8.08 LCD1602FUNC 05/10/2007 16:08:32 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 247 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 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 + -