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