?? lcd1602.lst
字號:
C51 COMPILER V7.09 LCD1602 08/24/2007 09:34:05 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:05 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:05 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 + -