Professional Documents
Culture Documents
:
AT89S8253
. -
. 101177
, 2014
0
1. .........................................................................................................2
2. .......................................................3
3. A/D MCP3204...........................................................................4
3.1. MCP3204 /D
....................................................................................6
4. LCD Hitachi HD44780...................................................................7
4.1. DDRAM .................................................................................9
4.2. CGROM ..............................................................................10
4.3. CGRAM ...............................................................................11
4.4. , LCD ........12
5. AT89S8253..................................................................15
5.1. ROM ...................................................................................19
5.2. RAM ...................................................................................19
5.3. EEPROM..............................................................................................19
6. .......................................................................20
6.1. .............................................................................................20
6.2. ............................................................................................23
7. Ko .....................................................................................34
8. :.........................................................................41
1.
898253 LCD 12-
AD . AD MCP3204
Microchip LCD Hitachi
HD44789. microC,
Microcontroller ISP Software
AT89ISP Atmel.
:
-
( ),
AD
MCP3204 ,
LCD HD44780, ,
898253 (
, ,
C Assembler
2.
.
,
2
,
.
(smart)
,
.
, =1,2,3,4.
(kvant) , 0,5 V, t2
10,25 < V < 10,75,
10,50 V.
AD
, .
.
3.A/D MCP3204
MCP3204 e 12 A/D . 4
4 2
.
A/D
:
-
Sample Hold
D/A
3.1. MCP3204 /D
3 .
A/D
, A/D
5 , ,
SGL/DIFF D2 . A/D
3 ,
null , 4 B11-B8.
8
.
.
LCD 2 16 ,
58 ,
:
, ,
, .
.
, ,
.
. Vee
0-Vdd (
)
7
LCD 16 :
3 :
-
4.1. DDRAM
. 80 ,
.
DDRAM .
( )
. , D0-D7
.
16 ,
. SHIFT
.
4.2. CGROM
,
. :
ASCII
.
. LCD ,
. , .
4.3. CGRAM
, LCD
.
58
. 8 ,
10
5.
, .
:
( CGROM ).
11
4.4. , LCD
LCD D0-D7
RS.
RS = 1 D0-D7
RS = 0 D0-D7
I/D 1 =
R/L
0 =
S
1 = SHIFT
1 =
0 =
DL
1 = 8
12
0 = SHIFT
D
0 = 4
1 =
1 =
0 =
U
0 =
1 =
0 =
B
0 = 5x8
1 =
D/C
0 =
1 = 5x10
1 =
0 =
8 4 LCD .
D0-D7
. , 4 D4-D7,
,
. , LCD- :
4 4 .
, LCD- .
:
13
1.
2. : DL = 1 ( 8 ),
N = 0 ( ), F = 0 (
58 )
3. / : D = 0 ( ), U = 0 (
), B = 0 ( )
4. : ID = 1 (
1), S = 0 ( SHIFT)
5.
AT89S8253
AT89S8253,
, .
14
AT89S8253 8 ,
CMOS . :
8051
12
2 PROM
256 RAM
4 6
0 24 MHz
32 4 8
16
9
UART
Watch Dog
2 Idle Power-down
AT89S8253
15
:
Vcc
GND
Port 0 (P0.0 P0.7) ,
8 TTL .
, .
.
,
A0-A7
. ALE
.
Port 1 (P1.0-P1.7) ,
4 TTL . ,
TTL ,
5 V. ,
:
Port 2 (P2.0-P2.7) ,
P1.
, (8-15)
.
16
Port 3 (P3.0-P3.7) P1
:
RST .
ALE/PROG ,
1/6
. ,
A0-A7. ,
.
PSEN
ROM
EA/VPP ,
.
XTAL 1
XTAL 2
5.1. ROM
ROM 12 KB FLASH ,
/ .
17
5.2. RAM
RAM 3 128
8051 :
128
128 SFR
128
5.3. EEPROM
RAM ROM.
,
. 2 KB (2048 ) EEPROM.
6.
6.1.
PCB
. ,
18
19
6.2.
microC
C.
microC_PRO_8051 2.20.exe
:
Next.
, Next. Finish
.
20
, ,
898253
21
, 11.0592 MHz
,
, SMALL
, :
22
,
.
,
Include ALL (Default)
.
Finish,
Code Editor.
23
01:
02:
03:
04:
05:
06:
07:
// Definiranje
sbit LCD_RS at
sbit LCD_EN at
sbit LCD_D4 at
sbit LCD_D5 at
sbit LCD_D6 at
sbit LCD_D7 at
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
,
Enabled Reset, A/D Chip Select
02 08.
LCD 13
19.
ADC a A/D ,
. 23 33.
ISPIS LCD-
. 37 53.
26
27
.
:
HEX , .
29
7.
Ko
01:_Init:
02:;ADC.c,13::voidInit(){
03:;ADC.c,14::LCD_Init();
04:LCALL_Lcd_Init+0
05:;ADC.c,15::LCD_Cmd(_LCD_CLEAR);
06:MOVFARG_Lcd_Cmd_out_char+0,#1
07:LCALL_Lcd_Cmd+0
08:;ADC.c,16::LCD_Cmd(_LCD_CURSOR_OFF);
09:MOVFARG_Lcd_Cmd_out_char+0,#12
10:LCALL_Lcd_Cmd+0
11:;ADC.c,17::SPI1_Init();
12:LCALL_SPI1_Init+0
13:;ADC.c,18::ADC_CS=1;
14:SETBP1_4_bit+0
15:;ADC.c,19::}
16:RET
17:;endof_Init
18:
19:_ADC:
20:;ADC.c,23::
21:;ADC.c,25::ADC_CS=0;
22:CLRP1_4_bit+0
23:;ADC.c,26::SPI1_Write(mod_rabota);
24:MOVFARG_SPI1_Write_data_out+0,FARG_ADC_mod_rabota+0
25:LCALL_SPI1_Write+0
26:;ADC.c,27::kanal=kanal<<6;
27:MOVR1,#6
28:MOVA,FARG_ADC_kanal+0
29:INCR1
30:SJMPL__ADC5
31:L__ADC6:
32:CLRC
33:RLCA
34:L__ADC5:
35:DJNZR1,L__ADC6
36:MOVR0,A
37:MOVFARG_ADC_kanal+0,0
38:;ADC.c,28::rezultat=SPI1_Read(kanal)&0x0F;
39:MOVFARG_SPI1_Read_data_out+0,0
40:LCALL_SPI1_Read+0
41:ANL0,#15
42:MOVADC_rezultat_L0+0,0
43:CLRA
44:MOVADC_rezultat_L0+1,A
45:;ADC.c,29::rezultat=rezultat<<8;
30
46:MOVADC_rezultat_L0+1,ADC_rezultat_L0+0
47:MOVADC_rezultat_L0+0,#0
48:;ADC.c,30::rezultat|=SPI1_Read(0);
49:MOVFARG_SPI1_Read_data_out+0,#0
50:LCALL_SPI1_Read+0
51:MOVA,ADC_rezultat_L0+0
52:ORL0,A
53:MOVA,ADC_rezultat_L0+1
54:ORL1,A
55:MOVADC_rezultat_L0+0,0
56:MOVADC_rezultat_L0+1,1
57:;ADC.c,31::ADC_CS=1;
58:SETBP1_4_bit+0
59:;ADC.c,32::returnrezultat;
60:;ADC.c,33::}
61:RET
62:;endof_ADC
63:
64:_ispis:
65:;ADC.c,37::voidispis(unsignedintnapon){
66:;ADC.c,40::jlong=(long)napon*5000;
67:MOVR0,FARG_ispis_napon+0
68:MOVR1,FARG_ispis_napon+1
69:CLRA
70:MOVR2,A
71:CLRA
72:MOVR3,A
73:MOVR4,#116
74:MOVR5,#19
75:MOVR6,#0
76:MOV7,#0
77:LCALL_Mul_32x32+0
78:MOVispis_jlong_L0+0,0
79:MOVispis_jlong_L0+1,1
80:MOVispis_jlong_L0+2,2
81:MOVispis_jlong_L0+3,3
82:;ADC.c,41::jlong=jlong/4095;
83:MOVR4,#44
84:MOVR5,#16
85:MOVR6,#0
86:MOV7,#0
87:LCALL_Div_32x32_S+0
88:MOVispis_jlong_L0+0,0
89:MOVispis_jlong_L0+1,1
90:MOVispis_jlong_L0+2,2
91:MOVispis_jlong_L0+3,3
92:;ADC.c,42::i=jlong/1000;
93:MOVR4,#232
31
94:MOVR5,#3
95:MOVR6,#0
96:MOV7,#0
97:LCALL_Div_32x32_S+0
98:MOVispis_i_L0+0,0
99:;ADC.c,43::LCD_Out(2,2,"Napon:");
100:MOVFARG_LCD_Out_row+0,#2
101:MOVFARG_LCD_Out_column+0,#2
102:MOVFARG_LCD_Out_text+0,#?lstr1_ADC+0
103:LCALL_LCD_Out+0
104:;ADC.c,44::LCD_Chr(2,9,48+i);
105:MOVFARG_Lcd_Chr_row+0,#2
106:MOVFARG_Lcd_Chr_column+0,#9
107:MOVA,#48
108:ADDA,ispis_i_L0+0
109:MOVFARG_Lcd_Chr_out_char+0,A
110:LCALL_Lcd_Chr+0
111:;ADC.c,45::LCD_Out(2,10,".");
112:MOVFARG_LCD_Out_row+0,#2
113:MOVFARG_LCD_Out_column+0,#10
114:MOVFARG_LCD_Out_text+0,#?lstr2_ADC+0
115:LCALL_LCD_Out+0
116:;ADC.c,46::i=(jlong/100)%10;
117:MOVR4,#100
118:MOVR5,#0
119:MOVR6,#0
120:MOV7,#0
121:MOVR0,ispis_jlong_L0+0
122:MOVR1,ispis_jlong_L0+1
123:MOVR2,ispis_jlong_L0+2
124:MOVR3,ispis_jlong_L0+3
125:LCALL_Div_32x32_S+0
126:MOVR4,#10
127:MOVR5,#0
128:MOVR6,#0
129:MOV7,#0
130:LCALL_Div_32x32_S+0
131:MOVR0,4
132:MOVR1,5
133:MOVR2,6
134:MOVR3,7
49
135:MOVispis_i_L0+0,0
136:;ADC.c,47::LCD_Chr(2,11,48+i);
137:MOVFARG_Lcd_Chr_row+0,#2
138:MOVFARG_Lcd_Chr_column+0,#11
139:MOVA,#48
140:ADDA,R0
141:MOVFARG_Lcd_Chr_out_char+0,A
142:LCALL_Lcd_Chr+0
32
143:;ADC.c,48::i=(jlong/10)%10;
144:MOVR4,#10
145:MOVR5,#0
146:MOVR6,#0
147:MOV7,#0
148:MOVR0,ispis_jlong_L0+0
149:MOVR1,ispis_jlong_L0+1
150:MOVR2,ispis_jlong_L0+2
151:MOVR3,ispis_jlong_L0+3
152:LCALL_Div_32x32_S+0
153:MOVR4,#10
154:MOVR5,#0
155:MOVR6,#0
156:MOV7,#0
157:LCALL_Div_32x32_S+0
158:MOVR0,4
159:MOVR1,5
160:MOVR2,6
161:MOVR3,7
162:MOVispis_i_L0+0,0
163:;ADC.c,49::LCD_Chr(2,12,48+i);
164:MOVFARG_Lcd_Chr_row+0,#2
165:MOVFARG_Lcd_Chr_column+0,#12
166:MOVA,#48
167:ADDA,R0
168:MOVFARG_Lcd_Chr_out_char+0,A
169:LCALL_Lcd_Chr+0
170:;ADC.c,50::i=jlong%10;
171:MOVR4,#10
172:MOVR5,#0
173:MOVR6,#0
174:MOV7,#0
175:MOVR0,ispis_jlong_L0+0
176:MOVR1,ispis_jlong_L0+1
177:MOVR2,ispis_jlong_L0+2
178:MOVR3,ispis_jlong_L0+3
179:LCALL_Div_32x32_S+0
180:MOVR0,4
181:MOVR1,5
182:MOVR2,6
183:MOVR3,7
184:MOVispis_i_L0+0,0
185:;ADC.c,51::LCD_Chr(2,13,48+i);
186:MOVFARG_Lcd_Chr_row+0,#2
187:MOVFARG_Lcd_Chr_column+0,#13
188:MOVA,#48
189:ADDA,R0
190:MOVFARG_Lcd_Chr_out_char+0,A
191:LCALL_Lcd_Chr+0
192:;ADC.c,52::LCD_Out(2,15,"V");
33
193:MOVFARG_LCD_Out_row+0,#2
194:MOVFARG_LCD_Out_column+0,#15
195:MOVFARG_LCD_Out_text+0,#?lstr3_ADC+0
196:LCALL_LCD_Out+0
197:;ADC.c,53::}
198:RET
199:;endof_ispis
200:
201:_main:
202:MOVSP+0,#128
203:;ADC.c,57::voidmain(){
204:;ADC.c,58::Init();
205:LCALL_Init+0
206:;ADC.c,59::while(1){
207:L_main0:
208:;ADC.c,60::LCD_Out(1,3,"Izbornakanal");
209:MOVFARG_LCD_Out_row+0,#1
210:MOVFARG_LCD_Out_column+0,#3
211:MOVFARG_LCD_Out_text+0,#?lstr4_ADC+0
212:LCALL_LCD_Out+0
213:;ADC.c,61::LCD_Out(2,3,"P1P2P3");
214:MOVFARG_LCD_Out_row+0,#2
215:MOVFARG_LCD_Out_column+0,#3
216:MOVFARG_LCD_Out_text+0,#?lstr5_ADC+0
217:LCALL_LCD_Out+0
218:;ADC.c,62::if(P1_3_bit){
219:JNBP1_3_bit+0,L_main2
220:NOP
221:;ADC.c,63::LCD_Cmd(_LCD_CLEAR);
222:MOVFARG_Lcd_Cmd_out_char+0,#1
223:LCALL_Lcd_Cmd+0
224:;ADC.c,64::LCD_Out(1,5,"Kanal0");
225:MOVFARG_LCD_Out_row+0,#1
226:MOVFARG_LCD_Out_column+0,#5
227:MOVFARG_LCD_Out_text+0,#?lstr6_ADC+0
228:LCALL_LCD_Out+0
229:;ADC.c,65::vrednost=ADC(6,0);
230:MOVFARG_ADC_mod_rabota+0,#6
231:MOVFARG_ADC_kanal+0,#0
232:LCALL_ADC+0
233:MOV_vrednost+0,0
234:MOV_vrednost+1,1
235:;ADC.c,66::ispis(vrednost);
236:MOVFARG_ispis_napon+0,0
237:MOVFARG_ispis_napon+1,1
238:LCALL_ispis+0
239:;ADC.c,67::Delay_ms(1000);
240:MOVR5,8
241:MOVR6,1
242:MOVR7,245
34
243:DJNZR7,
244:DJNZR6,
245:DJNZR5,
246:NOP
247:;ADC.c,68::LCD_Cmd(_LCD_CLEAR);
248:MOVFARG_Lcd_Cmd_out_char+0,#1
249:LCALL_Lcd_Cmd+0
250:;ADC.c,69::}
251:L_main2:
252:;ADC.c,70::if(P1_2_bit){
253:JNBP1_2_bit+0,L_main3
254:NOP
255:;ADC.c,71::LCD_Cmd(_LCD_CLEAR);
256:MOVFARG_Lcd_Cmd_out_char+0,#1
257:LCALL_Lcd_Cmd+0
258:;ADC.c,72::LCD_Out(1,5,"Kanal1");
259:MOVFARG_LCD_Out_row+0,#1
260:MOVFARG_LCD_Out_column+0,#5
261:MOVFARG_LCD_Out_text+0,#?lstr7_ADC+0
262:LCALL_LCD_Out+0
263:;ADC.c,73::vrednost=ADC(6,1);
264:MOVFARG_ADC_mod_rabota+0,#6
265:MOVFARG_ADC_kanal+0,#1
266:LCALL_ADC+0
267:MOV_vrednost+0,0
268:MOV_vrednost+1,1
269:;ADC.c,74::ispis(vrednost);
270:MOVFARG_ispis_napon+0,0
271:MOVFARG_ispis_napon+1,1
272:LCALL_ispis+0
51
273:;ADC.c,75::Delay_ms(1000);
274:MOVR5,8
275:MOVR6,1
276:MOVR7,245
277:DJNZR7,
278:DJNZR6,
279:DJNZR5,
280:NOP
281:;ADC.c,76::LCD_Cmd(_LCD_CLEAR);
282:MOVFARG_Lcd_Cmd_out_char+0,#1
283:LCALL_Lcd_Cmd+0
284:;ADC.c,77::}
285:L_main3:
286:;ADC.c,78::if(P1_1_bit){
287:JNBP1_1_bit+0,L_main4
288:NOP
289:;ADC.c,79::LCD_Cmd(_LCD_CLEAR);
290:MOVFARG_Lcd_Cmd_out_char+0,#1
291:LCALL_Lcd_Cmd+0
35
292:;ADC.c,80::LCD_Out(1,3,"Kanali2i3");
293:MOVFARG_LCD_Out_row+0,#1
294:MOVFARG_LCD_Out_column+0,#3
295:MOVFARG_LCD_Out_text+0,#?lstr8_ADC+0
296:LCALL_LCD_Out+0
297:;ADC.c,81::vrednost=ADC(4,2);
298:MOVFARG_ADC_mod_rabota+0,#4
299:MOVFARG_ADC_kanal+0,#2
300:LCALL_ADC+0
301:MOV_vrednost+0,0
302:MOV_vrednost+1,1
303:;ADC.c,82::ispis(vrednost);
304:MOVFARG_ispis_napon+0,0
305:MOVFARG_ispis_napon+1,1
306:LCALL_ispis+0
307:;ADC.c,83::Delay_ms(1000);
308:MOVR5,8
309:MOVR6,1
310:MOVR7,245
311:DJNZR7,
312:DJNZR6,
313:DJNZR5,
314:NOP
315:;ADC.c,84::LCD_Cmd(_LCD_CLEAR);
316:MOVFARG_Lcd_Cmd_out_char+0,#1
317:LCALL_Lcd_Cmd+0
318:;ADC.c,85::}
319:L_main4:
320:;ADC.c,86::}
321:LJMPL_main0
322:;ADC.c,87::}
323:SJMP#254
324:;endof_main
36
8.
37