南航微机原理演示_第1页
南航微机原理演示_第2页
南航微机原理演示_第3页
南航微机原理演示_第4页
南航微机原理演示_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术实验课指导教师郝立新接口技术是把由处理器、存储器等组成的基本系统与外部设备连接起来,从而实现CPU与外部设备通信的一门技术。微机的应用是随着外部设备的不断更新和接口技术的不断发展而深入到各行各业,任何微机应用开发工作都离不开接口的设计、选用及连接。微机应用系统需要设计的硬件是一些接口电路,所要编写的软件是控制这些接口电路按要求工作的驱动程序。微机原理与接口技术实验课

实验一字符串排序实验二基本输入输出接口实验三8259中断控制器实验四8254定时/计数器实验五8255并行接口控制器实验六ADC0809模/数转换器实验七DAC0832数/模转换器*实验八8251串行接口控制器*实验一字符串排序实验目的1.熟悉汇编语言程序的框架结构,掌握汇编语言上机操作过程。2.学会INT21H功能调用,掌握人机对话的设计方法。3.进一步掌握主、子程序的设计方法。4.学会Tddebug调试环境和Turbodebug的使用。字符串排序实验内容设计一字符串排序程序:(1)当屏幕上显示“PLESAEENTRYSTRING”提示信息,从键盘输入一字符串;(2)对该字符串以ASCII码从小到大进行排序;(3)在屏幕上显示排好序的字符串。字符串排序程序实验方法(1)用INT21H的09号显示字符串功能调用

显示提示信息(2)用INT21H的0A号输入字符串功能调用

输入字符串至输入缓冲区(3)对输入缓冲区的字符串以ASCII码

从小到大进行排序(4)用INT21H的09号显示字符串功能调用

显示排好序的字符串字符串选择排序设计思想(1)将第一个数取出作为当前最小值,与其余N-1个数比较;若其余数比当前最小值小则两者交换,否则不交换;全部比较完,则得到N个数中的最小值,写到串前列。(2)对剩下的N-1个数重复(1)这一步,找到N-1个数中的最小值。(3)再重复(2),直到N个数全部排列好为止。实验程序清单

;TITLEBUBBLFSORTSTACK1SEGMENTSTACKDB64DUP(0)STACK1ENDSDATASEGMENTPROMPTDB0DH,0AH,'PLEASEENTRYSTRING',0DH,0AH,'$'CRLFDB0DH,0AH,'$' CHARLABELBYTECHARHDB60CHARNDB?CHARFDB60DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1BEGINPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXAGAIN:LEADX,PROMPTMOVAH,9INT21HLEADX,CHARMOVAH,0AHINT21HMOVCL,CHARNORCL,CLJZDONECALLSORTJMPAGAINDONE:RETBEGINENDPSORTPROCXORCH,CHMOVBX,CXMOVSI,OFFSETCHARFMOVBYTEPTR[SI+BX],‘$’CLDBIGLOOP:MOVAL,[SI]DECCXJCXZDISPPUSHCXINCSIPUSHSISMALLOOP:CMPAL,[SI]JBENEXTXCHGAL,[SI]NEXT:INCSILOOPSMALLOOPPOPSIMOV[SI-1],ALCALLDISPPOPCXJMPBIGLOOPDISP:MOVDX,OFFSETCRLFMOVAH,9INT21HMOVDX,OFFSETCHARFMOVAH,9INT21HRETSORTENDPCODEENDSENDBEGIN实验步骤及要求

(1)输入源程序

.ASM文件(2)编译程序

.OBJ文件(3)连接程序

.EXE文件(4)调试运行程序运行当前可执行程序调试程序1:实模式调试窗口进行调试调试程序2:DOS环境进行调试实模式调试窗口进行调试(1)

View\Cpu

(2)代码显示区单击右键\点击为MixedBoth,为MixedNo,(3)在寄存器显示区点击

Ctrl+R

切换16位/32位通用寄存器显示(4)执行完MOVDS,AX,点击View\Cpu,使屏幕下方的数据显示区为DS的内容(5)F7单步执行F4执行到光标处F9运行程序

Ctrl+Break

终止程序执行

Alt+X

退出TDDOS环境进行调试输入命令:DEBUG文件名.EXE

a.反汇编命令U格式:U[地址]或U[地址范围]

b.检查和修改寄存器内容命令R格式:R或R[寄存器名]

c.显示内存命令D格式:D[地址]或D[地址范围]d.修改存储单元内容命令E格式:E[地址][内容表]或E[地址]e.跟踪与显示命令T格式:T[=地址][条数]f.运行命令G格式:G[=地址][地址1[地址2…]]

h.结束DEBUG返回到DOS命令QDOS状态再返回到windows状态,输入EXIT命令实验二基本输入输出接口1.了解微机PCI系统总线的结构。2.掌握地址译码电路的一般设计方法。3.掌握基本I/O接口电路的设计方法,熟练汇编语言I/O端口操作指令的使用。实验内容

1.利用三态缓冲器74LS245、锁存器74LS574设计微机总线和外部设备的数据通道,实现微机对外部输入数据的读取和对输出数据的输出。用开关及LED显示单元和数据灯作为输入和输出显示设备,将读到开关的数据显示在数据灯上。

2.在完成实验内容1的基础上,自行编制程序完成:根据输入开关的某一位的开关状态,决定LED显示单元数据灯的不同显示方式。TD-PIT++实验系统硬件环境

PCI总线扩展卡和TD-PIT++实验平台USB总线PCI总线内存总线AGP总线CPU北桥芯片显卡显示器内存PCI槽PCI槽南桥芯片IED接口硬盘键盘鼠标FlashBIOSUSB设备PCI卡微机实验箱...TD-PIT++实验平台系统总线单元电路和实验单元电路系统总线单元电路

信号名称含义XD[31:0]32位数据总线XA[31:2]32位地址总线XMER、XMEW、XIOR、XIOW存储器读写信号、I/O读写信号IOY0、IOY1、IOY2、IOY3I/O空间片选信号MYO、MY1、MY2、MY3存储器空间片选信号BE0、BE1、BE2、BE332位数据字节使能信号HOLD、HLDA总线保持请求和总线保持响应信号INTR中断请求信号(上升沿有效)CLK系统时钟信号CLK=1.041667MHz片选信号同偏移地址空间对应关系I/O片选信号偏移地址范围实际地址范围MEM片选信号实际地址范围IOY000-3FH3000-303FHMY0D80000-D8FFFFIOY140-7FH3040-307FHMY1IOY280-BFH3080-30BFHMY2IOY3C0-FFH30C0-30FFHMY3实验系统向PC机申请了接口实验所需的配置资源。其中包括:256字节的I/O地址空间16MB的存储地址空间一个中断请求线实验系统的I/O地址的设计32位系统总线IOM/信号,该信号为低电平时指示当前操作为I/O操作,为高电平指示当前操作为存储器操作,它和译码器不同的连接可以用来区分是I/O端口译码还是存储器端口译码32位总线地址是由A2开始,所以地址是以4字节边界对齐的。现在本机分配的I/O端口起始地址为3000H,设计地址译码电路,主要是针对低8位地址线译码,得到偏移在00H~FFH之间的端口微机接口电路中,常采用74LS138译码器来实现I/O端口或存储器的地址译码。输入输出接口设计

输入接口一般用三态缓冲器实现,外部设备输入数据通过三态缓冲器,通过数据总线传送给微机系统。输出接口一般用锁存器实现

输入输出接口设计

32位I/O接口单元

实验说明及步骤

将开关K[7:0]的数据通过输入数据通道读入CPU的寄存器,然后再通过输出数据通道将该数据输出到数据灯显示,该程序循环运行,直到按动键盘上任意按键再退出程序。(1)确认从PC机引出的两根扁平电缆已经连接在实验平台上。(2)自行设计并连接实验线路。

a.32位I/O接口单元与系统总线单元的连接

1.CS

IOY0,BE3-BE0

BE3-BE02.IOR

XIOR,IOW

XIOW(数据线已内部连接)b.32位I/O接口单元与开关及LED显示单元的连接1.I7-I0

K7-K02.O7-O0

D7-D0(3)编辑ASM程序,注意使用正确的端口地址,然后编译链接。(4)运行程序,拨动开关,观看数据灯显示是否正确。参考程序清单

IOY0EQU3000HSTACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,IOY0

INAL,DXOUTDX,ALMOVAH,1INT16HJZSTARTQUIT:MOVAX,4C00H

INT21HCODEENDSENDSTARTDEBUG常用命令输出命令O格式:O[端口地址][字节值]向指定端口地址输出一个字节。输入命令I格式:I[端口地址]从指定端口地址输入一个字节。自行编制程序完成:根据输入开关的某一位的开关状态,决定LED显示单元数据灯的不同显示方式。K7=1右移,k6=1左移IOY0EQU3000HSTACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,IOY0

INAL,DXTestal,10000000b

Jnz

aaTestad,01000000b

JnzbbCc:MOVAH,1INT16HJZSTARTQUIT:MOVAX,4C00H

INT21Haa:movcx,8MOVDX,IOY0

moval,10000000baa1:outdx,alCalldelay

Roral,1Loopaa1

Jmpccbb:movcx,8MOVDX,IOY0

moval,00000001bbb1:outdx,alCalldelay

Rolal,1Loopbb1

JmpccDelay:pushcx

movcx,07ffhDd1:pushcx

movcx,0fffffhloop$popcx loopdd1 popcxretCODEENDSENDSTART

点阵LED选作实验R0~R15为行控制,L0~L15为列控制,给行送一个“1”,给列送一个“0”,则相应的LED点亮。L0L1L2L3L4L5L6L7L8L9101112131415R0R1R2R3R4R5R6R7R8R9101112131415NUAADW0000H,0000H,7C7FH,1206H,110CH,1218H,7C7FH,0000HDW0000H,7C3FH,1240H,1140H,1240H,7C3FH,0000H,0000H;HLXLED.ASMIOY0EQU3000H;片选IOY0对应的端口始地址I032_1EQU3000HI032_2EQU3001HI032_3EQU3002HI032_4EQU3003H

STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTNUAADW0000H,0000H,7C7FH,1206H,110CH,1218H,7C7FH,0000HDW0000H,7C3FH,1240H,1140H,1240H,7C3FH,0000H,0000HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMAIN:MOVCX,500DISP: PUSHCXMOVSI,OFFSETNUAAMOVBX,1111111111111110BMOVCX,16

DISP1:MOVAX,[SI]MOVDX,I032_1OUTDX,ALMOVDX,I032_2MOVAL,AHOUTDX,AL

MOVAX,BXMOVDX,I032_3OUTDX,ALMOVDX,I032_4MOVAL,AHOUTDX,AL

CALLDALLY

ROLBX,1INCSIINCSILOOPDISP1POPCXLOOPDISP

MOVAH,1;判断是否有按键按下

INT16HJZMAIN;无按键则跳回继续循环,有则退出QUIT:MOVAX,4C00H;结束程序退出

INT21HDALLYPROCNEAR;软件延时子程序

PUSHCXMOVCX,50D1:MOVAX,0FFFFHD2:DECAXJNZD2LOOPD1POPCX RET DALLYENDPCODEENDSENDSTART

实验三8259中断控制器实验目的

(1)学习中断控制器8259的工作原理。(2)掌握可编程控制器8259的应用编程方法。实验内容

利用PC机给实验系统分配的中断线,设计一个单中断应用。使用单次脉冲模拟中断产生。编写中断处理程序,在显示器屏幕上显示一个字符。实验原理--8259控制器的介绍

实验原理--8259A的命令字管理8级中断,通过级连,能构成多达64级的矢量中断系统。选择中断请求方式和中断优先模式。管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应及响应哪一级中断,3)响应中断时,向CPU传送中断类型号。初始化命令字ICW1-ICW4操作命令字OCW1-OCW3初始化命令字ICW1-ICW4ICW1决定中断请求信号为电平触发还是边沿触发。ICW28259的基址中断向量号

初始化命令字ICW1-ICW4ICW3识别主8259设备连接到从8259的级联信号

ICW4选择特殊全嵌套或全嵌套模式,使能中断自动结束方式。

操作命令字OCW1-OCW3OCW1中断屏蔽操作寄存器,可屏蔽相应的中断信号。OCW2改变中断优先级和发送中断结束命令。OCW3使能特殊屏蔽方式,设置中断查询方式,允许读出中断请求寄存器和当前中断服务寄存器。

实验原理--PC微机系统中的8259

80x86系列PC微机系统中两片8259A中断控制器,经级连可以管理15级硬件中断。主片8259端口地址使用020H和021H;从片8259端口地址使用0A0H和0A1H。中断号功能中断向量号中断向量地址主8259IRQ0日时钟/计数器008H0020H~0023H主8259IRQ1键盘09H0024H~0027H主8259IRQ2接从片82590AH0028H~002BH主8259IRQ3串行口20BH002CH~002FH主8259IRQ4串行口10CH0030H~0033H主8259IRQ5并行口20DH0034H~0037H主8259IRQ6软盘0EH0038H~003BH主8259IRQ7并行口10FH003CH~003FH从8259IRQ8实时钟70H01C0H~01C3H从8259IRQ9保留71H01C4H~01C7H从8259IRQ10保留72H01C8H~01CBH从8259IRQ11保留73H01CCH~01CFH从8259IRQ12保留74H01D0H~01D3H从8259IRQ13协处理器中断75H01D4H~01D7H从8259IRQ14硬盘控制器76H01D8H~01DBH从8259IRQ15保留77H01DCH~01DFH8259单中断应用实验实验程序清单INTR_IVADDEQU01C8H;INTR对应的中断矢量地址

INTR_OCW1EQU0A1H;INTR对应的OCW1地址

INTR_OCW2EQU0A0H;INTR对应的OCW2地址INTR_IMEQU0FBH;中断屏蔽字11111011BSTACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTMESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH,'$'CS_BAKDW?;保存INTR原中断处理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序入口偏移地址的变量IM_BAKDB?;保存INTR原中断屏蔽字的变量DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMES;显示退出提示

MOVAH,09HINT21HCLI;关中断

MOVAX,0000H;替换INTR的中断矢量MOVES,AXMOVDI,INTR_IVADD

;INTR对应的中断矢量地址01C8H

MOVAX,ES:[DI]MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址

MOVAX,OFFSETMYISRMOVES:[DI],AX;设置当前中断处理程序入口偏移地址

ADDDI,2MOVAX,ES:[DI]MOV

CS_BAK,AX;保存INTR原中断处理程序入口段地址

MOVAX,SEGMYISR

MOVES:[DI],AX;设置当前中断处理程序入口段地址

MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位

INAL,DXMOVIM_BAK,AL;保存INTR原中断屏蔽字

ANDAL,INTR_IMOUTDX,AL

STI;开中断WAIT1:MOVAH,1;判断是否有按键按下

INT16HJZWAIT1;无按键则跳回继续等待,有则退出QUIT:CLI;关中断

MOVAX,0000H;恢复INTR原中断矢量

MOVES,AXMOVDI,INTR_IVADD;INTR对应的中断矢量地址

MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址

MOVES:[DI],AXADDDI,2MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址

MOVES:[DI],AXMOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字

MOVAL,IM_BAKOUTDX,ALSTI;开中断

MOVAX,4C00H;返回到DOS

INT21HMYISRPROCNEAR;中断处理程序MYISRPUSHAXMOVAL,39HMOVAH,0EHINT10HMOVAL,20HINT10HOVER:MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令

MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPAXIRETMYISRENDPCODEENDSENDSTART实验四8254定时/计数器实验内容(1)定时应用实验。编写程序,应用8254的定时功能,实现一个1Hz的输出。(2)计数应用实验*。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KK1-5次后,产生一次计数中断,并在屏幕上显示一个字符‘5’。8254---可编程定时/计数器8254的工作方式(1)方式0:计数到0结束,输出正跃变信号方式。(2)方式1:硬件可重触发单稳方式。(3)方式2:频率发生器方式。(4)方式3:方波发生器方式。(5)方式4:软件触发选通方式。(6)方式5:硬件触发选通方式。

8254---方式控制字D7D6D5D4D3D2D1D0计数器选择读/写格式选择工作方式选择计数码制选择00-计数器001-计数器110-计数器211-读出控制字标志00-锁存计数值01-读/写低8位10-读/写高8位11-先读/写低8位再读/写高8位000-方式0001-方式1010-方式2011-方式3100-方式4101-方式50-二进制数1-十进制数定时应用实验

编写程序,将8254的计数器2设置为方式3,用1.8432mHz作为CLK2时钟。计数初值为18432,相当对CLK2进行18432分频,在OUT2输出频率为100Hz的时钟。再将OUT2连接到计数器0的CLK0,设置计数器0也工作在方式3,计数初值为100,相当是进行100分频。则在OUT0得到1Hz的输出。8254定时应用实验接线计数初值公式为n=fCLKi÷fOUTifCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。定时应用实验程序清单

IOY0EQU3000H;片选IOY0对应的端口始地址MY8254_COUNT0EQUIOY0+00H*4;8254计数器0端口地址MY8254_COUNT1EQUIOY0+01H*4;8254计数器1端口地址MY8254_COUNT2EQUIOY0+02H*4;8254计数器2端口地址MY8254_MODEEQUIOY0+03H*4;8254控制寄存器端口地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,0B6H;10110110计数器2,方式3OUTDX,ALMOVDX,MY8254_COUNT2;装入计数初值

MOVAL,00H;18432分频

OUTDX,ALMOVAL,48HOUTDX,ALMOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,36H;00110110计数器0,方式3OUTDX,ALMOVDX,MY8254_COUNT0;装入计数初值

MOVAL,64H;100分频

OUTDX,ALMOVAL,00HOUTDX,ALQUIT:MOVAX,4C00H;结束程序退出

INT21HCODEENDSENDSTART计数应用实验

编写程序,将8254的计数器0设置为方式0,计数值为十进制5,用微动开关KK1+作为CLK0时钟,OUT0连接INTR,每当KK1-按动5次后产生中断请求,在屏幕上显示字符“5”。参考程序流程图计数应用实验程序清单INTR_IVADDEQU01C8H;INTR对应的中断矢量地址INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址INTR_IMEQU0FBH;INTR对应的中断屏蔽字IOY0EQU3000H;片选IOY0对应的端口始地址MY8254_COUNT0EQUIOY0+00H*4;8254计数器0端口地址MY8254_COUNT1EQUIOY0+01H*4;8254计数器1端口地址MY8254_COUNT2EQUIOY0+02H*4;8254计数器2端口地址MY8254_MODEEQUIOY0+03H*4;8254控制寄存器端口地址

STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTCS_BAKDW?;保存INTR原中断处理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序入口偏移地址的变量IM_BAKDB?;保存INTR原中断屏蔽字的变量STR1DB'COUNT:$';显示的字符串DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCLIMOVAX,0000H;替换INTR的中断矢量

MOVES,AXMOVDI,INTR_IVADDMOVAX,ES:[DI]MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址

MOVAX,OFFSETMYISRMOVES:[DI],AX;设置当前中断处理程序入口偏移地址

ADDDI,2MOVAX,ES:[DI]MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址

MOVAX,SEGMYISRMOVES:[DI],AX;设置当前中断处理程序入口段地址

MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位

INAL,DXMOVIM_BAK,AL;保存INTR原中断屏蔽字

ANDAL,INTR_IMOUTDX,ALSTIMOVDX,OFFSETSTR1;显示字符串

MOVAH,9INT21H

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,10H;00010000计数器0,方式0OUTDX,ALMOVDX,MY8254_COUNT0;装入计数初值

MOVAL,4OUTDX,ALWAIT1:MOVAH,1;判断是否有按键按下

INT16HJZWAIT1;无按键则跳回继续等待,有则退出QUIT:CLIMOVAX,0000H;恢复INTR原中断矢量

MOVES,AXMOVDI,INTR_IVADDMOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址

MOVES:[DI],AXADDDI,2MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址

MOVES:[DI],AXMOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字

MOVAL,IM_BAKOUTDX,ALSTIMOVAX,4C00H;返回到DOSINT21HMYISRPROCNEAR;中断处理程序MYISRPUSHAXMOVAL,35HMOVAH,0EHINT10HMOVAL,20HINT10H

MOVDX,MY8254_COUNT0;重装计数初值

MOVAL,4OUTDX,ALOVER:MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令

MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPAXIRET

MYISRENDP

CODEENDSENDSTART实验五8255并行接口控制器(1)掌握8255的工作方式及应用编程。(2)学习按键扫描的原理及电路接法。(3)掌握利用8255完成按键扫描及显示。实验内容连接8255与键盘扫描单元,编写程序完成按键扫描功能,并将读到的按键值依次显示在数码管上。

8255并行接口控制器简介方式0--基本输入/出方式方式1--选通输入/出方式方式2--双向选通工作方式D7D6D5D4D3D2D1D01A组方式选择00方式001方式110方式2A口0输出1输入C口高4位0输出1输入B组方式选择0方式01方式1B口0输出1输入C口低4位0输出1输入8255工作方式控制字格式D7D6D5D4D3D2D1D00不用C口的位选择位0000位1001位2010位3011位4100位5101位6110位7111置位/复位0复位1置位8255C口按位置/复位控制字格式

LED数码显示单元

字符01234567段码3FH06H5BH4FH66H6DH7DH07H字符89ABCDEF段码7FH6FH77H7CH39H5EH79H71HLED共阴极数码管段码表

LED数码管有共阴极与共阳极两种。

共阴极数码管的8个发光二极管阴极接在一起。其共阴极端接地平,其余八个引脚加高电平才能点亮发光二极管;

共阳极数码管的8个发光二极管阳极接在一起。其共阳极端接高电平,其余八个引脚加低电平才能点亮发光二极管。LED数码管静态显示和动态显示方式

静态显示方式:共阴极或共阳极点连接在起接地(低电平)或+5V(高电平);每位的段码线(a-dp)与一外8位的并行口相连。

每一位可独立显示,只要在该位的段码线上保持段码电平,该位就能保持相应的显示字符。动态显示方式将所有位的段码线并联在一起,由一个8位并行口控制显示字符;各位共阴极或共阳极点则由另一并行口控制所显示的位。要想每位显示不同的字符,就必须采用动态扫描方式,即在每一瞬间只使某位数码管显示相应字符。在此期间,段码的并行口输出相应字符段码,位码的并行口输出该位共阴极或共阳极点的控制电平,以保证该位显示相应字符。

LED数码显示单元

LED数码显示单元4X4小键盘单元简介

键盘的工作方式有编程扫描方式、定时扫描方式和中断扫描方式。键盘接口编程的四个基本功能1.去抖动2.被按键的识别和键码的产生按键识别有扫描法和反转法两种方法3.确定所按下的键进行相应处理4.判别键是否释放实验步骤及要求

(1)确认从PC机引出的两根扁平电缆已经连接在实验平台上。(2)根据实验内容设计实验电路并进行连接:a.8255单元与系统总线单元的连线

1.D7-D0

XD7-XD02.CS

IOY0,A1-A0

XA3-XA23.RD

XIOR,WR

XIOWb.8255的端口与键盘及数码管显示单元的连线

1.PA7-PA0

Dp-A(段码线)2.PB7-PB2

L1-L6(位码线)3.PC7-PC4

Y4-Y1(行线)4.PC3-PC0

X4-X1(列线)(3)根据实验内容和实验电路编写程序,然后编译链接。(4)运行程序,按动实验台小键盘,观察CRT、数码管显示是否正确。参考实验程序清单

IOY0EQU3000H;片选IOY0对应的端口始地址PA55EQUIOY0+00H*4;8255的A口地址PB55EQUIOY0+01H*4;8255的B口地址PC55EQUIOY0+02H*4;8255的C口地址P55CTLEQUIOY0+03H*4;8255的控制寄存器地址DATA SEGMENTTABLE1DB11H,12H,14H,18H;键盘的各键的键值(行值、列值)DB21H,22H,24H,28HDB41H,42H,44H,48HDB81H,82H,84H,88HLEDDB3FH,06H,5BH,4FH;LED数码管的共阴极段码DB66H,6DH,7DH,07HDB7FH,6FH,77H,7CHDB39H,5EH,79H,71H,00HCHARDB‘0123456789ABCDEF’;字符的ASCII码表MESDB'Pressanykeyonthesmallkeyboard!',0DH,0AHDB'Presskeytodisplayontheled!',0DH,0AH,'$'MESSDB'Pressmainkeyboardanykeytoexit!',0DH,0AH,0DH,0AH,'$'KEYCDB?;控制功能键的键值KEYNDB?;数字键的序号KEYBUFDB6DUP(10H)DATAENDSSTACSEGMENTPARASTACKDB256DUP(?)STACENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMES;显示提示信息MOVAH,9INT21HMOVDX,OFFSETMESSMOVAH,9INT21HLOP1:CALLTESTKEY;调用键盘扫描子程序CALLDISP;调用数码管显示程序MOVAH,0BH;检查键盘输入状态INT21HORAL,ALJZLOP1QUIT:MOVAX,4C00HINT21HTESTKEYPROC;键盘扫描子程序KEY0:MOVAL,81H;10000001B,8255的A口、B口输出MOVDX,P55CTL;行PC4-7输出、列PC0-3输入OUTDX,ALWAIT1:CALLDISPMOVDX,PC55;使行线全为低MOVAL,00000000BOUTDX,ALINAL,DX;取列线值CMPAL,00001111B;有键按下吗?JZWAIT1;无键按下,继续等待

PUSHAX;暂存列值MOVCX,0FFFFH;延时去抖动LP2:LOOPLP2KEY1:MOVDX,P55CTLMOVAL,88H;10001000BOUTDX,AL;行线PC4-7为输入,列线PC0-3为输出MOVDX,PC55;列线值反转输出

POPAX

OUTDX,ALINAL,DX;再取行值NOTAL;取反形成键值MOVKEYC,AL;存入KEYC单元MOVSI,OFFSETTABLE1;识别被按键MOVCX,16MOVDL,00HKEY2:CMPAL,[SI]JZKEY3INCSIINCDLLOOPKEY2JMPKEYENDKEY3:MOVKEYN,DL;数字键存入KEYN单元MOVBX,OFFSETCHAR;在CRT上显示键号字符MOVAL,KEYNXLATMOVDL,ALMOVAH,02HINT21HMOVSI,OFFSETKEYBUF+1;存放数字键到输入缓冲区MOVDI,OFFSETKEYBUFMOVCX,5KEY4:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPKEY4MOVAL,KEYNMOV[DI],AL;判断键释放MOVAL,81H;10000001B,8255的A口、B口输出MOVDX,P55CTL;行PC4-7输出、列PC0-3输入OUTDX,ALWAIT2:CALLDISPMOVDX,PC55;使行线全为低MOVAL,00000000B OUTDX,ALINAL,DX;取列线值CMPAL,00001111B;键释放吗?JNZWAIT2;键未释放,继续等待KEYEND:RETTESTKEYENDPDISPPROC;数码管显示子程序MOVCL,10000000B;显示初位L1=1MOVSI,OFFSETKEYBUF;指向键盘输入缓冲区DIS2:MOVAL,[SI]LEABX,LEDXLAT;换码MOVDX,PA55OUTDX,AL;输出段码MOVDX,PB55MOVAL,CLOUTDX,AL;输出位码CALLDELAYINCSIRORCL,1;下一位输出

CMPCL,02HJNZDIS2RETDISPENDPDELAYPROCNEAR;延时子程序PUSHCXMOVCX,0FFFFHLOOP$POPCXRETDELAYENDPCODEENDSENDSTART实验五_2步进电机实验

所谓步进,就是指每给步进电机一个递进脉冲,步进电机各绕组的通电顺序就改变一次,即电机转动一次。根据步进电机控制绕组的多少可以将电机分为三相、四相和五相。实验平台连接的步进电机为四相八拍电机,电压为DC12V,其励磁线圈及其励磁顺序如图及表所示。

四相:AABBBCCCDDDA

对步进电机的转动方向、速度、角度进行调节

步进电机转动方向速度角度的调节步距角

对应一个脉冲信号,电机转子转过的角位移用θ表示实验平台连接的步进电机为四相八拍电机,电压为DC12Vθ=360度/96步=3.75度步进电机正转:以步序递增依次输出表中数据

反转:以步序递减依次输出表中数据速度:改变每步的停留时间角度:步序输出的次数x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论