📄 lcd_fucntion.lst
字号:
C51 COMPILER V7.20 LCD_FUCNTION 11/02/2005 12:55:38 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LCD_FUCNTION
OBJECT MODULE PLACED IN LCD_Fucntion.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD_Fucntion.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************************************
2 * Company : 3ALOGICS *
3 ************************************************************/
4 #include <stdio.h>
5 #include "common.h"
6 #include "base.h"
7
8 #define LCDP P2
9 #define EN P2_0
10
11 void Delay_ms(int p) // X=0.001/(1/11.0592/12)*8=115(1ms 狼 掉饭捞 拌魂)
12 {
13 1 int i,j;
14 1 for(i=0;i<p;i++)
15 1 {
16 2 for(j=0;j<141;j++);
17 2 }
18 1 }
19
20 void Instruction_Out(BYTE b) //INSTRUCTIN 免仿阑 困茄 窃荐
21 {
22 1 LCDP=b&0xf0; //惑困 4BIT 免仿
23 1 EN=1; //ENABLE
24 1 EN=0; //DISABLE
25 1 LCDP=(b&0x0f)<<4; //窍困 4BIT 免仿
26 1 EN=1; //ENABLE
27 1 EN=0; //DISABLE
28 1 //Busy(); //疙飞绢 荐青捞 肯丰瞪嫐鳖瘤 瘤楷
29 1 Delay_ms(2);
30 1
31 1 }
32
33 void Char_Out(BYTE b) //LCD俊 茄巩磊 免仿窍绰 窃荐
34 {
35 1
36 1 LCDP=(b&0xf0)|0x04; //惑困 4BIT 免仿
37 1 EN=1; //ENABLE
38 1 EN=0; //DISABLE
39 1 LCDP=((b&0x0f)<<4)|0x04; //窍困 4BIT 免仿
40 1 EN=1; //ENABLE
41 1 EN=0; //DISABLE
42 1 //Busy(); //疙飞绢 荐青捞 肯丰瞪锭鳖瘤 瘤楷
43 1 Delay_ms(2);
44 1
45 1 }
46
47 void Lcd_Initial(void) //LCD檬扁拳 风凭
48 {
49 1
50 1 EN=0;
51 1 Delay_ms(100);
52 1 Instruction_Out(0x28); //LCD FUNCTION SET(16*2LINE, 4BIT, 5*8DOT)
53 1 Delay_ms(100);
54 1 Instruction_Out(0x0c); //LCD DISPLAY ON,CURSOR OFF,BLINK OFF
55 1 Delay_ms(100);
C51 COMPILER V7.20 LCD_FUCNTION 11/02/2005 12:55:38 PAGE 2
56 1 Instruction_Out(0x01); //LCD CLEAR
57 1 Delay_ms(100);
58 1 Instruction_Out(0x06); //LCD ENTRY MODE SET
59 1 Delay_ms(100);
60 1 Instruction_Out(0x02); //RETURN HOME
61 1
62 1 }
63
64 void String_Out(BYTE *str) //巩磊凯 免仿阑 困茄 窃荐
65 {
66 1 unsigned int i=0;
67 1 do{
68 2 Char_Out(str[i]);
69 2 }while(str[++i]!='\0');
70 1 }
71
72 void Int_String_Out(BYTE *str) //巩磊凯 免仿阑 困茄 窃荐
73 {
74 1 unsigned int i=0;
75 1 do{
76 2 Char_Out(str[i]);
77 2 }while(str[++i]!='\0');
78 1 }
79
80 void Hex_String_Out(BYTE str[2]) //巩磊凯 免仿阑 困茄 窃荐
81 {
82 1 Char_Out(str[0]);
83 1 Char_Out(str[1]);
84 1 }
85
86 void Line1_Display (void)
87 {
88 1 Instruction_Out(0x80);
89 1 }
90
91 void Line2_Display (void)
92 {
93 1 Instruction_Out(0xc0);
94 1 }
95
96 void Lcd_Clear (void)
97 {
98 1 Instruction_Out(0x01);
99 1 }
100
101 void Dec2Hex (BYTE deci, BYTE hexa[2])
102 {
103 1 BYTE Lower=0,Upper=0;
104 1 Lower = (deci&0x0f);
105 1 Upper = (deci&0xf0)>>4;
106 1
107 1 if(Lower>9)
108 1 {
109 2 hexa[1] = Lower+55;
110 2 }
111 1 else
112 1 {
113 2 hexa[1] = Lower+48;
114 2 }
115 1
116 1 if(Upper>9)
117 1 {
C51 COMPILER V7.20 LCD_FUCNTION 11/02/2005 12:55:38 PAGE 3
118 2 hexa[0] = Upper+55;
119 2 }
120 1 else
121 1 {
122 2 hexa[0] = Upper+48;
123 2 }
124 1 }
125
126 void Dec2HexOut (BYTE deci)
127 {
128 1 BYTE hexa[2];
129 1 Dec2Hex(deci,hexa);
130 1 Hex_String_Out(hexa);
131 1 }
132
133 /*void Display_ID(BYTE *BUf)
134 {
135 i=0;
136 do{Buf[i]
137
138 }while(Buf[++i]!='\0');*/
139
140 void FIFO_Read(void)
141 {
142 1 BYTE FIFOLength;
143 1 BYTE i;
144 1 FIFOLength = Read(0x04);
145 1
146 1 if(FIFOLength != 0)
147 1 {
148 2 printf("\n FIFO Data Read :: Length = %02X [Hex] \n ", (int)FIFOLength);
149 2 for(i=0; i<FIFOLength; i++)
150 2 {
151 3 printf("FIFO Byte[%02X] = %02X \n " , (int)i, (int)Read(0x02) );
152 3 }
153 2 }
154 1 else {
155 2 printf("\n FIFO EMPTY !! \n ");
156 2 }
157 1 }
158
159 void Display_SFR(void)
160 {
161 1 BYTE PriSta;
162 1 BYTE FIFOLength;
163 1 BYTE Command;
164 1 BYTE temp;
165 1 PriSta = (((Read(0x03))&0x70)>>4);
166 1 FIFOLength = Read(0x04);
167 1 if(FIFOLength!=0x00){
168 2 Command = ((Read(0x01))&0x3f);
169 2 Line1_Display();
170 2 String_Out("Pri: FIFO: ");
171 2 Instruction_Out(0x85);
172 2 Dec2HexOut(PriSta);
173 2 Instruction_Out(0x8e);
174 2 Dec2HexOut(FIFOLength);
175 2 Line2_Display();
176 2 String_Out("Com: ");
177 2 Instruction_Out(0xc5);
178 2 Dec2HexOut(Command);
179 2 Delay_ms(1000);
C51 COMPILER V7.20 LCD_FUCNTION 11/02/2005 12:55:38 PAGE 4
180 2 Lcd_Clear();
181 2
182 2 //IRQ Check
183 2 temp = Read(0x03);
184 2 if((temp&0x08)>>3)
185 2 {
186 3 temp=Read(0x07);
187 3 if((temp&0x20)>>5)
188 3 {
189 4 Line1_Display();
190 4 String_Out("IRQ TimerlRq");
191 4 Delay_ms(1000);
192 4 Lcd_Clear();
193 4 }
194 3 if((temp&0x10)>>4)
195 3 {
196 4 Line1_Display();
197 4 String_Out("IRQ TxlRq");
198 4 Delay_ms(1000);
199 4 Lcd_Clear();
200 4 }
201 3 if((temp&0x08)>>3)
202 3 {
203 4 Line1_Display();
204 4 String_Out("IRQ RxlRq");
205 4 Delay_ms(1000);
206 4 Lcd_Clear();
207 4 }
208 3 if((temp&0x04)>>2)
209 3 {
210 4 Line1_Display();
211 4 String_Out("IRQ IdleRq");
212 4 Delay_ms(1000);
213 4 Lcd_Clear();
214 4 }
215 3 if((temp&0x02)>>1)
216 3 {
217 4 Line1_Display();
218 4 String_Out("IRQ HiAlertRq");
219 4 Delay_ms(1000);
220 4 Lcd_Clear();
221 4 }
222 3 if (temp&0x01)
223 3 {
224 4 Line1_Display();
225 4 String_Out("IRQ LowAlertRq");
226 4 Delay_ms(1000);
227 4 Lcd_Clear();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -