📄 lcd1602func2.lst
字号:
C51 COMPILER V8.02 LCD1602FUNC2 11/03/2006 22:20:18 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD1602FUNC2
OBJECT MODULE PLACED IN lcd1602func2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602func2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 **函数功能:LCD的驱动函数 **
3 **创建人:xingyuegu **
4 **创建日期:2006-7-12 **
5 **版本:1.0 **
6 **修改日期:2006-10-12 **
7 **版本:2.0 **
8 *******************************************************************/
9
10 #include "lcd1602.h>
11 #include <absacc.h>
12 unsigned char data ac=0;
13
14 /*************************************************************
15 **功能:延时 **
16 **参数:无 **
17 *************************************************************/
18
19 void delay1_64ms(void)
20 {
21 1 uint i;
22 1 for(i = 0;i < 1500;i++)
23 1 {
24 2 ;
25 2 }
26 1 }
27
28 /*************************************************************
29 **功能:判断LCD忙 **
30 **参数:无 **
31 *************************************************************/
32 #define write_lcd_command XBYTE[0x8000]
33 #define write_lcd_data XBYTE[0x8001]
34 #define read_lcd_command XBYTE[0x8802]
35 #define read_lcd_data XBYTE[0x8003]
36 unsigned char Lcd_Wait(void)
37 {
38 1 /*LcdRs=0;
39 1 LcdRw=1;
40 1
41 1 LcdEn=1;
42 1 _nop_();
43 1 _nop_();
44 1 //LcdEn=0;
45 1 //while(DBPort&0x80);
46 1 LcdEn=0;
47 1 return DBPort;*/
48 1 return read_lcd_command;
49 1 }
50 /**************************************************************
51 **功能:写LCD函数 **
52 **参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
53 ** 命令/数据 **
54 **************************************************************/
55
C51 COMPILER V8.02 LCD1602FUNC2 11/03/2006 22:20:18 PAGE 2
56
57 void Lcd_Write(bit style,unsigned char input)
58 {
59 1 /*LcdEn=0;
60 1 LcdRs=style;
61 1 LcdRw=0;
62 1 DBPort=input;
63 1 LcdEn=1;
64 1 LcdEn=1;
65 1 LcdEn=1;
66 1 LcdEn=0;
67 1 Lcd_Wait();*/
68 1 if(style)
69 1 write_lcd_data=input;
70 1 else
71 1 write_lcd_command=input;
72 1 Lcd_Wait();
73 1 }
74 /***************************************************************
75 **功能:设置显示模式 **
76 **参数: **
77 ***************************************************************/
78
79 void Lcd_SetDisplay(unsigned char DisplayMode)
80 {
81 1 Lcd_Write(Lcd_Command,0x08|DisplayMode);
82 1 }
83 /***************************************************************
84 **功能:LCD移动设置 **
85 **参数:取值如下 **
86 ***************************************************************/
87
88 //
89 void Lcd_Move(unsigned char MoveMode)
90 {
91 1 Lcd_Write(Lcd_Command,0x10|MoveMode);
92 1 }
93
94 /****************************************************************
95 **功能:LCD输入设置 **
96 **参数:取值如下 **
97 ****************************************************************/
98 //
99 void Lcd_SetInput(unsigned char InputMode)
100 {
101 1 Lcd_Write(Lcd_Command,0x04|InputMode);
102 1 }
103 /****************************************************************
104 **功能:LCD初始化 **
105 **参数:取值如下 **
106 ****************************************************************/
107 void Lcd_Init(void)
108 {
109 1
110 1 Lcd_Write(Lcd_Command,0x38); //8位数据端口,2行显示,5*7点阵
111 1 Lcd_Write(Lcd_Command,0x38);
112 1
113 1 _nop_();
114 1 Lcd_SetDisplay(Lcd_Display_On|Lcd_Cursor|Lcd_Flash); //开启显示, 无光标
115 1 Lcd_Write(Lcd_Command,Lcd_Clear_Screen); //清屏
116 1 Lcd_SetInput(Lcd_Ac_Up|Lcd_No_Move); //AC递增, 画面不动
117 1
C51 COMPILER V8.02 LCD1602FUNC2 11/03/2006 22:20:18 PAGE 3
118 1 }
119
120 /****************************************************************
121 **功能:显示位置设置 **
122 **参数:x-行;y-列 **
123 ****************************************************************/
124 void GotoXY(unsigned char x,unsigned char y)
125 {
126 1 if(y==0)
127 1 {Lcd_Write(Lcd_Command,0x80|x);
128 2 ac=x%8;}
129 1 if(y==1)
130 1 {Lcd_Write(Lcd_Command,0x80|(x+0x40));
131 2 ac=17+x%8;}
132 1 }
133
134 /****************************************************************
135 **功能:LCD显示函数 **
136 **参数:str-要显示的字符串指针 **
137 ****************************************************************/
138 void Print(unsigned char *str)
139 {
140 1 while(*str!='\0')
141 1 {
142 2
143 2 if(ac==16)
144 2 GotoXY(0,1);
145 2 else if(ac==32)
146 2 {GotoXY(0,0);
147 3 ac=0;}
148 2 Lcd_Write(Lcd_Data,*str);
149 2 ac++;
150 2 str++;
151 2 }
152 1 }
153 /****************************************************************
154 **功能:LCD清屏函数 **
155 **参数:无 **
156 ****************************************************************/
157 void ClrScreen(void)
158 {
159 1
160 1 Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
161 1 delay1_64ms(); //必须有,LCD清屏要1.64ms
162 1 ac=0;
163 1 }
164
165
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 216 ----
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 + -