收藏 分享(赏)

单片机原理与应用实验指导书(含参考程序).doc

上传人:gnk289057 文档编号:7107089 上传时间:2019-05-06 格式:DOC 页数:15 大小:86.50KB
下载 相关 举报
单片机原理与应用实验指导书(含参考程序).doc_第1页
第1页 / 共15页
单片机原理与应用实验指导书(含参考程序).doc_第2页
第2页 / 共15页
单片机原理与应用实验指导书(含参考程序).doc_第3页
第3页 / 共15页
单片机原理与应用实验指导书(含参考程序).doc_第4页
第4页 / 共15页
单片机原理与应用实验指导书(含参考程序).doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、单片机实验实验说明:实验一和二做一次 实验三和四做一次 实验五和六分别做一次实验一 P1 口实验一一、实验目的:1 学习 P1 口的使用方法。2 学习延时子程序的编写和使用。二、实验设备:EL-MUT-II 型实验箱,8051CPU 板三、实验内容:1 P1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。2 P1 口做输入口,接八个按纽开关,以实验箱上 74LS273 做输出口,编写程序读取开关状态,在发光二极管上显示出来。四、实验原理:P1 口为准双向口,P1 口的每一位都能独立地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“1” ,该位才能作为输入。8031

2、中所有口锁存器在复位时均置为“1” ,如果后来在口锁存器写过“0” ,在需要时应写入一个“1” ,使它成为一个输入。可以用第二个实验做一下实验。先按要求编好程序并调试成功后,可将 P1 口锁存器中置“0” ,此时将 P1 做输入口,会有什么结果。再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。本实验系统晶振为 6.144MHZ,则一个机器周期为 126.144us 即 10.512us。现要写一个延时 0.1s 的程序,可大致写出如下:MOV R7,#X (1)DEL1:MOV R6,#200 (2)DEL2

3、:DJNZ R6,DEL2 (3)DJNZ R7,DEL1 (4)上面 MOV、DJNZ 指令均需两个机器周期,所以每执行一条指令需要 10.256us,现求出 X 值:10.256+X(10.256+20010.256+10.256)=0.110指令(1) 指令(2) 指令(3) 指令(4)所需时间 所需时间 所需时间 所需时间X=(0.110-10.256)/(10.256+20010.256+10.256)=127D=7FH经计算得 X=127。代入上式可知实际延时时间约为 0.100215s,已经很精确了。五、实验步骤:执行程序 1 时:P1.0P1.7 接发光二极管 L1L8。执行程

4、序 2 时:P1.0P1.7 接按纽开关 K1K8;74LS273 的 SO0SO7 接发光二极管 L1L8;74LS273 的片选端 CS273 接 CS0(由程序所选择的入口地址而定,与CSOCS7 相应的片选地址请查看第一部分系统资源,以后不赘述) 。六、参考程序:循环点亮发光二极管NAME T1_1 ;P1 口输实验ORG 0000HLJMP STARTORG 4100HSTART: MOV A,#01HLOOP: RL A ; 左移一位,点亮下一个发光二极管MOV P1,ALCALL DELAY ;延时 0.1 秒JMP LOOPDELAY: MOV R1,#127 ; 延时 0.1

5、 秒DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2DJNZ R1,DEL1RETEND通过发光二极管将 P1 口的状态显示NAME T1_2 ;P1 口输入实验OUT_PORT EQU 0CFA0HORG 0000HLJMP STARTORG 4100HSTART: MOV P1,#0FFH ;复位 P1 口为输入状态MOV A,P1 ;读 P1 口的状态值入累加器 AMOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针 DPTRMOVX DPTR,A ;将累加器 A 的值赋给 DPTR 指向的地址JMP START ;继续循环监测端口 P1 的状态END实

6、验二 P1 口实验二一、实验目的:1 学习 P1 口既做输入又做为输出的使用方法。2 学习数据输入、输出程序的设计方法。二、实验设备:EL-MUT-III 型实验箱,8051CPU 板三、实验原理:P1 口的使用方法这里不讲了。有兴趣者不妨将实验例程中的“SETB P1.0, SETB P1.1”中的“SETB”改为“CLR”看看会有什么结果。另外,例程中给出了一种 N 路转移的常用设计方法,该方法利用了 JMP A+DPTR 的计算功能,实现转移。该方法的优点是设计简单,转移表短,但转移表大小加上各个程序长度必须小于 256 字节。四、实验步骤:K1 接 P1.0、K2 接 P1.1;L5

7、接 P1.2、L6 接 P1.3;L7 接 P1.6、8 接 P1.7。运行实验程序,K1 做为左转弯开关,K2 做为右转弯开关。L5、L6 做为右转弯灯,L7、L8 做为左转弯灯。结果显示:1:K1 接高电平 K2 接低电平时,右转弯灯(L7、L8)灭,左转弯灯(L5、L6)以一定频率闪烁;2:K2 接高电平 K1 接低电平时,左转弯灯(L5、L6)灭,右转弯灯(L7、L8)以一定频率闪烁;3:K1、K2 同时接低电平时,发光二极管全灭;4:K1、K2 同时接高电平时,发光二极管全亮。五、参考程序:T2.ASMNAME T2 ;P1 口输入输出实验ORG 0000HLJMP STARTORG

8、 4100HSTART: SETB P1.0SETB P1.1 ;用于输入时先置位口内锁存器MOV A,P1ANL A,#03H ;从 P1 口读入开关状态,取低两位MOV DPTR,#TAB ;转移表首地址送 DPTRMOVC A,A+DPTRJMP A+DPTRTAB: DB PRG0-TABDB PRG1-TABDB PRG2-TABDB PRG3-TABPRG0: MOV P1,#00H ;向 P1 口输出#0FFH,发光二极管全灭;此时 K1=0,K2=0JMP STARTPRG1: MOV P1,#0CH ;只点亮 L5、L6,表示左转弯ACALL DELAY ;此时 K1=1,K

9、2=0MOV P1,#00H ;再熄灭 0.5 秒ACALL DELAY ;延时 0.5 秒JMP STARTPRG2: MOV P1,#0C0H ;只点亮 L7、L8,表示右转弯ACALL DELAY ;此时 K1=0,K2=1MOV P1,#00H ;再熄灭 0.5 秒ACALL DELAYJMP STARTPRG3: MOV P1,#0FFH ;发光二极管全亮,此时 K1=1,K2=1JMP STARTDELAY: MOV R1,#5 ;延时 0.5 秒DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3DJNZ R2,DEL2DJNZ

10、 R1,DEL1RETEND实验三 简单 I/O 口扩展实验一交通灯控制实验一、实验目的:1 学习在单片机系统中扩展简单 I/O 接口的方法。2 学习数据输出程序的设计方法。3 学习模拟交通灯控制的实现方法。二、实验设备:EL-MUT-III 型实验箱,8051CPU 板三、实验内容:扩展实验箱上的 74LS273 做为输出口,控制八个发光二极管燃灭,模拟交通灯管理。四、实验原理:要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。不妨将 L1(红)、L3(绿) 、L5(黄)做为东西方向的指示灯,将 L2(红) 、L4(绿) 、L6(

11、黄)做为南北方向的指示灯。而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。各发光二极管的阳极通过保护电阻接到+5V 的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。五、实验步骤:74LS273 的输出 O0O7 接发光二极管 L1L8,74LS273 的片选 CS273 接片选信号CSO,此时 74LS273

12、 的片选地址为 CFA0HCFA7H 之间任选。运行实验程序,观察 LED 显示情况是否与实验内容相符。六、参考程序:T3.ASMNAME T3 ;I/O 口扩展实验一PORT EQU 0CFA0H ;片选地址 CS0CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV A,#03H ;两个红灯亮,黄灯、绿灯灭ACALL DISP ;调用 273 显示单元(以下雷同)ACALL DE3S ;延时 3 秒LLL: MOV A,#06H ;东西路口绿灯亮;南北路口红灯亮ACALL DISPACALL DE10S ;延时 10 秒MOV A,#02H ;东西路

13、口绿灯灭;南北路口红灯亮ACALL DISPMOV R2,#05H ;R2 中的值为黄灯闪烁次数TTT: MOV A,#12H ;东西路口黄灯亮;南北路口红灯亮ACALL DISPACALL DE02S ;延时 0.2 秒MOV A,#02H ;东西路口黄灯灭;南北路口红灯亮ACALL DISPACALL DE02S ;延时 0.2 秒DJNZ R2,TTT ;返回 TTT,使东西路口黄灯闪烁五次MOV A,#03H ;两个红灯亮,黄灯、绿灯灭 ACALL DISPACALL DE02S ;延时 0.2 秒 MOV A,#09H ;东西路口红灯亮;南北路口绿灯亮ACALL DISPACALL

14、DE10S ;延时 10 秒 MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭ACALL DISPMOV R2,#05H ;黄灯闪烁五次GGG: MOV A,#21H ;东西路口红灯亮;南北路口黄灯亮ACALL DISPACALL DE02S ;延时 0.2 秒MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭ACALL DISPACALL DE02S ;延时 0.2 秒 DJNZ R2,GGG ;返回 GGG,使南北路口;黄灯闪烁五次MOV A,#03H ;两个红灯亮,黄灯、绿灯灭ACALL DISPACALL DE02S ;延时 0.2 秒 JMP LLL ;转 LLL 循环DE

15、10S: MOV R5,#100 ;延时 10 秒JMP DE1DE3S: MOV R5,#30 ;延时 3 秒JMP DE1DE02S: MOV R5,#02 ;延时 0.2 秒DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3DJNZ R6,DE2DJNZ R5,DE1RETDISP: MOV DPTR,#PORT ;273 显示单元MOVX DPTR,ARETEND实验四 简单 I/O 口扩展实验二一、实验目的:1 学习在单片机系统中扩展简单 I/O 口的方法。2 学习数据输入,输出程序的编制方法。二、实验设备:EL-MUT-III 型实验箱

16、,8051CPU 板三、实验原理:MCS-51 外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。若需要扩展的芯片较多,则 MCS-51 总线口的负载过重,74LS244 是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。程序中加了一段延时程序,以减少总线口读写的频繁程度。延时时间约为 0.01 秒,不会影响显示的稳定。四、实验内容:利用 74LS244 做为输入口,读取开关状态,并将此状态通过发光二极管显示出来。五、实验步骤:1 74LS244 的 SI0SI7 接开关的 K1K8,片选信号 CS244 接 CS1。2 74LS273 的 SO0SO7 接发光二极管的

17、 L1L8,片选信号 CS273 接 CS2。3 编程、全速执行。4 拨动开关 K1K8,观察发光二极管状态的变化。六、参考程序:T4.ASMNAME T4 ;I/O 口扩展实验CSEG AT 0000HLJMP STARTCSEG AT 4100HINPORT EQU 0CFA8H ;74LS244 端口地址OUTPORT EQU 0CFB0H ;74LS273 端口地址START: MOV DPTR,#INPORTLOOP: MOVX A,DPTR ;读开关状态MOV DPTR,#OUTPORTMOVX DPTR,A ;显示开关状态MOV R7,#10H ;延时DEL0: MOV R6,#

18、0FFHDEL1: DJNZ R6,DEL1DJNZ R7,DEL0JMP STARTEND实验五 中断实验有急救车的交通灯控制实验一、实验目的:1 学习外部中断技术的基本使用方法。2 学习中断处理程序的编程方法。二、实验设备:EL-MUT-III 型实验箱,8051CPU 板三、实验内容:在实验三的内容的基础上增加允许急救车优先通过的要求。当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为 10 秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲为中断申请,表示有急救车通过。四、实验原理:交通灯的燃灭规律见实验三。本实验中断处理程序的应用,最主要的地方是

19、如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器 ACC、标志寄存器 PSW 外,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验给出的程序中,主程序延时用的是 R5、R6、R7,中断延时用的是 R3、R4和新的 R5。第二,主程序中每执行一步经 74LS273 的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行往 74LS273 端口输出数据的操作,中断返回时如果没有恢复中断前 74LS273 端口锁存器的数据,则显示往往出错,回不到中断前的状态。还要注意一点,主程序中往端口输出数

20、据操作要先保存再输出,例如有如下操作:MOV A,#0F0H (0)MOVX R1,A (1)MOV SAVE,A (2)程序如果正好执行到(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句 MOV A,SAVE 指令,由于主程序中没有执行(2) ,故 SAVE 中的内容实际上是前一次放入的而不是(0)语句中给出的 0F0H,显示出错,将(1) 、 (2)两句顺序颠倒一下则没有问题。发生中断时两方向的红灯一起亮 10 秒,然后返回中断前的状态。五、实验步骤:74LS273 的输出 SO0SO7 接发光二极管 L1L8,74LS273 的片选 CS273接片选信号 CS2,此

21、时 74LS273 的片选地址为 CFB0HCFB7H 之间任选。单脉冲输出端 P-接 CPU板上的 INT0。六、参考程序:T5.ASMNAME T5 ;中断控制实验OUTPORT EQU 0CFB0H ;端口地址SAVE EQU 55H ;save 保存从端口 cfa0 输出的数据CSEG AT 0000HLJMP STARTCSEG AT 4003HLJMP INTCSEG AT 4100HSTART: SETB IT0SETB EX0SETB EAMOV A,#03H ;置首显示码MOV SAVE,A ;保存ACALL DISP ;显示输出ACALL DE3S ;延时 3 秒LLL:

22、MOV A,#06H ;东西路口绿灯亮,南北路口红灯亮MOV SAVE,AACALL DISP ACALL DE10S ;延时 10 秒MOV A,#02H ;东西路口绿灯灭MOV SAVE,AACALL DISP MOV R2,#05H ;东西路口黄灯闪烁 5 次TTT: MOV A,#12HMOV SAVE,AACALL DISP ACALL DE02SMOV A,#02HMOV SAVE,AACALL DISP ACALL DE02SDJNZ R2,TTTMOV A,#03H ;红灯全亮MOV SAVE,AACALL DISP ACALL DE02S ;延时 0.2 秒MOV A,#09

23、H ;东西路口红灯亮,南北路口绿灯亮MOV SAVE,AACALL DISP ACALL DE10S ;延时 10 秒MOV A,#01H ;南北路口绿灯灭MOV SAVE,AACALL DISP MOV R2,#05H ;南北路口黄灯闪烁 5 次GGG: MOV A,#21HMOV SAVE,AACALL DISP ACALL DE02SMOV A,#01HMOV SAVE,AACALL DISP ACALL DE02SDJNZ R2,GGGMOV A,#03H ;红灯全亮MOV SAVE,AACALL DISP ACALL DE02S ;延时 0.2 秒JMP LLL ;转 LLL 循环D

24、E10S: MOV R5,#100 ;延时 10 秒JMP DE1DE3S: MOV R5,#30 ;延时 3 秒JMP DE1DE02S: MOV R5,#02 ;延时 0.2 秒DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3DJNZ R6,DE2DJNZ R5,DE1RETINT: CLR EAPUSH ACC ;中断处理PUSH PSWMOV A,R5PUSH ACCMOV A,#03H ;红灯全亮,绿、黄灯全灭ACALL DISP DEL10S: MOV R3,#100 ;延时 10 秒 DEL1: MOV R2,#200DEL2: M

25、OV R5,#126DEL3: DJNZ R5,DEL3DJNZ R2,DEL2DJNZ R3,DEL1MOV A,SAVE ;取 SAVE 中保存数据输出到 cfa0 端口ACALL DISP POP ACC ;出栈MOV R5,APOP PSWPOP ACCSETB EA ;允许外部中断RETIDISP: MOV DPTR,#OUTPORTMOVX DPTR,ARETEND实验六 定时器实验循环彩灯实验一、实验目的:1 学习推土机内部计数器的使用和编程方法。2 进一步掌握中断处理程序的编写方法。二、实验设备:EL-MUT-III 型实验箱,8051CPU 板三、实验原理:1 定时常数的确定

26、定时器/计数器的输入脉冲周期与机器周期一样, 为振荡频率的 1/12。本实验中时钟频率为 6.0 MHZ,现要采用中断方法来实现 0.5 秒延时,要在定时器 1 中设置一个时间常数,使其每隔 0.1 秒产生一次中断,CPU 响应中断后将 R0 中计数值减一,令R0=05H,即可实现 0.5 秒延时。时间常数可按下述方法确定:机器周期=12晶振频率=12/(610)=2us设计数初值为 X,则(2e+16-X)2Error!=0.1,可求得 X=15535化为十六进制则 X=3CAFH,故初始值为 TH1=3CH,TL1=AFH2 初始化程序包括定时器初始化和中断系统初始化,主要是对 IP、IE

27、、TCON、TMOD 的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP 便不必设置。3 设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。四、实验题目由 8031 内部定时器 1 按方式 1 工作,即作为 16 位定时器使用,每 0.1 秒钟 T1 溢出中断一次。P1 口的 P1.0P1.7 分别接发光二极管的 L1L8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为:L1、L2、L8 依次点亮;L1、L2、L8 依次熄灭;L1、L2、L

28、8 全亮、全灭。各时序间隔为 0.5 秒。让发光二极管按以上规律循环显示下去。五、实验步骤:P1.0P1.7 分别接发光二极管 L1L8 即可。六、参考程序:(友情提示:再按中断的时候会发生爆炸!)NAME T6 ;定时器实验OUTPORT EQU 0CFB0HCSEG AT 0000HLJMP STARTCSEG AT 401BH ;定时器/计数器 1 中断程序入口地址LJMP INTCSEG AT 4100HSTART: MOV A,#01H ;首显示码MOV R1,#03H ;03 是偏移量,即从基址寄存器到表首的距离MOV R0,#5H ;05 是计数值MOV TMOD,#10H ;计

29、数器置为方式 1MOV TL1,#0AFH ;装入时间常数MOV TH1,#03CHORL IE,#88H ;CPU 中断开放标志位和定时器;1 溢出中断允许位均置位SETB TR1 ;开始计数LOOP1: CJNE R0,#00,DISPMOV R0,#5H ;R0 计数计完一个周期,重置初值INC R1 ;表地址偏移量加 1CJNE R1,#18H,LOOP2MOV R1,#03H ;如到表尾,则重置偏移量初值LOOP2: MOV A,R1 ;从表中取显示码入累加器MOVC A,A+PCJMP DISPDB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCHDB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00HDISP: MOV P1,A ;将取得的显示码从 P1 口输出显示JMP LOOP1INT: CLR TR1 ;停止计数DEC R0 ;计数值减一MOV TL1,#0AFH ;重置时间常数初值MOV TH1,#03CHSETB TR1 ;开始计数RETI ;中断返回END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报