2011级单片机原理与接口技术实验指导书 下载本文

实验一 P1口输入、输出实验 一、实验目的

1、学习P1口的使用方法

2、学习延时子程序的编写和使用 二、实验说明

P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。 三、实验内容及步骤

用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。 1、使用单片机最小应用系统1模块。关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。

2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源。

3、启动计算机,打开伟福仿真软件,进入仿真环境。首先进行仿真器的设置,选择仿真器型号、仿真头型号、CPU类型。选择通信端口,点击测试串行口,通信成功既可退出设置,进行仿真。

4、根据要求编写源程序,进行编译。编译无误后,点击全速执行按钮运行程序,观察发光二极管显示情况。发光二极管单只从右到左轮流循环点亮。 四、流程图及源程序 1.流程图

2.源程序: ORG 00H

LOOP: MOV A, #0FEH MOV R2,#8 OUTPUT: MOV P1,A RL A ACALL DELAY

DJNZ R2,OUTPUT LJMP LOOP DELAY: MOV R6,#0 MOV R7,#0

DELAYLOOP: DJNZ R6,DELAYLOOP ;延时程序 DJNZ R7,DELAYLOOP RET END 五、思考题

(1)对于本实验延时子程序 Delay: MOV R6,0 MOV R7, 0

DelayLoop:DJNZ R6,DelayLoop DJNZ R7,DelayLoop

RET

本模块使用12MHz晶振,粗略计算此程序的执行时间为多少? 六、电路图

实验二十字路口交通灯实验 一、实验目的

1、掌握51系列单片机的常用指令; 2、掌握定时器的使用方法;

3、掌握十字路口交通灯控制方法。 二、实验内容及步骤

1、用CPU的P1口输出控制信号,控制六个LED灯(红,绿,黄),模拟交通灯管理。按要求连接电路。

2、根据要求编写源程序,编译无误后,全速运行程序。 三、实验电路连接

P1.0 ●-----------------------● LED0 P1.1 ●-----------------------● LED1 P1.2 ●-----------------------● LED2 P1.3 ●-----------------------● LED3 P1.4 ●-----------------------● LED4 P1.5 ●-----------------------● LED5 四、实验说明

l. 因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始为状态0。 状态0:东西红灯,南北红灯;然后转

状态1:南北绿灯通车,东西红灯;过一段时间转

状态2:南北绿灯闪几次转黄灯亮,延时几秒,东西仍然红灯;再转 状态3:东西绿灯通车,南北红灯;过一段时间转

状态4:东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯;最后循环至状态1。 2. 各用一组红、黄、绿色LED分别表示南北方向和东西方向红绿灯。 五、实验仪器和设备

THKSCM-2单片机开发综合实验装置、PC机、WAVE软件、E6000/S51仿真器+POD8X5X仿真头等。

六、流程图及源程序

LED_G1 BIT P1.0 ;东西绿灯 LED_Y1 BIT P1.1 ;东西黄灯 LED_R1 BIT P1.2 ;东西红灯 LED_G2 BIT P1.3 ;南北绿灯 LED_Y2 BIT P1.4 ;南北黄灯 LED_R2 BIT P1.5 ;南北红灯 ORG 00H

START: MOV TMOD,#01H ;置T0工作方式1 MOV TH0, #3CH ;置T0定时初值50mS MOV TL0, #0B0H CLR TF0

SETB TR0 ;启动T0

LOOP0: MOV R2,#20 ;置1S计数初值 50mS*20=1S MOV R3,#10 ;全亮10S LCALL STATE0 ;调用状态0

WAIT0: JNB TF0,WAIT0 ;查询50mS到否 CLR TF0

MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H

DJNZ R2,WAIT0 ;判1S到否?未到继续状态0 MOV R2,#20

DJNZ R3,WAIT0 ;状态0维持10S

LOOP1: MOV R2,#20 MOV R3,#20 LCALL STATE1

WAIT1: JNB TF0,WAIT1 ;查询50mS到否 CLR TF0

MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H

DJNZ R2,WAIT1 ;判1S到否?未到继续状态1 MOV R2,#20

DJNZ R3,WAIT1 ;状态1维持20S MOV R2,#5

MOV R4,#4 ;闪烁200mS MOV R3,#3 ;绿灯闪3S

LCALL STATE2 ;调用状态2

WAIT2:JNB TF0,WAIT2 ;查询50mS到否 CLR TF0

MOV TH0, #03CH ;恢复T0定时初值50mS MOV TL0, #0B0H

DJNZ R4,WAIT2 ;判200mS到否?未到继续状态2 CPL LED_G1 ;东西绿灯闪 MOV R4,#4 ;闪烁200mS

DJNZ R2,WAIT2 ;判1S到否?未到继续状态2 MOV R2,#5

DJNZ R3,WAIT2 ;状态2维持3S MOV R2,#20 ;

MOV R3,#2 ;黄灯亮2S LCALL STATE3 ;调用状态3

WAIT3:JNB TF0,WAIT3 ;查询50mS到否 CLR TF0

MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H