《计算机原理课程设计.pdf》由会员分享,可在线阅读,更多相关《计算机原理课程设计.pdf(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大连理工大学本科实验报告课程名称:计算机原理课程设计学 院(系):电气工程学院专 业:电气工程及其自动化班 级:_学 号:_ _ _ _ _ _ _ _ _ _ _学生姓名:_ _ _ _ _ _ _ _ _ _ _ _ _2010 年 12 月 30 日大连理工大学实验报告实验时间:年 月 _ _ _ _ 日 星期 四 时 间:13:00 15:05实 验 室(房间号):综420实 睑 台 号 码:27 班级:姓名:指导教师签字:成绩:实 验 一 运算类程序设计编程训练一、实验目的和要求1、掌握运算类指令编程及调试方法。2、掌握运算类指令对各标志位的影响及控制条件转移的使用。二、实验内容用减
2、奇数法开平方。三、实验算法N个连续自然数中的奇数和等于N 2,要 做S的开平方运算,那么就可以从S数中逐次减去自然数中的奇数1,3,5,7,直到结果为0,然后统计自然奇数的个数,它就是S数的平方根。四、实验流程图五、程序清单CRLF MACROMOV DL,0DHMOV AH,02HINT21HMOV DL,0AHMOV AH,02HINT21HENDMDATA SEGMENTDATABUF DB 10DUP(?)DATA1 DB TNPUT A NUMBERSDATA2 DB THE RESULT IS$RESULT DB 10DUP(?)TENDB 10ODD DW-1DATAENDSCO
3、DE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AH,09HMOV DX,OFFSET DATA1;显示提示语INT 21HMOV BX,OFFSET DATABUFMOV SI,0INPUT:MOV AH,01H;输入一个字符INT 21HMOV BX+SI,ALINC SICMP AL,0DH;判断是否是回车JNZ INPUTDEC SIMOV CX,SIMOV SI,0MOV AX,0;ASIIC 码转二进制ATB:MUL TENSUBBYTE PTR|BX+SI,30H;此处 al 可能溢出ADD AL,SI+
4、BXINC SILOOP ATBLEABX,ODDMOV CX,0;开方EVOLUTION:ADD WORD PTRBX,02HINC CXSUBAXJBXJNZ EVOLUTIONCRLFMOV AH,09HMOV DX,OFFSET DATA2;显示提示语INT 21HLEABX,RESULTMOV AX,CXMOV CX,0BTA:DIV TENMOV BX,AHADD BYTE PTRBX,30HINC BXINC CXMOV AH,OOHCMP AL,OOHJZ DIS1JMP BTADIS1:LEABX,RESULTMOVDECDIS:MOVMOVSI,CXSIAH,02HDLJB
5、X+SIINT 21HDEC SILOOP DISMOV AH,4CHINT 21HCODE ENDSEND START六、实验结果与分析运行程序,达到了设计要求,下图为程序运行结果:2:MASMMINEeuolutINPUT A NUMBER:36,H E RESULT IS:6:MASMMINEeuolutINPUT A NUMBER:64HE RESULT IS:8fc:MASMMINEeuolutINPUT A NUMBER:144IlHE RESULT IS七、实验体会和建议通过本次实验,掌握了汇编程序的上机调试过程,汇编语言的应用能力有了一定的提高。编写的程序可以在一定范围内得到正
6、确的结果,但 对256开方却出现错误,可能是数据溢出造成的。本程序完成了对开方算法的验证,但在实际应用方面还很欠缺。八、主要仪器设备计算机DOS操作系统。大连理工大学实验报告实验时间:年 月 日 星期 四 时 间:13:00 15:05实 验 室(房间号):综420实 睑 台 号 码:27 班级:指导教师签字:成绩:实 验 二 排序程序设计编程训练一、实验目的和要求1、利用分支,循环,子程序调用等基本程序结构实现排序程序。2、掌握综合程序的设计,编制及调试方法。二、实验内容在数据区中存放一组数,数据个数就是数据缓存区的长度,用气泡法,对该数据区中的数据按递增关系排序。三、实验算法1、从最后一二
7、数开始,依次把相邻的两个数进行比较,即 第N个数与第N-1个数比较,第N-1个数与第N-2个数比较若 第N-1个数大于第N个数,则两者交换,否则不交换,直到N个数的相邻两个数都比较完为止。此时,N个数中的最小数将被排在N个数的最前列。若在本步骤中一次交换都没有发生,说明已经排好,此时可设立标志,结束排序,减小程序的时间复杂度。2、判断排序否结束,若未结束,对剩下的N-1个数重读第一步,找 到N-1个数中的最小数。3、重复第二步,直 到N个数全部排好序为止。四、实验流程图I大于五、程序清单DATA SEGMENTBUFFER DB 31h,35h,37h,39h,33h,32h,34h,30h,
8、38h,36hCOUNT EQU($-BUFFER)DATA ENDSSS_SEG SEGMENT STACKDB 256 DUP(?)SS_SEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:SS_SEGMAIN PROC FARMOV AX,DATAMOV DS,AXMOV SI,COUNTSORT1:MOV Dl,lMOV CX,DILEA BX,BUFFERCIRCLE:MOV ALJBXINC BXCMP ALJBXJLE NEXTXCHG ALJBXMOV BX-1,ALMOV DI,CXNEXT:INC CXCMP CX,SIJL CIRC
9、LEDEC SICMP DIJJNE SORT1MOV CX,COUNTLEA BX,BUFFERDIS:MOV AH,02HMOV DL,BXINT21HINC BXLOOP DISMOV AH,4cHINT21HMAIN ENDPCODE ENDSEND MAIN六、实验结果与分析运行程序,达到了设计要求,卜.图为程序运行结果:R命令提不符X:MASMMINEsort1123456789七、实验体会和建议通过本次实验,掌握了分支,循环,子程序调用等基本程序的基本应用,并学会气泡法这一排序算法。八、主要仪器设备计算机DOS操作系统。大连理工大学实验报告实验时间:年 月 _ _ _ _ 日 星
10、期 四 时 间:13:00 15:05实 验 室(房间号):综420实 睑 台 号 码:27 班级:指导教师签字:成绩:实 验 三 DOS功能调用编程训练一、实验目的和要求1、熟悉汇编语言程序的使用。2、掌握十进制的运算、设计显示程序运行结果的格式。3、熟练掌握DOS功能调用。二、实验内容编写程序,求 30个同学成绩的平均分数,将结果显示在屏幕上。显示格式要求如下:第一行显示:THE 20 SCORES ARE:以分号分隔的30个同学的分数。第二行显示:AVERAGE SCORE IS=求得的平均分数。三、实验算法1、将 ASCII码表示的数转换二进制表示,并求和、求平均数,在将平均数转换为A
11、SCII码,在屏幕上显示。2、显示字符串信息用DOS功能调用INT21H,功能号为09H。3、显示平均数结果时,用 DOS功能调用IN T21H,功能号为02H。四、实验流程图五、程序清单CRLF MACROMOV DUODHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HENDMDATA SEGMENTSCORE DB 38H,36H,38H,34H,39H,36H,38H,34H,39H,36H,37H,37H,39HDB 37H,38H,36H,38H,34H,39H,36H,37H,37H,38H,36H,38H,34HDB 39H,36H,38
12、H,34H,39H,36H,37H,37H,38H,36H,38H,34H,39H,36HSUMDW0000HTENDB 10TWENTYDB 20STR1DB THE TWENTY SCORES ARE:$”STR2DBHTHE AVERAGE SCORE IS=$nDATAENDSSS_SEG SEGMENT STACKSTA DB 20 DUP(?)TOP EQU LENGTH STASS_SEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:SS_SEGSTART:MOVAX,DATAMOVDS,AXMOVAX,SS_SEGMOVSS,AXMOVA
13、X,TOPMOVSRAXMOV AH,09HMOV DX,OFFSET STR1INT 21HMOV CX,20MOV BX,OFFSET SCOREDISP:MOV AH,02HMOV DL,BXINT 21HINC BXMOV AH,02HMOV DL,BXINT 21HINC BXMOV AH,02HMOV DL;;1INT 21HLOOP DISPCRLFMOV AH,09HMOV DX,OFFSET STR2INT 21HMOV CX,20MOV SI,0MOV AX,0LEA BX,SCOREAA:SUB BYTE PTR|BX+SI|,30HMOV AL,BX+SIMUL TEN
14、INC SISUB BYTE PTRBX+SI,30HADD AL,BX+SIINC SIADD SUM,AXLOOP AAMOV AX,SUMDIV TWENTY;在人人的循环中,曾因为少了一句INC S L 使 ax中的数为MOV AH,00H;负数,有符号数,使用DIV时出现错误DIV TENPUSH AXADD AL,30HMOV AH,02HMOV DL,ALINT 21HPOP AXADD AH,30HMOV DL,AHMOV AH,02HINT 21HMOV AH,4CHINT 21HCODEENDSENDSTART六、实验结果与分析运 行 程 序,达 到 了 设 计 要 求,下
15、图为程序运行结果:C:MASMMINEauerageTHE TWENTY SCORES ARE:86;84;96;84;96;77;97;86;84;96;77;86;84;96;84;96;?7;86;84;96;THE AUERAGE SCORE IS=87七、实验体会和建议通 过 本 次 实 验,熟 悉 汇 编 语 言 程 序 的 使 用,常 用 的 D O S 功 能 调 用 方 法。在程序中成绩 用 ASCII码 表 示 是 考 虑 到 加 入 输 入 成 绩 子 程 序 时,从 键 盘 录 入 的 输 入 为 ASCH码表示,后 因 时 间 不 够 未 编 写 该 子 程 序。在
16、A A 的循环中,曾因为少了一句IN C S L 使 ax中的数为负数,有符号数,使 用 DIV时出现错误。编程时由于对未对dx 清零,除 s i时结果不正确,开始并未找出原因,故用了在数据段定义一个字节为20。总之,通过本次实验,对汇编语言编程积累了一定的经验。八、主要仪器设备计 算 机 D O S 操 作 系 统。大连理工大学实验报告实验时间:年 月 日 星期 四时 间:13:0015:05实 验 室(房间号):综 420实 验 台 号 码:27 班级:指导教师签字:成绩:实验四 8255并行接口实验一、实验目的和要求1、学习利用并行接口芯片8255构成并行接口电路的基本方法。2、熟悉掌握
17、并行接口芯片8255的基本性能及在实际应用中的硬件连接、初始化编程方法。二、实验内容编写程序,使 8255的PB 口位输出口,PA 口将K0K7作为一个字节读入,再从PB口输出这一反码字节。三、实验电路图U4工 厂 D6 D1 D0RESEF IOWIO F CSWRS I76543210万KEIODDDDDDDDI OI OR IAA76S4321076S43210BBBBBBBBAAAAAAAApppppppppppppppp134567L0-L71345678K0-K-825 5A8255并行接口实验电路图四、程序清单汇编程序代码如下:CODEASSUMESTART:MOVMOVOUTB
18、G:SEGMENTCS:CODEDX,21BHAL,90HDX,ALMOVINMOVOUTJMPCODEENDDX,218HAL,DXDX,219HDX,ALBGENDSSTART五、实验结果与分析通过开关从PA 口输入数据,观察灯可知,PB 口的输出为输入的反码。实现了设计的功能。六、实验体会和建议通过本次实验,掌握了 8255芯片的使用方法。本次实验为第一个接口实验,对硬件知识的要求较高,实验前对芯片地址等知识还不了解,实验完成后又参考了教科书,对芯片的寻址有了了解。通过实验,加深了对理论知识的学习。七、主要仪器设备SAC-86s试验箱,计算机。大连理工大学实验报告实验时间:年 月 _ _
19、 _ _ 日 星期 四 时 间:13:00 15:05实 验 室(房间号):综420实 睑 台 号 码:27 班级:_ _ _ _指导教师签字:成绩:实验五 8259中断实验一、实验目的和要求1.PC机的中断结构及8259中断控制器的初始化。2.熟悉8259中断控制器的工作原理和硬件连线方法。3.了解8259的应用和硬件编程方法。4.了解8259中断屏蔽,以及优先级判别等特性。5.了解8259的级联工作方式。二、实验内容1.编写中断实验程序,主程序使8255的PB 口为输出口,输 入0FFH,L0L7指示灯全亮,中断服务程序从PB 口输出0FH,L0L3亮,L4L7灭,并延时一段时间后返回主程
20、序。2.编写中断实验程序,主程序使8255的PB 口为输出口,输 入0FFH,L0L7指示灯全亮,IR0中断服务程序从PB 口输出0FH,L0L3亮,L4L7灭,并延时一段时间后返回主程序。IR1中断服务程序从PB 口输出0F0H,L0L3灭,L4L7亮,并延时一段时间后返回主程序。三、实验电路图IOWIORINTAINTRAOCS1CS2754321076543210BBBAAAAAAAAFPFPPPFFPPPPPPPPwTCmD6D3D4D3saD0IOIORRESA1AOB图 5-1 8259(单片)中断实验电路图图 5-2 8259中断优先级实验电路图四、程序清单8259(单 片)中断
21、实验汇编 程 序 代 码 如 下:INTO EQU 220HINTI EQU 221HINT10EQU 228HINT11 EQU 229HSTACKSTA DBTOP EQUSTACKCODESEGMENT50DUP(?)LENGTHSTAENDSSEGMENTASSUME CS:CODE,SS:STACKSTART:CLIMOV AX,TOPMOV SP,AXPUSH DSMOV AX,0000H;SET IRQOMOV DS,AXMOV AX,OFFSET IRQOADD AX,0000HMOV SL20HMOV SI,AXMOV AX,CSMOV SI,22HMOV SI,AXPOP
22、DSMOV ALJ3H;ICW1MOV DXJNTOOUT DX,ALMOV AL,8;ICW2MOV DXJNT1OUT DX,ALMOV CX,0FFFHLOOPSMOV AL,9;ICW4MOV DXJNT1OUT DX,ALMOV CX,0FFFHLOOPSMOV DXJNT1MOV AL,0FEH;OCW1OUT DX,ALMOV CX,0FFFHSTIMOV DX,21BHMOV AL,90HOUT DX,ALDSP:MOV AL,0FFHMOV DX,219HOUT DX,ALJMP DSPIRQO:STIMOV CXQFFFFHLOOPSMOV AL,0FHMOV DX,219
23、HOUT DX,ALMOV DXJNTOMOV AL,20HOUT DX,ALMOV CX,0FFFFHLOOPSMOV CXQFFFFHLOOPSIRETCODE ENDSEND START8259中断优先级实验汇编程序代码如下:INTO EQU 220HINTI EQU 221HINT10EQU 228HINT11 EQU 229HSTACKSTATOP EQUSTACKCODESEGMENTDB 50 DUP(?)LENGTHSTAENDSSEGMENTASS UME CS:CODE,SS:STACKSTART:CLIMOV AX,TOPMOV SP,AXPUSH DSMOV AX,00
24、00H;SET IRQOMOV DS,AXMOV AX,OFFSET IRQOADD AX,0000HMOV SI,20HMOV SI,AXMOV AX,CSMOV SL22HMOV SI,AXMOV AX,0000H;SET IRQ1MOV DS,AXMOV AX,OFFSET IRQ1ADD AX,0000HMOV SI,24HMOV SI,AXMOV AX,CSMOV SI,26HMOV SI,AXPOP DSMOV AL,13H;ICW1MOV DXJNTOOUT DX,ALMOV AL,8;ICW2MOV DXJNT1OUT DX,ALMOV CX,0FFFHLOOPSMOV AL,
25、9;ICW4MOV DXJNT1OUT DX,ALMOV CX,0FFFHLOOPSMOV DXJNT1MOV AL,0FCH;OCW1OUT DX,ALMOV CX,0FFFHSTIMOV DX,21BHMOV AL,90HOUT DX,ALDSP:MOV AL,0FFHMOV DX,219HOUT DX,ALJMP DSPIRQO:STIMOV CX,0FFFFHLOOPSMOV AL,0FHMOV DX,219HOUTDX,ALMOV DXJNTOMOV AL,20HOUT DX,ALMOV CX,0FFFFHLOOPSMOV CX,0FFFFHLOOPSIRETIRQ1:STIMOV
26、CX,0FFFFHLOOPSMOV AL,0F0HMOV DX,219HOUT DX,ALMOV DXJNTOMOV AL,20HOUT DX,ALMOV CX,0FFFFHLOOPSMOV CX,0FFFFHLOOPSIRETCODE ENDSEND START五、实验结果与分析单片8259实验中,L0L7指示灯全亮,按下单脉冲按钮,L0L3亮,L4L7灭,延时一段时间后仍全亮。8259中断优先级实验中,L0L7指示灯全亮;按下左单脉冲按钮(接 IRO),L0-L3亮,L4L7灭,延时一段时间后仍全亮;按下右单脉冲按钮(接 IRO),L0L3灭,L4-L7亮,延时一段时间后仍全亮;同时按下两
27、个单脉冲按钮,L4L7先灭亮,L0L3后灭亮,延时一段时间后仍全亮。在短时间内多次按下按钮,引发中断,灯不再亮。六、实验体会和建议通过本次实验,掌握了 8259的初始化方法,了解了 8259的应用和硬件编程方法,8259中断屏蔽,以及优先级判别等特性。对于在短时间内多次引发中断灯不再亮的现象,经思考,可能是堆栈溢出造成的,可以增加堆栈的大小,看现象是否消失来验证猜测是否正确。由于实验时还未想到原因,故还未进行验证。七、主要仪器设备SAC-86s试验箱,计算机。大连理工大学实验报告实验时间:年 一月 一日 星期 四时 间:13:0015:05实 验 室(房1 埠):综 420实 睑 台 号 码:
28、27 班级:指导教师签字:成绩:实验六 定时计数器实验一、实验目的和要求1.了解定时器8253的初始化及用法。2.会用逻辑笔或示波器观察8253的工作状态。二、实验内容编写程序,使8253的定时/计数器2工作在方式3下。会看到逻辑笔红绿灯来回反复变化。三、实验电路图 D 6 D 4 D 3 P 2 D 1 D O _ _ 1 O W、I()R -c s-A 1 A 0TT8 25 38253实验电路图oGVRDDDDDDDDI OI OCAACA逻辑第2 嫡入。电平输入K 0四、程序清单汇编程序代码如下:TIM_CTL EQU 203HEND STARTTIMER0EQU200HTIMER 1
29、EQU201HTIMER2EQU 202HMODE23EQU0B6HMODE 13EQU76HCODESEGMENTASSUMECS:CODESTART:TT:CLIMOVDX,TIM_CTLMOVAL,MODE23OUTDX,ALMOVDX,TIMER2MOVAL,0FFHOUTDX,ALMOVAL,0FFHOUTDX,ALWT:JMPWTCODEENDS五、实验结果与分析KO向8253输入高电平时,可以看到逻辑笔红绿交替变化。K0为低电平时观察不到此现象。六、实验体会和建议通过本次实验,掌握了 8253的使用方法。对于时定时时间超出计时器计时范围的情况,可先通过一个计时器对时钟信号进行分频
30、,再用其输出作为另一定时器的时钟信号。用这种方法可以极大地拓展计时的范围。七、主要仪器设备SAC-86s试验箱,计算机。大连理工大学实验报告实验时间:年 一月 一日 星期 四时 间:13:0015:05实 验 室(房间号):综420实 睑 台 号 码:27 班级:一指导教师签字:成绩:实验七 A/D转换接口实验一、实验目的和要求1.了解模/数转换的工作原理。2.掌握0809的使用方法。二、实验内容编写程序,用0809的IN0通道采集数据并在数码管上显示。调节电位器W 1,以改变模拟电压值,显示器上会不断显示新的A/D转换结果。三、实验电路图U11ADW裁VOUT0809实验电路图四、程序清单汇
31、编程序代码如下:B8279EQU 212HD8279EQU 210HLEDO EQU 00LED1EQU 38HDATASEGMENTLED DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,DB I 5FH,77H,7cH,39H 5EH,79H,71HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVDX,B8279MOVAL,0D0HOUTDX,ALMOVCX,0FFFFHLOOP$MOVDX,B8279MOVAL,LEDOOUTDX,ALMOVAL,LED 1OUTDX,ALMOVDX,B8279MOVAL,95
32、HOUTDX,ALMOVDX,D8279MOVAL,40HOUTDX,ALMOVDX,D8279MOVAL,5EHOUTDX,ALMOVDX,D8279MOVAL,77HOUTDX,ALTT:MOVDX,230HOUTDX,ALMOVCX,0FFFFHLOOP$MOVDX,B8279MOVAL,83HOUT DX,ALMOV DX,230HIN AL,DXAND AL,0FHLEA BX,LEDXLATMOV DX,D8279OUT DX,ALMOV DX,B8279MOV AL,84HOUT DX,ALMOV DX,230HIN AL,DXMOV CL,4HROR AL,CLAND AL,0
33、FHLEA BX,LEDXLATMOV DX,D8279OUT DX,ALJMP TTCODE ENDSEND START五、实验结果与分析数码管高五位显示“A d-X X”,旋转电位器旋钮,改变模拟量大小,转换值X X在00FF之间变化。六、实验体会和建议通过本实验,掌握了 0809的使用方法。由于A/D转换需要一定时间,所以编写程序时应注意在启动A/D转后后,必须延时一段时间才能采集A/D转换的值。七、主要仪器设备SAC-86s试验箱,计算机。大连理工大学实验报告实验时间:年 月 日 星期 四时 间:13:0015:05实 验 室(房间号):综420实 验 台 号 码:27 班级:指导教师
34、签字:成绩:实验七 步进电机实验一、实验目的和要求1.了解步进电机的工作原理,以及脉冲分配概念。2.掌握计算机控制步进电机的方法。二、实验内容编写程序,通 过8255控制步进电机的方法。按步进电机脉冲分配规律,设定相应输入步进电机转速。扳 动K0-K7,可控制步进电机的转速,K0-K3转速依次提高。三、实验电路图K0-K7、D D5 D4 D3 D1 D1 D76543210DEkDD-DDDEX RESET IOV1QT A0 CSIOWIORRESETAlAOCSPB?PB5PB?PB 二PBSPB2PB1PBOPA7PA6PA5PA4PA3PA2PAIPAO1 23 45 6123456
35、78步进电机1238255A步进电机实验电路图四、程序清单汇编程序代码如下:CODESEGMENTASSUMESTART:CS:CODEMOVDX,21BHMOVAL,90HOUTDX,ALBG:MOV DX,218HINAL,DXCMPJNZC2AL,01HMOVBX,0FFFFHJMPWORKC2:CMPJNZC4AL,02HMOVBX,07FFFHJMPWORKC4:CMPJNZC8AL,04HMOVBX,0FFFHJMPWORKC8:CMPJNZCCAL,08HMOVBX,07FFHJMPWORKCC:MOVAL,OOHMOVDX,219HOUTDX,ALJMPBGWORK:MOVAL
36、,01HMOVDX,219HOUTDX,ALMOVCX,BXLOOP$MOVAL,03HMOVDX,219HOUTDX,ALMOVCX,BXLOOP$MOVAL,02HMOVDX,219HOUTDX,ALMOVCX,BXLOOP$MOVAL,06HMOVDX,219HOUTDX,ALMOVCX,BXLOOP$MOV AL,04HMOV DX,219HOUT DX,ALMOV CX,BXLOOP$MOV AL,0CHMOV DX,219HOUT DX,ALMOV CX,BXLOOP$MOV AL,08HMOV DX,219HOUT DX,ALMOV CX,BXLOOP$MOV AL,09HMOV
37、 DX,219HOUT DX,ALMOV CX,BXLOOP$JMP BGCODE ENDSEND START五、实验结果与分析扳动K 0-K 3,可控制步进电机的转速,K0-K3转速依次提高。六、实验体会和建议通过本次实验,了解了步进电机的工作原理,以及脉冲分配概念;掌握了计算机控制步进电机的方法。七、主要仪器设备SAC-86s试验箱,计算机。大连理工大学本科设计报告题目:基于PWM的直流电机调速系统设计课程名称:计算机原理课程设计学 院(系):电气工程学院专 业:电气工程及其自动化班 级:_ _ _ _ _ _ _ _ _ _ _ _ _学 号:_ _ _ _ _ _ _ _ _ _ _
38、_ _ _ _学生姓名:_ _ _ _ _ _ _ _ _成 绩:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _2011 年 1 月 6 日题目:基于PWM的直流电机调速系统设计1 设计要求1.以8253为核心,编制P W M波形算法,通过8255输出P W M波形控制电机;2.直流电机的转速可以控制:1)利用K7K 0人工控制;2)将两个单脉冲的输出与8259的IRO、IR 1连接,利用中断分别实现“提速”和“减速”的控制。3)程序控制:周而复始的由慢到快、再由快到慢,循环往复;4)利用实验台上的电位器人工调节-一转速连续变化。2 设计分析及系
39、统方案设计利用两个计数器(定时器)CNTK CNT2分别实现PW M的周期定时和脉宽定时。CNTO做分频器,将实验台上的1MHZ信号降低为1000HZ发波,此信号分别为CNT1、CNT2做计数脉冲;采用查询方式,将0UT1、0UT2的信号电平与8255的PCO、PC1连接,由CPU检测两个定是周期的状态,再由8253DE PC7输出PW M信号。读取开关的值选择控制方式,当K0为1时,用软件控制脉宽,使转速由慢到快、再由快到慢,循环往复;当K1为1时,通过调节实验台上的电位器的输出电压经AD转换后作为pwm的脉宽,从而控制转速连续变化。当KO=O,K1=O时,可通过中断的方式控制转速。外部中断
40、由单脉冲源提供,通过8259管理外部中断。3硬件电路图直流电机调速系统电路原理图4程序流程图5 程序清单io8253_0equ200hio8253_1equ201hio8253_2equ202hio8253_kequ203hp55aequ218h;8255 a port outputp55bequ219h;8255 b port outputp55cequ21ah;8255 c port inputp55ctlequ21bh;8255 coutrl portintOequ 220h;8259IR0intiequ 221h;8259IR1data segmentflag db 0;程序自动控控制
41、时的加减速标志data endsss_seg segment stacksta db 50dup(?)top equ length stass_seg endscode segmentassume cs:code,ss:ss_segstart:nopclimov ax,topmov sp,axpush ds;保护数据mov ax,0000hmov ds,axmov ax,offset irqO;设置8号中断服务程序地址mov si,20hmov si,axmov ax,csmov si,22hmov si,axmov ax,0000hmov ds,axmov ax,offset irql;设置
42、9号中断服务程序地址mov si,24hmov si,axmov ax,csmov si,26hmov si,axpop dsstimov al,13hmov dx,intOout dx,almov al,8mov dxjntlout dx,almov al,9mov dx,intlout dx,almov dx,intlmov al,Ofchout dx,al;icwl;icw2;icw4;ocwlmov dx,p55ctlmov al,1001001 lbout dx,almov dx,io8253_kmov al,36hout dx,almov ax,100mov dx,io8253_0
43、out dx,almov al,ahout dx,almov dx,io8253_kmov al,76hout dx,almov ax,260mov dx,io8253_lout dx,almov al,ah;指向8255的控制口;设定C 口为方式0,PC0、1输入,PC7输出;写入控制字;向8253写控制字;使0 通道为工作方式3;写入循环计数初值100;先写入低字节;后写入高字节;设8253通 道 1工作方式0;写入循环计数初值260(周期参数);以避免输入的脉宽值大于周期参数;先写低字节out dx,almov dx,p55ctlmov al,93hout dx,almov bl,l;后
44、写高字节9口输入,PC7输出;PWM的处置为最小lop:mov dx,230hOUTDX,ALin al,dxand al,02hstimov dx,p55cin al,dxand al,Olhjnz lop;mov si,l检 测 OUT1是否为低;指向8255的 c 口;OUT1不 为 1 时等待mov dx,p55ctlmov al,Ofhout dx,almov dx,io8253_kmov al,ObOhout dx,almov ax,0mov al,blmov dx,io8253_2out dx,almov al,ahout dx,allop 1:mov dx,p55c;将PC7置
45、位;设8253通道2 工作方式0;*写入计数初值(脉宽参数1-99,实际为5-80即可);先写低字节;后写高字节;指向8255的 c 口jmplopjz loplmov dx,p55ctlmov al,0ehout dx,allop2:mov dx,p55cin al,dxand aI,01h;将PC7清零;等待OUT低电平结束;指向8255的 c 口jz lop2;OUT1=0时等待MOV DX,P55ain al,dxand al,01hjnz KOMOV DX,P55a;判断K0是否为1in al,dxand al,02hjnz KI;判 断 K1是否为1K0:cmp flag,0;判断
46、加速还是减速jne ba:cmp bl,250;判断是否达到最高速度jaabadd bl,10mov cx,Offffhloop$jmp lopb:cmp bl,10;判断是否达到最低速度jna absub bl,10mov cx,Offffhloop$jmp lopab:not flag;标志位取反jmp lopKI:mov dx,230h;读A/D转换的值in al,dxand aLOffh;防止值为0jnz kl 1inc alkl 1:mov bl,aljmp lopirqO:sti;O8号中断服务程序cmp bl,205jaFladd bl,50Fl:MOV DXJNTOMOV AL
47、,20HOUT DX,ALmov cx,Offfhloop$iretirqksti;09号中断服务程序cmp bl,51jbF2sub bl,50F2:MOV DXJNTOMOV AL,20HOUT DX,ALmov cx,Offfhloop$iretcode endsend start6 系统调试运行结果说明、分析所出现得问题,设计体会与建议系统运行的硬件环境为SAC-86s试验箱,计算机。设计语言为汇编语言。在调试中读 取A/D转换的值时曾出现错误,无法控制电机的转速。经单步调试后发现,当电位器输出电压为0时会出现错误,修改程序后,可以正常运转。7 结论及设计体会通过这次实验,我对汇编语言的编写更加熟练了,同时也掌握了 8259,8253等芯片的使用方法。在设计过程中出现错误时,一定要耐心,从现象判断错误是出现在程序设计上还是硬件连接上。可以用已经调试正确的程序去验证硬件连接是否正确。如果是软件的问题,要用断点和单步的方式去检验。设计时要先从最近基本的功能着手,实现了以后再逐步加入其他功能,避免系统过于复杂造成检查错误时的困难。在整个实验的设计中,多亏了老师的耐心指导,使我掌握了出现错误时的应对方法,顺利地完成了实验。最后,对老师表示衷心的感谢!参考文献1张仁杰,秦晓梅编著。微机原理与接口技术综合实验教程。大连:大连理工大学出版社,2004PW M信号发生器
限制150内