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

上传人:飞*** 文档编号:46140714 上传时间:2018-06-22 格式: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位流水灯的单片机控制v项目目标 v项目任务 v项目分析 v项目预备知识 v项目实施 v知识点链接 项目目标通过单片机控制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 AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后两条指令,影响P标志和CY。循环移位指令(4条)例:若A=5CH,CY=1,执行RLC A后,对RLC、RRC指令,在CY=0时 RLC相当于乘以2 RRC相当于除以2

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

4、6,#100 ; 1SD1:MOV R5,#200 ; 1SD2:DJNZ R5,D2 ; 2SDJNZ R6,D1 ; 2S DJNZ R7,D0 ; 2SRET项目预备知识:项目预备知识:软件延时程序的时间计算采用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=

5、403 030S0.4S(一)设计思路在AT89C51单片机芯片及基本外围电路组成的 单片机最小系统基础上,利用P1口的8个引脚控制8 个发光二极管。由于发光二极管具有普通二极管的 共性-单向导电性,因此只要在其两极间加上合适 的正向电压,发光二极管即可点亮;将电压撤除或 加反向电压,发光二极管即熄灭。根据发光二极管 的特性,结合单片机P1口的输出信号,即可实现流 水灯的控制效果。项 目 实 施一、硬件电路设计(二)电路设计 1、P1口结构及流水灯电路左图是P1口中某一位的 位结构电路图。P1口为8位准 双向口,每一位均可独立定义 为输入或输出口,当作为输出 口时,1写入锁存器,T2截 止,内

6、部上拉电阻将电位拉至 “1“,此时该口输出为1;当0写 入锁存器, ,T2导通,输出则 为0。作为输入口时,锁存器置 1,T2截止,此时该位既可以 把外部电路拉成低电平,也可 由内部上拉电阻拉成高电平, 所以P1口称为准双向口。P1.0P1.7: 准双向I/O口(内置了上拉电阻)21DQCK/Q读引脚=0读锁存器=0写锁存器内部总线Vcc引脚P1.X内部上拉电阻(1)P1.0P1.7作为输出口【输出1】21DQCK/Q读引脚=0读锁存器=0写锁存器内部总线Vcc引脚P1.X内部上拉电阻输出数据 = 1 时110截 止=121DQ CK/Q读引脚=0读锁存器=0写锁存器内部总线Vcc引脚P1.X

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

8、取220。 P1口控制流水灯(8个发光二极管)电路综合以上的分析,得到下图所示电路原理图。(三)材料表从原理图可以得到实现本项目所需的元器件。元器件的选择应 该合理,以满足功能要求为原则,否则会造成资源的浪费。序号 元件名称 元件型号 元件数 量 备备注 1单单片机芯 片 AT89C511片DIP封装 2发发光二极 管5 1只普通型3晶振1只12MHz 4电电容30pF 2只瓷片电电容22uF 1只电电解电电容 5电电阻200 8只碳膜电电阻10k 1只碳膜电电阻 6按键键1只无自锁锁1只带带自锁锁740脚IC座 1片安装AT89C51芯片8导线导线若干二、 控制程序的编写 (一)绘制程序流程

9、图本控制使用简单程序设计中的顺序结构形式实现, 程序结构流程图如下图。(二)编制汇编源程序标标 号操作码码操作数指令意义义(注释释) ORG0000H;伪伪指令,指明程序从0000H单单元开始存放 LJMPMAIN2;控制程序跳转转到“MAIN2”处执处执 行 ORG0200H;主程序从0200H单单元开始 MAIN2:MOVP1,#0FEH;将立即数FEH送累加器A,L0亮 LCALLDELAY;调调用DELAY(延时时)程序MOVP1,#0FDH; L1亮LCALLDELAY MOVP1,#0F7H;L2亮 LCALLDELAY MOVP1,#0F7H;L3亮LCALLDELAYMOVP1

10、,#0EFH;L4亮LCALLDELAY MOVP1,#0DFH ;L5亮 LCALLDELAY标标 号操作码码操作数指令意义义(注释释)MOVP1,#0BFH;L6亮LCALLDELAY MOVP1,#7FH; L7亮 LCALLDELAY;将立即数FEH送累加器A,L0亮 SJMP$;重复执执行本条指令(程序结结束)ORG0F00H; 延时时程序从0F00H开始DELAY:MOVR7,#10;将立即数10送通用寄存器R7 D0:MOVR6,#100;将立即数100送通用寄存器R6 D1:MOVR5,#200;将立即数200送通用寄存器R5 D2:DJNZR5,D2;根据R5减1后的内容判断

11、程序执执行方向DJNZR6,D1;根据R6减1后的内容判断程序执执行方向DJNZR7,D0;根据R7减1后的内容判断程序执执行方向RET;子程序返回指令 END;程序结结束标记标记2、程序执行过程ORG 0000HLJMP MAIN2ORG 0200HMAIN2:MOV P1,#0FEH; L0 亮LCALL DELAYMOV P1,#0FDH; L1 亮LCALL DELAYMOV P1,#0FBH ; L2 亮LCALL DELAYMOV P1,#0F7H ; L3 亮LCALL DELAYMOV P1,#0EFH ; L4 亮LCALL DELAYMOV P1,#0DFH ; L5 亮L

12、CALL DELAYMOV P1,#0BFH ; L6亮LCALL DELAYMOV P1,#7FH ; L7亮LCALL DELAYSJMP $;重复执行本条指令ORG 0F00HDELAY: MOV R7,#10D0: MOV R6,#100D1: MOV R5,#200D2: DJNZ R5,D2DJNZ R6,D1DJNZ R7,D0RET ;子程序返回指 令END ;程序结束标记在本项目中,利用P1口实现8个发光二极管的流水灯控制,主要利用 了送数指令,将要显示的现象对应的数据通过P1口送出。在编写控制程 序时,应首先将每个对应现象分析清楚,比如:要让L3亮,其余发光二 极管灭,则P

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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