单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(16页珍藏版)》请在冰豆网上搜索。
单片机实验
A/D转换0809应用目的
1掌握A/D转换与单片机的接口方法。
2了解A/D芯片0809转换性能及编程方法。
3通过实验了解单片机如何进行数据采集。
A/D转换0809应用内容
一、实验内容
利用实验仪上的0809做A/D转换实验,〖ZH(〗实验仪上的W1电位器提供模拟量输入。
编制程序,将模拟量转换成数字量,通过发光二极管L1-L8显示。
二、实验说明
A/D转换器大致分有三类:
一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用ADC0809属第二类,是8位A/D转换器。
每采集一次一般需100μs。
由于ADC0809A/D转换器转换结束后会自动产生EOC信号(高电平有效),取反后将其与8031的INT0相连,可以用中断方式读取A/D转换结果。
三、实验步骤
①把A/D区0809的0通道IN0用插针接至W1的中心抽头V01插孔(0-5V)。
②0809的CLK插孔与分频输出端T4相连。
③将W2的输入VIN接+12V插孔,+12V插孔再连到外置电源的+12上(电源内置时,该线已连好)。
调节W2,使VREF端为+5V。
④将A/D区的VREF连到W2的输出VREF端。
⑤EXIC1上插上74LS02芯片,将有关线路按图连好。
⑥将A/D区D0-D7用排线与BUS1区XD0-XD7相连。
⑦将BUS3区P3.0用连到数码管显示区DATA插孔。
⑧将BUS3区P3.1用连到数码管显示区CLK插孔。
⑨单脉冲发生/SP插孔连到数码管显示区CLR插孔。
⑩仿真实验系统在"P....."状态下。
⑾以连续方式从起始地址06D0运行程序,在数码管上显示当前采集的电压值转换后的数字量,调节W1数码管显示将随着电压变化而相应变化,典型值为0-00H,2.5V-80H,5V-FFH。
ORG06D0H;?
START:
MOVA,#00H
MOVDPTR,#9000H
MOVX@DPTR,A
MOVA,#00H
MOVSBUF,A
MOVSBUF,A
MOVXA,@DPTR
DISP:
MOVR0,A
ANLA,#0FH
LP:
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A
MOVR7,#0FH
H55S:
DJNZR7,H55S
MOVA,R0
SWAPA
ANLA,#0FH
MOVCA,@A+DPTR
MOVSBUF,A
MOVR7,#0FH
H55S1:
DJNZR7,H55S1
LCALLDELAY
AJMPSTART
TAB:
DB0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
DELAY:
MOVR6,#0FFh
DELY2:
MOVR7,#0FFh
DELY1:
DJNZR7,DELY1
DJNZR6,DELY2
RET
END
步进电机
ORG0A30H;?
MONIT:
MOVSP,#50H
MOV7EH,#00H
MOV7DH,#02H
MOVR0,#7CH
MOVA,#08H
MOVR4,#04H
MONIT1:
MOV@R0,A
DECR0
DJNZR4,MONIT1
MOVA,#7EH
MOVDPTR,#1FFFH;DISPFLAG
MOVX@DPTR,A
MOV76H,#00H
MOV77H,#00H
KEYDISP0:
LCALLKEY
JCDATAKEY
AJMPMONIT2
DATAKEY:
LCALLDATAKEY1
DB79H,7EH
SJMPKEYDISP0
MONIT2:
CJNEA,#16H,KEYDISP0
LCALLDISP
MOVA,7AH
ANLA,#0FH
SWAPA
ADDA,79H
MOVR6,A
MOVA,7CH
ANLA,#0FH
SWAPA
ADDA,7BH
MOVR7,A
MOVA,7EH
CJNEA,#00H,MONIT4
MONIT3:
MOVP1,#03H
LCALLDELAY0
LCALLMONIT5
MOVP1,#06H
LCALLDELAY0
LCALLMONIT5
MOVP1,#0CH
LCALLDELAY0
LCALLMONIT5
MOVP1,#09H
LCALLDELAY0
LCALLMONIT5
SJMPMONIT3
MONIT4:
MOVP1,#09H
LCALLDELAY0
LCALLMONIT5
MOVP1,#0CH
LCALLDELAY0
LCALLMONIT5
MOVP1,#06H
LCALLDELAY0
LCALLMONIT5
MOVP1,#03H
LCALLDELAY0
LCALLMONIT5
SJMPMONIT4
MONIT5:
DECR6
CJNER6,#0FFH,MONIT6
DECR7
CJNER7,#0FFH,MONIT6
LJMPMONIT
MONIT6:
LCALLMONIT7
RET
MONIT7:
MOVR0,#79H
MOVA,R6
LCALLMONIT8
MOVA,R7
LCALLMONIT8
LCALLDISP
RET
MONIT8:
MOVR1,A
ACALLMONIT9
MOVA,R1
SWAPA
MONIT9:
ANLA,#0FH
MOV@R0,A
INCR0
RET
DELAY0:
MOVR0,#7DH
MOVA,@R0
SWAPA
MOVR4,A
DELAY1:
MOVR5,#80H
DELAY2:
DJNZR5,DELAY2
LCALLDISP
DJNZR4,DELAY1;***
RET
DATAKEY1:
MOVR4,A
MOVDPTR,#1FFFH
MOVXA,@DPTR
MOVR1,A
MOVA,R4
MOV@R1,A
CLRA
POP83H
POP82H
MOVCA,@A+DPTR
INCDPTR
CJNEA,01H,DATAKEY3
DECR1
CLRA
MOVCA,@A+DPTR
DATAKEY2:
PUSH82H
PUSH83H
MOVDPTR,#1FFFH
MOVX@DPTR,A
POP83H
POP82H
INCDPTR
PUSH82H
PUSH83H
RET
DATAKEY3:
DECR1
MOVA,R1
SJMPDATAKEY2
KEY0:
MOVR6,#20H
MOVDPTR,#1FFFH
MOVXA,@DPTR
MOVR0,A
MOVA,@R0
MOVR7,A
MOVA,#10H
MOV@R0,A
KEY3:
LCALLKEYDISP
JNB0E5H,KEY2
DJNZR6,KEY3
MOVDPTR,#1FFFH;***
MOVXA,@DPTR
MOVR0,A;***
MOVA,R7
MOV@R0,A
KEY:
MOVR6,#50H
KEY1:
LCALLKEYDISP
JNB0E5H,KEY2;***
DJNZR6,KEY1
SJMPKEY0
KEY2:
MOVR6,A
MOVA,R7
MOV@R0,A
MOVA,R6;A=KEYDATA
KEYEND:
RET
KEYDISP:
LCALLDISP
LCALLKEYSM
MOVR4,A;KEYDATA
MOVR1,#76H;DATASAMETIME
MOVA,@R1
MOVR2,A
INCR1
MOVA,@R1
MOVR3,A;LASTKEYDATA
XRLA,R4
;TWOTIMEKEYDATA
MOVR3,04H;NEWKEYDATA---R3
MOVR4,02H;TIME---R4
JZKEYDISP1
MOVR2,#88H
MOVR4,#88H
KEYDISP1:
DECR4
MOVA,R4
XRLA,#82H
JZKEYDISP2
MOVA,R4;R4=TIME
XRLA,#0EH
JZKEYDISP2
MOVA,R4
ORLA,R4
JZKEYDISP3
MOVR4,#20H;R4=20H
DECR2
LJMPKEYDISP5
KEYDISP3:
MOVR4,#0FH
KEYDISP2:
MOVR2,04H
MOVR4,03H
KEYDISP5:
MOVR1,#76H
MOVA,R2
MOV@R1,A
INCR1
MOVA,R3
MOV@R1,A
MOVA,R4;****
CJNER3,#10H,KEYDISP4
KEYDISP4:
RET
DISP:
SETB0D4H
MOVR1,#7EH
MOVR2,#20H
MOVR3,#00H
DISP1:
MOVDPTR,#0FF21H
MOVA,R2
MOVX@DPTR,A
MOVDPTR,#DATA1
MOVA,@R1
MOVCA,@A+DPTR
MOVDPTR,#0FF22H
MOVX@DPTR,A
DISP2:
DJNZR3,DISP2
DECR1
CLRC
MOVA,R2
RRCA
MOVR2,A
JNZDISP1
MOVA,#0FFH
MOVDPTR,#0FF22H
MOVX@DPTR,A
CLR0D4H
RET
DATA1:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
KEYSM:
SETB0D4H
MOVA,#0FFH
MOVDPTR,#0FF22H
MOVX@DPTR,A;OFFDISP
KEYSM0:
MOVR2,#0FEH
MOVR3,#08H
MOVR0,#00H
KEYSM1:
MOVA,R2
MOVDPTR,#0FF21H
MOVX@DPTR,A
NOP
RLA
MOVR2,A
MOVDPTR,#0FF23H
MOVXA,@DPTR
CPLA
NOP
NOP
NOP
ANLA,#0FH
JNZKEYSM2
INCR0;NOKEY
DJNZR3,KEYSM1
SJMPKEYSM10
KEYSM2:
CPLA;YKEY
JB0E0H,KEYSM3
MOVA,#00H
SJMPKEYSM7
KEYSM3:
JB0E1H,KEYSM4
MOVA,#08H
SJMPKEYSM7
KEYSM4:
JB0E2H,KEYSM5
MOVA,#10H
SJMPKEYSM7
KEYSM5:
JB0E3H,KEYSM10
MOVA,#18H
KEYSM7:
ADDA,R0
CLR0D4H
CJNEA,#10H,KEYSM9
KEYSM9:
JNCKEYSM10
MOVDPTR,#DATA2
MOVCA,@A+DPTR
KEYSM10:
RET
DATA2:
DB07H,04H,08H,05H,09H,06H,0AH,0BH
DB01H,00H,02H,0FH,03H,0EH,0CH,0DH
END
步机电机控制内容
一、实验内容
从键盘上输入正、反转命令,转速参数和转动步数显示在显示器上,CPU再读取显示器上显示的正、反转命令,转速级数(16级)和转动步数后执行。
转动步数减为零时停止转动。
二、实验预备知识
步进电机驱动原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。
驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,微电脑控制步进电机最适合。
三、实验步骤
1步进电机插头插到实验系统J3插座中,P10—P13接到BA—BD插孔。
2在“P.”状态下,从起始地址开始(0A30H)连续执行程序。
输入起始地址后按EXEC键。
3在键盘上输入数字在显示器上显示,第一位为0表示正转,为1表示反转,第二位0—F为转速等级,第三到第六位设定步数,设定完按EXEC键,步进电机开始旋转。
步机电机控制目的
1了解步进电机控制的基本原理。
2掌握步进电机转动编程方法。