南昌大学单片机实验报告上交稿

上传人:无*** 文档编号:102219288 上传时间:2022-06-06 格式:DOC 页数:25 大小:230KB
收藏 版权申诉 举报 下载
南昌大学单片机实验报告上交稿_第1页
第1页 / 共25页
南昌大学单片机实验报告上交稿_第2页
第2页 / 共25页
南昌大学单片机实验报告上交稿_第3页
第3页 / 共25页
资源描述:

《南昌大学单片机实验报告上交稿》由会员分享,可在线阅读,更多相关《南昌大学单片机实验报告上交稿(25页珍藏版)》请在装配图网上搜索。

1、实 验 报 告实验课程: 单片机原理与应用实验 学生姓名: 刘路平 学 号: 5502211040 专业班级: 电力系统及其自动化111班 2013年 12 月 16 日 南昌大学实验报告学生姓名: 刘路平 学 号: 5502211040 专业班级: 电力系统111班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验一 I/O 口输入、输出实验一、实验目的掌握单片机P1口、P3口的使用方法。二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。三、实验要求根据实验内容编写一个程序,并在实验仪上调

2、试和验证。四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。八位逻辑电平显示电路原理图参见图1-2。五、实验预习要求学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。六、实验步骤1)系统各跳线器处在初始设

3、置状态。用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。七、实验程序本实验程序;/*;文件名: Port for MCU51;功能: I/O口输入、输出实验 ;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。

4、;/*实验程序一:DIR BIT P3.1 ORG 0000H LJMP START ORG 0200H START: Output1: mov A, #0fEH ;把11111110二进制赋给A变量 mov R5, #8 ;把8送到R5寄存器中loop1: CLR C ;把标志位清零 mov C,DIR ;读入开关K0的值 JC Output2 ;K0的状态为1则跳转到Output2 mov P1, A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮 rl A ;把A进行循环左移,相当于把0进行左移,由此二极管从右到左依次点亮向左的跑马灯 AcAll Delay ;调用延时

5、子程序 djnz R5, loop1 ;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output1,否则继续loop1 Sjmp Output1 Output2: mov A, #07fH ;把01111111二进制赋给A变量 mov R5, #8 ;把8送到R5寄存器中loop2: CLR C ;把标志位清零 mov C,DIR ;读入开关K0的值 JNC Output1;K0的状态为0则跳转到Output1 mov P1, A;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮 rr A;把A进行循环右移,相当于把0进行左移,由此二极管从左到右依次点亮向右的跑马灯 A

6、cAll Delay;调用延时子程序 djnz R5,loop2;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output2,否则继续loop2 Sjmp Output2Delay: ;0减1后为-1其补码为11111111 mov R6,#0 ;该延时为双重循环,总延时约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us= 0.264456s这个值与实验现象很匹配 DelayLoop1: mov R7,#0DelayLoop2: NOP ;空指令 NOP djnz R7,DelayLoop2;R7中值为0则跳转 djnz R6,DelayLoop1

7、 ;R6中值为0则跳转 ret end实验程序二:DIR BIT P3.1 ORG 0000H LJMP START ORG 0200H START: Output1: mov A, #0fEH ;把11111110二进制赋给A变量loop1: CLR C ;把标志位清零 mov C,DIR ;读入开关K0的值 JC loop2 ;K0的状态为1则跳转到loop2 mov P1, A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮 rl A ;把A进行循环左移,相当于把0进行左移,由此二极管从右到左依次点亮向左的跑马灯 AcAll Delay ;调用延时子程序 Sjmp lo

8、op1 loop2: CLR C ;把标志位清零 mov C,DIR ;读入开关K0的值 JNC loop1;K0的状态为0则跳转到loop1 mov P1, A;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮 rr A;把A进行循环右移,相当于把0进行左移,由此二极管从左到右依次点亮向右的跑马灯 AcAll Delay;调用延时子程序 Sjmp loop2Delay: ;0减1后为-1其补码为11111111 mov R6,#0 ;该延时为双重循环,总延时约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us= 0.264456s这个值与实验现

9、象很匹配 DelayLoop1: mov R7,#0DelayLoop2: NOP ;空指令 NOP djnz R7,DelayLoop2;R7中值为0则跳转 djnz R6,DelayLoop1 ;R6中值为0则跳转 ret end八、结果分析:运行程序1后,拨动开关K0,可以实现两种流水灯方式的选择,即可以实现左移和右移,这主要是由语句JC Output2 和JNC Output1语句实现的,当K0拨到下面时,其状态为0跳转到Output1所以跑马灯为从右向左一次点亮,间隔大约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us=0.264456s,当K0拨

10、到上面时,其状态为1,跳转到Output2,所以跑马灯为从左向右一次点亮,间隔大约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us=0.264456s。综合分析,本实验主要有3个模块:左移模块,右移模块和延时模块构成。运行程序2后,拨动开关K0,可以实现两种流水灯方式的选择,即可以实现左移和右移,这主要是由语句JC loop1 和JNC loop2语句实现的,和实验程序1的主要差别就是当拨动开关后,直接进行方向的改变,而不是像程序1那样返回到始端在进行方向的反转。九、实验心得从这个实验中我们了解到如何用P1口输出来点亮二极管,也学会了如何根据具体的单片机的原

11、理图进行编写程序,及线路的连接。通过这次实验我了解了单片机芯片的结构及编程方法。巩固了汇编语言编程的能力。进一步加深了对汇编语言的认识。对延时程序进一步的应用,对编程的能力有了提高通过实验还学会了流水灯的实现方法和实现延时的程序编写方法,这为下面的实验做好了充分的准备。 南昌大学实验报告学生姓名: 刘路平 学 号: 5502211040 专业班级: 电力系统111班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验二 外部中断实验一、实验目的学习外部中断技术的基本使用方法。二、实验内容INT0 端接单次脉冲发生器。按一次脉冲产生一次中断,CPU 使P1.0 状态发生一次反转,P

12、1.0接LED 灯,以查看信号反转。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明和电路原理图1) 外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入。2)中断服务的关键:a、保护进入中断时的状态。堆栈有保护断点和保护现场的功能使用PUSH 指令,在转中断服务程序之前把单片机中有关寄存单元的

13、内容保护起来。b、必须在中断服务程序中设定是否允许中断重入,即设置EX0 位。c、用POP 指令恢复中断时的现场。3)中断控制原理:中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51 系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。4)中断响应的过程:首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0 或IE1 置“1”;否则继续为“0”。所谓查询就是由CPU 测试TCON 和SCON 中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中

14、断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。本实验需要用到CPU 模块(F3 区)和八位逻辑电平显示模块(B5 区)、单次脉冲模块(E3区)。五、实验预习要求学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。六、实验步骤1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU 模块的P32;CPU 模块的P10 接八位逻辑电平显示模块的灯。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)连续按动单次脉冲产生电路的按键,发光二极管L0 每按一次状态取反,即隔一次点亮。

15、七、实验程序本实验程序;/*;文件名: EXint for MCU51;功能: 外部中断实验 ;接线: 导线连接单次脉冲模块的输出端到CPU模块的P32, ; CPU模块的P10接八位逻辑电平显示模块的L0灯。;/* LED BIT P1.0 LEDBuf BIT 20H org 0 ljmp Start org 3Interrupt0: push PSW ; 保护现场 cpl LEDBuf ; 取反LED mov c, LEDBuf mov LED, c pop PSW ; 恢复现场 reti ; 返回主程序Start: clr LEDBuf ;20H清0 clr LED ; P1.0清0

16、mov TCON, #01h ; 外部中断0下降沿触发 mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA)OK: ljmp OK end 八、结果分析:运行程序后,连续按动单次脉冲产生电路的按键,发光二极管L0 每按一次状态取反,即隔一次点亮,综合分析,本实验主要有2个模块:中断模块和主程序模块,主程序主要是用来初始化中断的,包括中断模式的选择,中断开关的打开,当脉冲变化时触发中断,硬件自动产生ACALL指令,跳转到中端口执行程序。九、实验心得从这个实验中我们了解到单次脉冲产生电路,也学会了如何通过外部的控制,达到对中断的处理,对于中断处理,主要有一下几个过程:在

17、主程序中主要是中断的控制寄存器的设置,中断开关的设置,以及对中断程序的编写经过试验的调试,我知道了整个程序的运行方式。通过这次实验我了解了单片机芯片的结构及编程方法。巩固了汇编语言编程的能力。进一步加深了对汇编语言的认识,以及软件,硬件的结合有了深入的理解。 南昌大学实验报告学生姓名: 刘路平 学 号: 5502211040 专业班级: 电力系统111班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验三 定时/计数器实验一、实验目的学习MCS-51 内部计数器的使用和编程方法。二、实验内容使用MCS-51 内部定时/计数器,定时一秒钟,CPU 运用定时中断方式,实现每一秒钟输

18、出状态发生一次反转,即发光管每隔一秒钟亮一次。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。定时器有关的寄存器有工作方式寄存器TMOD 和控制寄存器TCON。TMOD 用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12 个振荡器周期。假设实验系统的晶振是12MH

19、Z,程序工作于方式2,即8 位自动重装方式定时器, 定时器100uS中断一次, 所以定时常数的设置可按以下方法计算:机器周期=1212MHz=1uS(256-定时常数)1uS=100uS定时常数=156。然后对100uS 中断次数计数10000 次,就是1 秒钟。在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。本实验需要用到CPU 模块(F3 区)和八位逻辑电平显示模块(B5 区)。五、实验预习要求学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。六、实验步骤1)系统各跳线器处在初始设置状态,用

20、导线连接CPU 模块P10 到八位逻辑电平显示模块的L0。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。七、实验程序本实验程序;/*;文件名: Timer for MCU51;功能: 定时/计数器实验;接线: 导线连接CPU模块P10到八位逻辑电平显示模块的L0.;/* Tick equ 10000 ; 10000 x 100us = 1s T100us equ 156 ; 100us时间常数(6M) C100us equ 30h ; 100us记数单元 LEDBuf bit 20h

21、org 0 ljmp Start ;跳转到Start org 000bh ; 伪代码表明以下地址为000bhT0Int: push PSW ; 保存数据,送入堆栈 mov a, C100us+1 ; 将计数单元送入a jnz Goon ; 如果a非0则跳转 dec C100us ; 记数单元减一Goon: dec C100us+1 ; mov a, C100us orl a, C100us+1 ;只有当计数单元的高位和低位都位0才使得a为0,也就是说只有计满10000次才能跳转 jnz Exit ; 100us 记数器不为0, 返回 mov C100us, #27H ; #high(Tick)

22、 mov C100us+1, #10H ; #low(Tick) cpl LEDBuf ; 100us 记数器为0, 重置记数器 ; 取反LEDExit: pop PSW retiStart: mov TMOD, #02h ; 方式2, 定时器 mov TH0, #t100us mov TL0, #t100us mov IE, #10000010b ; EA=1, IT0 = 1 setb TR0 ; 开始定时 clr LEDBuf clr P1.0 mov C100us, #27H ;#high(Tick) mov C100us+1, #10H ;#low(Tick)Loop: mov c,

23、 LEDBuf mov P1.0, c ljmp Loop end八、结果分析:运行程序后,发光二极管L0 每隔一秒点亮一次,实验主要有2个模块:定时初始化模块和中断模块,主程序主要是用来初始化定时的,包括定时模式的选择,为方式2模式,该模式精度高能够准确定时,还包括定时器的初值设定,设定为100us,当定时标志位高电位时自动跳转到中断程序中,如果未满10000次就还得继续返回主程序无法实现CPL LEDBuf 指令。而要实现本功能,最重要的是 orl a, C100us+1 这条语句,只有当计数单元的高位和低位都位0才使得a为0,也就是说只有计满10000次才能跳转。否则跳转到exit。九、

24、实验心得通过本次实验,我对单片机的定时/计数功能有了一定的了解,熟悉了定时/计数器的设置,总的来说,单片机的定时器的设置主要是以下几个方面:一是定时器的模式设置,二是定时器的初值设置。本实验也用到了中断,利用中断的方法,实现了LED的反转,相比于查询的方法,提高了单片机的工作效率。另外我也掌握了它的控制和最基本的应用,初步获悉了定时/计数器的内部结构,再结合上一次实验对中断的了解,二者配合,巩固对中断和定时/计数的知识,为下一步的学习打下坚实的基础。 南昌大学实验报告学生姓名: 刘路平 学 号: 5502211040 专业班级: 电力系统111班 实验类型: 验证 综合 设计 创新 实验日期:

25、 实验成绩: 实验四 交通灯控制实验一、实验目的掌握十字路口交通灯控制方法。二、实验内容利用系统提供的双色LED 显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。4 位LED 数码管显示时间,LED 显示红绿灯状态。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明和电路原理图交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20 秒),东西路口的绿灯,闪烁若干次后(3 秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2 秒),东西路口的

26、红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20 秒),南北路口的绿灯闪烁若干次后(3 秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2 秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。双色LED 是由一个红色LED 管芯和一个绿色LED 管芯封装在一起,共用负极,当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。五、实验程序框图图4-2 程序流程图六、实验预习要求学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。七、实验步骤1)系统各跳线器处在初始设置状态。

27、P10 同时接G1、G3;P11 同时接R1、R3;P1.2 同时接G2、G4;P1.3 同时接R2、R4;P1.6、P1.7 分别接静态数码显示的DIN、CLK。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)观察十字路口交通灯效果。八、实验程序本实验程序;/*;文件名:交通灯程序 FOR MCU51;功能:双色LED模拟交通灯信号,并通过调用静态数码显示状态时间。;接线:P1.0同时接G1、G3,P1.1接R1、R3,P1.2接G2、G4,P1.3同时接R2、R4,; P1.6、P1.7接静态数码显示的DIN、CLK。;/* SECON

28、D1 EQU 30H ;东西秒寄存器 SECOND2 EQU 31H ;南北秒寄存器 DBUF EQU 40H ;显示缓冲1 TEMP EQU 44H ;显示缓冲2 LED_G1 BIT P1.0 ;东西绿灯 LED_R1 BIT P1.1 ;东西红灯 LED_G2 BIT P1.2 ;南北绿灯 LED_R2 BIT P1.3 ;南北红灯 Din BIT P1.6 ;串行显示数据 CLK BIT P1.7 ;串行显示时钟 ORG 0000H LJMP START ORG 0100HSTART: LCALL STATE0 ;调用状态0 LCALL DELAY ;调用延时 MOV TMOD,#01

29、H ;置T0工作方式1 MOV TH0, #3CH ;置T0定时初值50mS MOV TL0, #0B0H SETB TR0 ;启动T0 CLR EALOOP: MOV R2,#20 ;置1S计数初值 50mS*20=1S MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示初值25S MOV SECOND2,#25 ;南北秒显示初值25S LCALL DISPLAY LCALL STATE1 ;调用状态1WAIT1: JNB TF0,WAIT1 ;查询50mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H

30、 SETB TR0 ;启动T0 DJNZ R2,WAIT1 ;判1S到否?未到继续状态1 MOV R2,#20 ;置50mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT1 ;状态1维持20S;* MOV R2,#5 ;置50mS计数初值 5*4=20 MOV R3,#3 ;绿灯闪3S MOV R4,#4 ;闪烁间隔200mS MOV SECOND1,#5 ;东西秒显示初值5S MOV SECOND2,#5 ;南北秒显示初值5S LCALL DISPLAYWAIT2: LCALL STATE2

31、;调用状态2 JNB TF0,WAIT2 ;查询50mS到否 CLR TF0 MOV TH0, #3CH ;恢复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 ;置50mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT2 ;状态2维持3S;* MOV R2,#20 ;置50m

32、S计数初值 MOV R3,#2 ;黄灯2S MOV SECOND1,#2 ;东西秒显示初值2S MOV SECOND2,#2 ;南北秒显示初值2S LCALL DISPLAYWAIT3: LCALL STATE3 ;调用状态3 JNB TF0,WAIT3 ;查询30mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H DJNZ R2,WAIT3 ;判1S到否?未到继续状态3 MOV R2,#20 ;置50mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ

33、 R3,WAIT3 ;状态3维持2S;* MOV R2,#20 ;置50mS计数初值 MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示初值25S MOV SECOND2,#25 ;南北秒显示初值25S LCALL DISPLAYWAIT4: LCALL STATE4 ;调用状态4 JNB TF0,WAIT4 ;查询50mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H DJNZ R2,WAIT4 ;判1S到否?未到继续状态4 MOV R2,#20 ;置50mS计数初值 DEC SECOND1 ;东西秒显

34、示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT4 ;状态4维持20S;* MOV R2,#5 ;置50mS计数初值 5*4=20 MOV R4,#4 ;闪烁间隔200mS MOV R3,#3 ;绿灯闪3S MOV SECOND1,#5 ;东西秒显示初值5S MOV SECOND2,#5 ;南北秒显示初值5S LCALL DISPLAYWAIT5: LCALL STATE5 ;调用状态5 JNB TF0,WAIT5 ;查询50mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值100mS MOV TL0, #0B0H D

35、JNZ R4,WAIT5 ;判200mS到否?未到继续状态5 CPL LED_G2 ;南北绿灯闪 MOV R4,#4 ;闪烁200mS DJNZ R2,WAIT5 ;判1S到否?未到继续状态5 MOV R2,#5 ;置100mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT5 ;状态5维持3S;* MOV R2,#20 ;置50mS计数初值 MOV R3,#2 ;黄灯2S MOV SECOND1,#2 ;东西秒显示初值2S MOV SECOND2,#2 ;南北秒显示初值2S LCALL DISP

36、LAYWAIT6: LCALL STATE6 ;调用状态6 JNB TF0,WAIT6 ;查询100mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值100mS MOV TL0, #0B0H DJNZ R2,WAIT6 ;判1S到否?未到继续状态6 MOV R2,#20 ;置100mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT6 ;状态6维持2S LJMP LOOP ;大循环STATE0: ;状态0 MOV P1,#0 CLR LED_G1 SETB LED_R1 ;东

37、西红灯亮 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE1: ;状态1 SETB LED_G1 ;东西绿灯亮 CLR LED_R1 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE2: ;状态2 CLR LED_R1 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE3: ;状态3 SETB LED_G1 SETB LED_R1 ;东西黄灯亮 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE4: ;状态4 CLR LED_G1 SETB LED_R1 ;东西红灯亮 SETB LED_

38、G2 ;南北绿灯亮 CLR LED_R2 RETSTATE5: ;状态5 CLR LED_G1 SETB LED_R1 ;东西红灯亮 CLR LED_R2 RETSTATE6: ;状态6 CLR LED_G1 SETB LED_R1 ;东西红灯亮 SETB LED_G2 SETB LED_R2 ;南北黄灯亮 RETDISPLAY: ;数码显示 MOV A, SECOND1 ;东西秒寄存器 MOV B, #10 ;16进制数拆成两个10进制数 DIV AB MOV DBUF+1,A MOV A,B MOV DBUF, A MOV A, SECOND2 ;南北秒寄存器 MOV B, #10 ;16

39、进制数拆成两个10进制数 DIV AB MOV DBUF+3, A MOV A,B MOV DBUF+2, A MOV R0,#DBUF MOV R1,#TEMP MOV R7,#4DP10:MOV DPTR,#LEDMAP MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R0 INC R1 DJNZ R7,DP10 MOV R0,#TEMP MOV R1,#4DP12:MOV R7,#8 MOV A,R0DP13:RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,DP13 INC R0 DJNZ R1,DP12 RETLEDMAP: D

40、B 3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B DB 58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -Delay: mov r5, #5DLoop0:mov r6, #0DLoop1:mov r7, #0DLoop2: NOP NOP djnz r7, DLoop2 djnz r6, DLoop1 djnz r5, DLoop0 ret END九、结果分析:实验现象:运行程序后,开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段

41、时间后(20 秒),东西路口的绿灯,闪烁若干次后(3 秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2 秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20 秒),南北路口的绿灯闪烁若干次后(3 秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2 秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。要实现以上功能还必须知道双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。也正

42、是源于此,才能够产生黄色信号 分析:本实验共分为5个模块,交通灯初始模块,6种交通状态的调用模块,6种交通状态和1个初始状态模块,显示模块,以及延时模块,每一个状态的原理如下:首先调用交通状态模块中的各状态,以此达到各I/O端口的设置,然后进行延时,设置定时器的工作方式,初值,接着采用中断查询的方式来判断状态是否结束,最后调用显示模块,当然,在每隔状态也是需要进行循环设置和显示的。另外在说显示模块,采用动态显示的方式,利用数据线和控制线串行显示数码管,节约了导线成本,只有2个输入端。十 、实验心得通过本次实验,我对交通灯有了更进一步的了解,交通灯是有6中状态的。本实验由于功能强大,所以我也学会

43、和巩固了很多以前的知识,比如定时器的设置,查询中断,查表的方法,以及本实验大量使用的调用和循环语句,另外我对数码管的显示原理也有了进一步的理解,总之,收获很大。 南昌大学实验报告学生姓名: 刘路平 学 号: 5502211040 专业班级: 电力系统111班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验五 串转并与并转串实验一、实验目的1掌握使用74LS164 扩展输出的方法。2掌握使用74LS165 扩展输入的方法。二、实验内容使用74LS165 扩展输入数据,使用74LS164 扩展输出数据。74LS165 的并行口接八位逻辑电平输出(开关),CPU 使用P1.0、P1

44、.1 和P1.2 串行读入开关状态;74LS164 的并行口接一只数码管,CPU 使用P1.3 和P1.4 串行输出刚读入的开关状态,使之在数码管上显示出来。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明和电路原理图1)74LS165 为8 位移位寄存器,其引脚功能如下:S/L:移位/置数端,低电平有效。P0P7:并行数据输入端。QH、QH:串行数据输出端。CLK、CKLINH:时钟信号输入端。2)74LS164 为串行输入并行输出移位寄存器,其引脚功能如下:A、B:串行输入端;Q0Q7:并行输出端;MR:清零端,低电平有效;CLK:时钟脉冲输入端,上升沿有效。3)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!