📄 lcd1602.lst
字号:
C51 COMPILER V7.09 LCD1602 08/24/2007 09:34:28 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN LCD1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCD1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include "LCD1602.h"
3
4 //短延时函数:ShortDelay()
5 void ShortDelay(uchar i)
6 {
7 1 for(;i>0;i--) ;
8 1 }
9
10 //长延时函数:LongDelay()
11 void LongDelay(uint i)
12 {
13 1 uint j;
14 1 for(;i>0;i--)
15 1 { for(j=1000;j>0;j--);}
16 1 }
17
18 //寄存器选择信号:SetRS()
19 void SetRS(bit i)
20 {
21 1 if(i==1) PinRS = 1;
22 1 else PinRS = 0;
23 1 }
24
25 //读写操作控制信号:SetRW()
26 void SetRW(bit i)
27 {
28 1 if(i==1) PinRW = 1;
29 1 else PinRW = 0;
30 1 }
31
32 //使能信号:SetE()
33 void SetE(bit i)
34 {
35 1 if(i==1) PinE = 1;
36 1 else PinE = 0;
37 1 }
38
39 //IO输入输出控制
40 void InitP0(bit i)
41 {
42 1 if(i==1) P0 = 0xff;
43 1 else P0 = 0x00;
44 1 }
45
46 //写指令函数:WriteInstruc()
47 void WriteInstruc(uint Instruc)
48 {
49 1 while(StatusCheck());
50 1 InitP0(0);
51 1 SetRS(0);
52 1 SetRW(0);
53 1 //ShortDelay(1);
54 1 SetE(0);
55 1 PinData = Instruc;
C51 COMPILER V7.09 LCD1602 08/24/2007 09:34:28 PAGE 2
56 1 //ShortDelay(1);
57 1 SetE(1);
58 1 ShortDelay(10);
59 1 SetE(0);
60 1 //ShortDelay(1);
61 1 SetRW(1);
62 1 SetRS(1);
63 1 }
64
65 //读BF以及AC的值函数:Read_BF_AC()
66 uint Read_BF_AC()
67 {
68 1 uint temp;
69 1 InitP0(1);
70 1 SetRS(0);
71 1 SetRW(1);
72 1 //ShortDelay(1);
73 1 SetE(0);
74 1 //ShortDelay(1);
75 1 SetE(1);
76 1 ShortDelay(1);
77 1 temp = PinData;
78 1 ShortDelay(10);
79 1 SetE(0);
80 1 //ShortDelay(1);
81 1 SetRW(0);
82 1 SetRS(1);
83 1 return(temp);
84 1 }
85
86 //写数据到RAM函数:WriteData()
87 void WriteData(uint data1)
88 {
89 1 InitP0(0);
90 1 SetRS(1);
91 1 SetRW(0);
92 1 //ShortDelay(1);
93 1 SetE(0);
94 1 PinData = data1;
95 1 //ShortDelay(1);
96 1 SetE(1);
97 1 ShortDelay(10);
98 1 SetE(0);
99 1 //ShortDelay(1);
100 1 SetRW(1);
101 1 SetRS(0);
102 1 }
103
104 //从RAM读数据函数:ReadData()
105 uint ReadData(void)
106 {
107 1 uint temp;
108 1 InitP0(1);
109 1 SetRS(1);
110 1 SetRW(1);
111 1 //ShortDelay(1);
112 1 SetE(0);
113 1 //ShortDelay(1);
114 1 SetE(1);
115 1 ShortDelay(1);
116 1 temp = PinData;
117 1 ShortDelay(10);
C51 COMPILER V7.09 LCD1602 08/24/2007 09:34:28 PAGE 3
118 1 SetE(0);
119 1 //ShortDelay(1);
120 1 SetRW(0);
121 1 SetRS(0);
122 1 return(temp);
123 1 }
124
125 //检测LCD控制器状态函数:StatusCheck()
126 //返回一bit数:1 —— 忙;0 —— 闲
127 bit StatusCheck()
128 {
129 1 return((bit)(Read_BF_AC() & 0x80));
130 1 }
131
132 //在指定位置显示字符函数: DispCharacter()
133 // x为行号,y为列号,
134 // data为显示字符的码字数据
135 void DispCharacter(uint x, uint y, uint data1)
136 {
137 1 uint temp;
138 1 while(StatusCheck()); //若LCD控制器忙,则等待
139 1
140 1 temp = y & 0x0f;
141 1 x &= 0x01;
142 1 if(x) temp |= 0x40;
143 1 SetDDRAM_Add(temp); //设置显示位置
144 1
145 1 WriteData(data1);
146 1 }
147
148 //LCD复位函数:LCDReset()
149 void LCDReset()
150 {
151 1 ClearScreen();
152 1 CursorReturn();
153 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 343 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -