项目二:8位流水灯的单片机控制

上传人:艾力 文档编号:30486713 上传时间:2018-01-29 格式:PPT 页数:25 大小:302KB
返回 下载 相关 举报
项目二:8位流水灯的单片机控制_第1页
第1页 / 共25页
项目二:8位流水灯的单片机控制_第2页
第2页 / 共25页
项目二:8位流水灯的单片机控制_第3页
第3页 / 共25页
项目二:8位流水灯的单片机控制_第4页
第4页 / 共25页
项目二:8位流水灯的单片机控制_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《项目二:8位流水灯的单片机控制》由会员分享,可在线阅读,更多相关《项目二:8位流水灯的单片机控制(25页珍藏版)》请在金锄头文库上搜索。

1、项目二:8位流水灯的单片机控制,项目目标项目任务项目分析项目预备知识项目实施知识点链接,项目目标 通过单片机控制8个发光二极管的顺序点亮,学会使用MCS-51单片机芯片的P1口进行输出控制,进一步学习汇编程序的分析方法,并能熟练运用RR、RL等基本指令。,项目任务 要求应用AT89C51芯片,控制8个发光二极管的有序亮灭,呈现流水灯的效果。设计单片机控制电路并编程实现此功能。 项目分析 利用单片机P1口连接8个发光二极管,利用各引脚输出电位的变化,控制发光二极管的亮灭。P1口各引脚的电位变化可以通过指令来控制,为了清楚地分辨发光二极管的点亮和熄灭,在P1口输出信号由一种状态向另一种状态变化时,

2、编写延时程序实现一定的时间间隔。,项目预备知识:循环移位指令,RL A 将累加器A中的数据依次左移一位 RR A 将累加器A中的数据依次右移一位 RLC A 将累加器A中的数据连同进位标志 位 CY一起依次 左移一位 RRC A 将累加器A中的数据连同进位标志位CY一起依次右移一位,RL ARR ARLC ARRC A,后两条指令,影响P标志和CY。,循环移位指令(4条),例:,若A=5CH,CY=1,执行RLC A后,,对RLC、RRC指令,在CY=0时RLC相当于乘以2RRC相当于除以2,结果:A=B9H,CY=0,P=1,CLR A 将累加器A中的数据清零CPL A 将累加器A中的数据取

3、反,项目预备知识:清0与取反指令,取反:CPL A ;/AA例:若A=5CH,执行CPL A 结果:A=A3H,清0:CLR A ;0A,在项目一和项目二中,为了能清晰的分辨出蜂鸣器的鸣叫和发光二极管的变化,我们进行了延时程序的编写。CPU执行完延时程序耗费的时间即是我们所要延时的时间,通常可以利用时钟频率、指令周期结合寄存器中的数据进行延时时间的计算。 延时程序如下: DELAY:MOV R7,#10 ;1S D0:MOV R6,#100 ; 1S D1:MOV R5,#200 ; 1S D2:DJNZ R5,D2 ; 2S DJNZ R6,D1 ; 2S DJNZ R7,D0 ; 2S R

4、ET,项目预备知识:软件延时程序的时间计算,采用12MHz的晶振,则一个机器周期是1S,“MOV R7,#10”是一条单周期指令,执行1次需要1S(关于指令的执行周期可以查附录二)。“DJNZ R5,D2”是双机器周期指令,执行1次需要21=2S。计算第1层循环(D2 )的时间: 2002S=400S 第2层循环(D1 )的时间: (1+400+2)100=40300S 第3层循环(D0 )的时间: (1+40300+2)10=403 030S0.4S,(一)设计思路 在AT89C51单片机芯片及基本外围电路组成的单片机最小系统基础上,利用P1口的8个引脚控制8个发光二极管。由于发光二极管具有

5、普通二极管的共性-单向导电性,因此只要在其两极间加上合适的正向电压,发光二极管即可点亮;将电压撤除或加反向电压,发光二极管即熄灭。根据发光二极管的特性,结合单片机P1口的输出信号,即可实现流水灯的控制效果。,项 目 实 施,一、硬件电路设计,(二)电路设计1、P1口结构及流水灯电路,左图是P1口中某一位的位结构电路图。P1口为8位准双向口,每一位均可独立定义为输入或输出口,当作为输出口时,1写入锁存器,T2截止,内部上拉电阻将电位拉至1,此时该口输出为1;当0写入锁存器, ,T2导通,输出则为0。作为输入口时,锁存器置1,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电

6、平,所以P1口称为准双向口。,P1.0P1.7: 准双向I/O口(内置了上拉电阻),2,1,D,Q,CK,/Q,读引脚=0,读锁存器=0,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,(1)P1.0P1.7作为输出口【输出1】,2,1,D,Q,CK,/Q,读引脚=0,读锁存器=0,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,输出数据 = 1 时,1,1,0,截止,=1,2,1,D,Q,CK,/Q,读引脚=0,读锁存器=0,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,输出数据 = 0 时,0,0,1,=0,导通,(2)P1.0P1.7作为输出口【输出0】,2,1

7、,D,Q,CK,/Q,读引脚 =1,读锁存器=0,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,输入数据时,要先对其写“1”,1,1,0,截止,(3)P1.0P1.7作为输入口,发光二极管的连接方法:若将它们的阴极连接在一起,阳极信号受控制,即构成共阴极接法,如图a所示;若将它们的阳极连接在一起,阴极信号受控制,则构成共阳极接法,如图b所示。由于P1口引脚输出高电位时电压大约是5V,为保证发光二极管的可靠工作,必须在发光二极管和单片机输出引脚间连接一只限流电阻。 本项目选用硅型普通发光二极管,限流电阻取220。,P1口控制流水灯(8个发光二极管)电路,综合以上的分析,得到下图所示电路

8、原理图。,(三)材料表 从原理图可以得到实现本项目所需的元器件。元器件的选择应该合理,以满足功能要求为原则,否则会造成资源的浪费。,二、 控制程序的编写(一)绘制程序流程图 本控制使用简单程序设计中的顺序结构形式实现,程序结构流程图如下图。,(二)编制汇编源程序,2、程序执行过程,ORG 0000H LJMP MAIN2 ORG 0200H MAIN2:MOV P1,#0FEH; L0亮 LCALL DELAY MOV P1,#0FDH; L1亮 LCALL DELAY MOV P1,#0FBH ; L2亮 LCALL DELAY MOV P1,#0F7H ; L3亮 LCALL DELAY

9、MOV P1,#0EFH ; L4亮 LCALL DELAY MOV P1,#0DFH ; L5亮 LCALL DELAY,MOV P1,#0BFH ; L6亮 LCALL DELAY MOV P1,#7FH ; L7亮 LCALL DELAY SJMP $;重复执行本条指令 ORG 0F00H DELAY: MOV R7,#10 D0: MOV R6,#100 D1: MOV R5,#200 D2: DJNZ R5,D2 DJNZ R6,D1 DJNZ R7,D0 RET ;子程序返回指令 END ;程序结束标记,在本项目中,利用P1口实现8个发光二极管的流水灯控制,主要利用了送数指令,将要

10、显示的现象对应的数据通过P1口送出。在编写控制程序时,应首先将每个对应现象分析清楚,比如:要让L3亮,其余发光二极管灭,则P1口的数据应为11110111B;要让L7亮,则P1口的数据应为01111111B。然后找到能实现此操作的指令即可。下面使用我们在本项目中学习的移位指令编写程序如下: ORG 0000H ORG 0F00H LJMP MAIN2 DELAY:MOV R7 ,#10 ORG 0200H D0:MOV R6 ,#100 MAIN2:MOV A,#0FEH D1:MOV R5, #200 XH:MOV P1,A D2:DJNZ R5,D2 LCALL DELAY DJNZ R6,D1 RL A DJNZ R7,D0 LJMP XH RET END,知 识 点 链 接,分析后可知,本段程序与项目中给出的参考程序功能相似,但是指令数量较少,所占存储器空间较小。根据发光二极管的点亮次序,通过分析每次给P1口所送数据,发现不断变换的是数据中“0”的位置。若点亮次序是从L0L7,则“0”是自低位(右)向高位(左)移动的,符合指令“RL A”的功能。同时还可以总结出,若应用“RR A”指令,则8个发光二极管的点亮次序是从L7L0。应用了移位指令后,程序更简洁易懂了,因此在今后的学习中,应注意类似情况的处理。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号