硬件实验内容Word文档格式.docx
《硬件实验内容Word文档格式.docx》由会员分享,可在线阅读,更多相关《硬件实验内容Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
djnzr7,DelayLoop
ret
end
28位拨动开关的接口电路设计如图1-2所示,假设采用P1口控制LED显示,P2口接收拨码开关的输入值,用8P数据线将D2区80C51/C8051F020MCU模块的JD1(P1口)、JD1(P2口)分别与A5区八位逻辑电平显示模块JD1A5、C6区8位拨动开关模块JD1C6相连。
在Keil环境运行该程序,使用单步、断点、连续运行调试程序,查看结果。
图1-2拨码开关接口电路
ORG0000H
LL:
MOVP2,#0FFH
NOP
MOVA,P2
NOP
MOVP1,A
LJMPLL
END
3如图1-3所示,假设采用P1.0口控制外部LED,拨动开关控制外部中断,用二号导线将D2区80C51/C8051F020MCU模块的P1.0、P3.2口分别与A5区八位逻辑电平显示模块的L0、C8区单次脉冲输出相连。
并在Keil环境运行程序,观察实验现象。
图1-3外部中断及LED显示电路
流程图为:
源程序:
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTERRUPT
ORG0030H
MAIN:
CLRP1.0
MOVTCON,#01H
MOVIE,#81H
SJMP$
INTERRUPT:
PUSHPSW;
保护现场
CPLP1.0
POPPSW;
恢复现场
RETI
END
4在上述步骤中,如果改变中断的触发方式为电平触发方式,试改动程序,并在Keil环境运行程序,观察实验现象,说明实验结果。
5.设计型实验内容
1画出流程并设计程序实现8位逻辑电平显示模块的奇偶位的亮灭闪烁显示,闪烁间隔为1S。
2画出流程并设计程序实现8位逻辑电平显示模块的LED轮流点亮,间隔为1S。
3设计硬件连接图,画出流程并设计程序实现当拨码开关K0往上拨时,实现设计型实验内容步骤①,否则LED全灭;
当开关K1往上拨时,实现设计型实验内容步骤②,否则LED全灭;
当K0、K1同时往上拨的时候,LED全亮。
4累计INT0按键的中断次数,保存到内部RAM的30H单元。
6.扩展实验及思考
1P0口做为基本的输入输出口与P1、P2、P3口有何区别?
硬件上要如何设计保证它做为基本输入输出口与P1、P2、P3口的结果一致?
设计电路及程序验证。
2利用P1口及LED显示器件,实现十字路口交通灯控制实验的模拟。
3采用外部中断的电平触发方式,编写并运行程序,观察运行结果。
记录一次按键动作,进入中断的次数。
实验二定时器计数器实验
1掌握8051的定时器、中断系统编程方法;
2了解定时器的应用、实时程序的设计和调试技巧。
1理解定时器的四种工作方式的异同点;
2理解TMOD寄存器中GATE、C/T控制位的作用;
3理解定时器中断服务程序的响应过程;
4理解定时器实现精确定时的方法;
5认真预习本节实验内容,设计出器件之间的实验连接线,自行编写程序,填写实验报告。
2号导线、8P数据线若干条;
1系统的时钟为12MHz,现欲实现10ms的精确定时,完成空白处程序填写,并在Keil环境运行程序,观察实验现象。
MOVTMOD,#
MOVTL0,#
MOVTH0,#
SETBTR0
JNBTF0,$
CLRTF0
SJMP$
2如图2-1所示,假设采用P1.0口控制外部LED,用拨动开关控制外部中断,用二号导线将D2区80C51/C8051F020MCU模块的P1.0、P3.2口分别与A5区八位逻辑电平显示模块的L0、C6区八位逻辑电平输出K0相连。
在Keil环境运行以下程序,分别拨动K0于高低电平位置,观察实验现象,并说明所发生实验现象的原因。
图2-1外部中断及LED显示电路
LJMPMAIN
ORG000BH
LJMPTIMER0
ORG0030H
CLRP1.0
MOVTMOD,#0AH
MOVTL0,#50H
MOVTH0,#50H
TIMER0:
CPLP1.0
RETI
3用二号导线将80C51/C8051F020MCU模块的P1.0与八位逻辑电平显示模块的任意一只发光二极管相连,全速运行下列程序,发光二极管隔一秒点亮一次,点亮时间为一秒。
主程序框图定时中断子程序图
Tickequ10000;
10000x100us=1s
T100usequ20;
100us时间常数(6M)
C100usequ5h;
100us记数单元
LEDBufBIT00H
LEDBITP1.0
org0000H
ljmpStart
org000BH
LJMPT0Int
ORG0100H
T0Int:
pushPSW
mova,C100us+1
jnzGoon
decC100us
Goon:
decC100us+1
mova,C100us
orla,C100us+1
jnzExit;
100us记数器不为0,返回
movC100us,#HIGH(TICK);
#high(Tick)
movC100us+1,#LOW(TICK);
#low(Tick)
cplLEDBuf;
100us记数器为0,重置记数器,取反LED
Exit:
popPSW
reti
Start:
movTMOD,#02h;
方式2,定时器
movTH0,#t100us
movTL0,#t100us
movIE,#10000010b;
EA=1,IT0=1
setbTR0;
开始定时
clrLEDBuf
clrP1.0
movC100us,#high(Tick)
movC100us+1,#low(Tick)
movc,LEDBuf
movP1.0,c
sjmpLoop
end
1编程使第1~4和5~8发光二极管循环点亮的时间分别为0.25s、0.5s、0.75s、1s。
2画出流程并设计程序实现采用定时器设计一分钟倒计时器。
3采用TIMER0的计数器工作方式,设计程序实现外部按键次数的计数。
6.实验扩展及思考
1画出流程并设计程序实现24小时的实时时钟显示。
2画出流程并设计程序实现对100KHz频率TTL方波信号进行十分频,占空比为4:
1的设计,并用示波器查看结果。
3基于测频原理,画出流程并设计程序实现测量外部脉冲信号的频率,并实时显示测量频率值。
实验三按键与显示实验
1熟练运用keil环境对硬件接口进行调试。
2掌握IO扩展键盘的软硬件设计方法;
3掌握数字转换成显示段码的软件译码方法;
4掌握静态显示的原理和相关程序的编写。
5掌握动态显示的原理和相关程序的编写;
1理解51单片机IO实现独立式键盘扩展的工作原理。
2理解8段数码管静态显示的电路工作原理,采用静态显示有何优缺点;
3理解8段数码管动态显示的电路工作原理,采用动态显示有何优缺点;
4理解8段数码管静态显示的IO控制方式及同步串行口控制方式如何实现软件设计;
2号导线、8P数据线若干条。
1查询式键盘和静态显示实验
8个独立式键盘的电路如图2-1所示,串口扩展的6个静态数码管电路如图2-2所示。
设将P0口连接到键盘接口,则如果有键按下,相应的口线输出为低,否则输出为高。
单片机通过读取接口的状态,判断按下什么键。
有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
8个按键的键值从右至左为0~7。
实验例程是查询按键操作,并将按下的键值在6个静态数码管上显示出来。
6个静态数码管与6片74LS164(串变并移位寄存器)连接,与单片机通过IO口连接,实现串行静态显示的控制。
电路图:
图2-18个独立式按键电路
图2-26位静态数码管显示接口电路
DBUFEQU30H
DATEQUP3.0
CLKEQUP3.1
L0:
MOVP1,#0FFH
L1:
MOVA,P1
CJNEA,#0FFH,KEYPUT
SJMPL1
KEYPUT:
CJNEA,#0FEH,NEXT1
SJMPK0
NEXT1:
CJNEA,#0FDH,NEXT2
SJMPK1
……
K0:
MOVB,#00H
LCALLDISP
LJMPL0
K1:
MOVB,#01H
DISP:
MOVDBUF,B
MOVDBUF+1,B
MOVDBUF+2,B
MOVDBUF+3,B
MOVDBUF+4,B
MOVDBUF+5,B
MOVR0,#DBUF
MOVDPTR,#TAB
MOVR2,#06H
DP0:
MOVA,@R0
MOVCA,@A+DPTR
MOVR3,#08H
DP1:
RLCA
MOVDAT,C
CLRCLK
SETBCLK
DJNZR3,DP1
INCR0
DJNZR2,DP0
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH;
0,1,2,3,4,5
DB7DH,07H,7FH,6FH,77H,7CH;
6,7,8,9,A,B
DB58H,5EH,79H,71H,00H,40H;
C,D,E,F,,-
2动态显示实验
6位动态数码管显示的接口电路设计如图2-3所示,假设P0口输出显示的段码,P2口输出位码,用8P数据线将80C51/C8051F020MCU模块的JD0(P0口)、JD2(P2口)分别与A7区的JD1A7、JD2A7相连;
A7区的电源短路帽JD5A7打到右端。
在Keil环境连续运行该程序,观察实验结果。
图2-36位动态数码管显示接口电路
流程图如下:
在动态数码管上显示168168的源程序:
TEMPEQU40H
ORG0000H
LJMPdisp
disp:
MOV30h,#8
MOV31h,#6
MOV32h,#1
MOV33h,#8
MOV34h,#6
MOV35h,#1
MOVR0,#DBUF
MOVR1,#TEMP
MOVR2,#6
MOVDPTR,#SEGTAB
DP00:
MOVCA,@A+DPTR
MOV@R1,A
INCR1
INCR0
DJNZR2,DP00
DISP0:
MOVR0,#TEMP
MOVR1,#6
MOVR2,#1
DP01:
MOVP0,A
MOVA,R2
MOVP2,A
ACALLDELAY
RLA
MOVR2,A
DJNZR1,DP01
SJMPDISP0
SEGTAB:
DB3FH,06H,5BH;
0,1,2
DB4FH,66H,6DH;
3,4,5
DB7DH,07H,7FH,;
6,7,8,
DB6FH,77H,7CH;
9,A,B
DB58H,5EH,7BH,;
C,D,E
DB71H,00H,40H;
F,,-
DELAY:
MOVR4,#03H
AA1:
MOVR5,#0FFH
AA:
NOP
DJNZR5,AA
DJNZR4,AA1
RET
1在最后一个数码管上依次显示a、b、….f各段,每段显示时间为100ms,用T0定时器实现;
2分别指定IO控制动态扫描显示模块、静态显示模块电路,画出流程并设计程序实现数码管显示自己的学号后六位号码;
3用按键输入自己的学号,并在静态或动态数码管上显示出来。
1循环显示6个数码管的边缘各段,形成一个运动着的大边框。
2按键连击的消除和利用。
利用连击现象,当按键时间长于2秒时,每0.5秒在个位上加1,连续累加,直到按键释放。
3分别基于动态扫描显示模块、静态显示模块电路,画出流程并设计程序实现数码管从右到左滚动显示自己的学号的所有位数;
4利用单片机的定时器资源,实现定时对6位动态显示管输出的刷新,画出流程并设计程序实现设计型实验内容的步骤①、②。
实验四并行AD、DA实验
1掌握采用并行接口实现外部器件的扩展方法;
2掌握ADC0809模/数转换芯片与单片机的接口设计及ADC0809的典型应用;
3掌握DAC0832模/数转换芯片与单片机的接口设计及DAC0832的典型应用。
1理解内存与IO统一编址的外设端口地址的映射及控制;
2理解用查询方式、中断方式完成模/数转换程序的编写方法;
3理解DAC0832直通方式,单缓冲器方式、双缓冲器方式的编程方法。
2号导线、8P数据线若干条;
万用表1个;
1图4-1为ADC0809的扩展电路图,用8P数据线将D2区80C51/C8051F020MCU模块的JD0(P0口)、JD8分别与C5区并行A/D转换模块的JD1C5、JD2C5相连;
用二号导线将D2区80C51/C8051F020MCU模块的WR、RD、P2.0、CLK、P3.3分别与C5区并行A/D转换模块的WR、RD、CS、ALE、EOC相连;
并行A/D转换模块的+Vref接+5V,AIN0接D6区可调电源模块的0—5V端。
说明AD转换的过程,并在Keil环境设置断点运行以下程序,可调电源分别调至两个极端,观察寄存器及内存单元的变化。
图4-1ADC0809的扩展电路图
ORG0000H
MAIN:
CLRA
SETBP3.3;
设定与EOC接口IO处于接收状态
MOVDPTR,#0FEF8H;
选择A/D端口地址
NOP
MOVX@DPTR,A;
启动AD转换
WAIT:
JBP3.3,WAIT
MOVXA,@DPTR;
读入结果
LJMPMAIN
2图4-2为DAC0832的扩展电路图,用8P数据线将D2区80C51/C8051F020MCU模块的JD0(P0口)与C4区并行DA转换模块的JD1C4相连,用二号导线将D2区80C51/C8051F020MCU模块的P2.0、WR分别与C5区并行D/A转换模块的CS、WR模块,用万用表测量“-Vref”端的电压,手动调节电位器RW1C4,把-Vref电压调到-5V,万用表监测并行D/A转换的OUT与GND输出引脚。
填写下列程序中的空白处,说明DA转换的过程,并在Keil环境运行设置断点运行该程序,调节RW1C4,观察寄存器的变化与万用表输出值的变化。
图4-2DAC0832的扩展电路图
ORG0100H
START:
MOVDPTR,#0FEFFH;
置DAC0832的地址
LP:
MOVA,#0FFH;
设定高电平
MOVX@DPTR,A;
启动D/A转换,输出高电平
LCALLDELAY;
延时显示高电平
MOVA,#00H;
设定低电平
MOVX@DPTR,A;
启动D/A转换,输出低电平
延时显示低电平
SJMPLP;
连续输出方波
MOVR3,#18;
延时子程序
D1:
NOP
DJNZR3,D1
END
1采用中断法设计ADC0809数据采集程序,并将采集到的十六进制结果显示在LED显示模块上。
2用中断方式编写A/D转换程序,每秒以100ms的间隔采集8次,求8次结果的平均值,保存到内部RAM40H开始的单元,共采集30秒钟。
3要求同②,计算出每秒的平均值并显示在静态数码管上。
1采用ADC0809的8个通道采集8个模拟量信号,并将实际电压值分通道、分时地显示在LED上。
2根据基础型实验的步骤①、②,由DAC0832输出模拟量,ADC0809采集数据。
分配端口实现的硬件连接,画出流程并设计程序实现该过程,比较输出的数据跟采集到的数据是否一致,如不一致分析一下产生误差的原因。
3采用DAC0832设计一简易的信号发生器,设计流程并编写程序实现50Hz的方波、锯齿波。