输出三角波+锯齿波+方波+正弦波
- 格式:doc
- 大小:1.35 MB
- 文档页数:8
一、目的与要求1.进一步掌握并行接口芯片8255A和微机接口的连接及其编程方法;2.进一步熟悉DAC0832数模转换器的特性和接口方法,掌握D/A 输出程序的设计和调试方法;3.掌握汇编语言程序设计方法;4.掌握接口芯片的应用,提高综合运用所学知识解决实际问题的基本方法;5.提高硬软件调试的方法。
二、实验容或题目(1)8255A相关部分实验原理与8255A相关部分如图11.4所示,PC口8位仅使用PC0,PC1两位接2个开关K1、K2,PB口8位接2个发光二极管(L1、L2),从PC口读入2位开关量送PB口显示。
拨动K1、K2,PB口上接的2个发光二极管L1、L2对应显示K1、K2的状态。
此外,随着PC0、PC1输入的四种开关状态(00、01、10、11)的改变,实时改变:1.2个发光二极管(L1、L2)的显示;2.8个LED数码管的显示(显示要求:0832――0x)x为0、1、2、3中的1个数;3.DAC0832的输出波形。
具体要求:00-输出方波;01-输出锯齿波;10-输出三角波;11-输出正弦波。
(2)DAC0832相关部分实验原理如图11.5所示,由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与8088CPU 总线直接接口。
图中是只有一路模拟量输出,且为单极型电压输出。
DAC0832工作于单缓冲方式,它的ILE接+5V,CS#和XFER#相接后作为0832芯片的片选0832CS。
这样,对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随之而变化。
(3)实验线路连接图11.4 图11.51.8255A芯片PC0、PC1插孔依次接K1、K2;2.8255A芯片PB0、PB1插孔依次接L1、L2;4.将0832片选信号0832CS插孔和译码输出070H~07FH插孔相连。
三、实验步骤与源程序1.按图11.4、11.5连好线路(共6根线);2.使用示波器,检测DAC0832的电压输出;3.使用DVCC86H调试软件,选择新建源文件或者在某个源文件基础上修改;4.完成源文件输入后,选择编译->编译连接传送;定位程序起始地址选择默认的1000H;5.编译错误,修改源程序;6.调试程序,拨动K1、K2,观察L1、L2显示、数码管显示、示波器波形;7.纪录各种波形的周期、幅值。
8.源程序:CODE S EGMENTASSUME CS:CODEDAPORT EQU 0070H ;DAC0832端口CONTPORT EQU 00DFH ;8279控制口DATAPORT EQU 00DEH ;8279数据口IOCONPT EQU 0063H ;8255A的控制口IOCPT EQU 0062H ;8255A的PC口(输入)IOBPT EQU 0061H ;8255A的PB口(输出)DATA EQU 0500H ;显示RAM偏移地址,8位段码存放在CS:[500H]~CS:[507H]JUMP EQU 0600H ;判断转移偏移量VAL EQU 0604H ;数据量START: JMP DACONTORLSIN DB 0, 2, 4, 7, 9, 11, 13, 16, 18, 20 ;0-9DB 22,24,27,29,31,33,35,37,39,42 ;10-19DB 44,46,48,50,52,54,56,58,60,62 ;20-29DB 64,66,68,69,71,73,75,77,78,80 ;30-39DB 82,84,85,87,89,90,92,93,95,96 ;40-49DB 98,99,100,102,103,104,106,107,108,109 ;50-59DB 110,112,113,114,115,116,116,117,118,119 ;60-69DB 120,121,121,122,123,123,124,124,125,125 ;70-79DB 126,126,126,127,127,127,127,127,127,127,127,127 ; 80-89+90 DACONTORL: CALL FORMATCALL LEDDISPCALL INITLOOPk:MOV DX,IOCPT ;读PC口值IN AL,DXAND AL,03HMOV DS:[0600H],ALMOV DX,IOBPT ;送PB口输出OUT DX,ALMOV DX,DAPORT ;0832MOV AL, DS:[0600H]CMP AL,0JE L0CMP AL,1JE L1CMP AL,2JE L2CMP AL,3 ; SIN处理=3JE L3JMP LOOPkL0: ;方波处理MOV BYTE PTR DS:[0500H],3FHCALL LEDDISP ;调用显示子程序CALL SQUARE;方波处理JMP LOOPkL1: ;锯齿波处理MOV BYTE PTR DS:[0500H],06HCALL LEDDISP ;调用显示子程序CALL hackle ;锯齿波处理JMP LOOPkL2: ;三角波处理MOV BYTE PTR DS:[0500H],5BHCALL LEDDISP ;调用显示子程序CALL trigonal;三角波处理JMP LOOPkL3: ;正弦函数处理MOV BYTE PTR DS:[0500H],4FHCALL LEDDISP ;调用显示子程序CALL sinusoid;正弦函数处理JMP LOOPkERROR: MOV BYTE PTR DS:[VAL],0JMP SQUARE1SQUARE: ;方波处理MOV AL,DS:[VAL]CMP AL,0JNE CHECKJMP SQUARE1CHECK: CMP AL,0FFHJNE ERRORSQUARE1: MOV CX, DS:[0602H] ;取度数CMP CX, 180JAE SQUARE2 ;SQUARE0 MOV AL,DS:[VAL]INC CXMOV DS:[0602H],CXRETSQUARE2: MOV WORD PTR DS:[0602H],0 MOV AL,DS:[VAL]NOT ALMOV DS:[VAL],ALREThackle: ;锯齿波处理MOV AL,DS:[VAL]OUT DX,ALINC ALMOV DS:[VAL],ALRETtrigonal: ;三角波处理MOV CX,DS:[0602H] ;取度数0-255*2CMP CX,256JAE trigonal1;0-255 +++ MOV AL,DS:[VAL]OUT DX,ALINC ALMOV DS:[VAL],ALINC CXMOV DS:[0602H],CXRETtrigonal1: CMP CX,512JAE trigonal2;255-512 ---MOV AL,DS:[VAL]DEC ALOUT DX,ALMOV DS:[VAL],ALINC CXMOV DS:[0602H],CXRETtrigonal2: MOV BYTE PTR DS:[VAL],0 MOV WORD PTR DS:[0602H],0RETsinusoid: ;正弦函数处理MOV CX,DS:[0602H] ;取度数CMP CX,90JA quadrant2;quadrant1MOV SI,DIMOV AL,[SI]ADD AL,127OUT DX,ALINC CXMOV DS:[0602H],CXRETquadrant2:MOV CX,DS:[0602H] ;取度数CMP CX,180JA quadrant3MOV SI,DI;quadrant2ADD SI,180SUB SI,CXMOV AL,[SI]ADD AL,127OUT DX,ALINC CXMOV DS:[0602H],CXRETquadrant3:MOV CX,DS:[0602H] ;取度数CMP CX,270JA quadrant4MOV SI,DI;quadrant3ADD SI,CXSUB SI,180MOV BL,[SI]MOV AL,127SUB AL,BLOUT DX,ALINC CXMOV DS:[0602H],CXRETquadrant4:MOV CX,DS:[0602H] ;取度数CMP CX,360JAE quadrant5MOV SI,DI;quadrant3 ADD SI,360SUB SI,CXMOV BL,[SI]MOV AL,127INC CXMOV DS:[0602H],CXRETquadrant5:MOV WORD PTR DS:[0602H],0RET;------INIT----------------;功能:;入口参数:;出口参数:INIT:MOV AL,89HMOV DX,IOCONPTOUT DX,ALMOV BYTE PTR DS:[JUMP],3 ;SINMOV BYTE PTR DS:[VAL],0MOV W ORD PTR DS:[0602H],0MOV SI,OFFSET SINADD SI,1000HMOV DI,SIMOV DX,DAPORTRET;-----------DELAY----------------;功能:软件延时;入口参数:;出口参数:DELE:PUSH CXMOV CX,02HDACON2:LOOP DACON2POP CXRET;-----LEDDISP-----------------------;功能:将DS:[0500H]开始的8个显示段码送8279显示;入口参数:无;出口参数:无;说明:程序中BX用于计数(0~7),向8279控制口写90H控制字的含义为:8279显示RAM 自动+1LEDDISP:PUSH DXPUSH AXPUSH BX ;现场保护MOV AL,90H; 8279 显示RAM地址自动增1MOV BX,0LED1: CMP BX,7JA LED2MOV AL,DS:[BX+DATA]MOV DX,DATAPORTOUT DX,ALINC BXJMP LED1LED2: POP BXPOP AXPOP DX ;现场恢复RET;-----FORMAT-----------------------;功能:将0832--01八个段码送DS:[0500H]开始的连续8个单元,供LEDDISP过程调用;入口参数:无;出口参数:无;说明:程序中3F为0的段码;7FH为8的段码;4F为3的段码;5BH为2的段码;40H为-的段码06H为1的段码;DP,G,F,E,D,C,B,A八段中DP段为D7,A段为D0(数据低位)FORMAT: MOV BX,0MOV WORD PTR DS:[BX+0500H], 3F06H ;01ADD BX,2MOV WORD PTR DS:[BX+0500H], 4040H ;--ADD BX,2MOV WORD PTR DS:[BX+0500H], 4F5BH ;32ADD BX,2MOV WORD PTR DS:[BX+0500H], 3F7FH ;08ADD BX,2RETCODE E NDSEND START四、测试数据与实验结果(1)00-方波(2)01-锯齿波(3)10-三角波(4)11-正弦波。