8位流水灯的单片机控制_第1页
8位流水灯的单片机控制_第2页
8位流水灯的单片机控制_第3页
8位流水灯的单片机控制_第4页
8位流水灯的单片机控制_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

RLA将累加器A中的数据依次左移一位

RRA将累加器A中的数据依次右移一位

RLCA将累加器A中的数据连同进位标志位CY一起依次左移一位

RRCA将累加器A中的数据连同进位标志位CY一起依次右移一位RLA

RRARLCARRCAA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后两条指令,影响P标志和CY。循环移位指令〔4条〕例:假设A=5CH,CY=1,执行RLCA后,

对RLC、RRC指令,在CY=0时

RLC相当于乘以2 RRC相当于除以2结果:A=B9H,CY=0,P=1010111001101110010CLRA将累加器A中的数据清零CPLA将累加器A中的数据取反

工程预备知识:清0与取反指令取反:CPLA;/A→A例:假设A=5CH,执行CPLA结果:A=A3H清0:CLRA ;0→A在工程一和工程二中,为了能清晰的分辨出蜂鸣器的鸣叫和发光二极管的变化,我们进行了延时程序的编写。CPU执行完延时程序消耗的时间即是我们所要延时的时间,通常可以利用时钟频率、指令周期结合存放器中的数据进行延时时间的计算。延时程序如下:DELAY:MOVR7,#10;1µSD0:MOVR6,#100;1µSD1:MOVR5,#200;1µSD2:DJNZR5,D2;2µSDJNZR6,D1;2µSDJNZR7,D0;2µSRET工程预备知识:软件延时程序的时间计算采用12MHz的晶振,那么一个机器周期是1µS,“MOVR7,#10〞是一条单周期指令,执行1次需要1µS〔关于指令的执行周期可以查附录二〕。“DJNZR5,D2〞是双机器周期指令,执行1次需要2×1=2µS。计算第1层循环〔D2〕的时间:200×2µS=400µS第2层循环〔D1〕的时间:〔1+400+2〕×100=40300µS第3层循环〔D0〕的时间:〔1+40300+2〕×10=403030µS≈0.4S〔一〕设计思路在AT89C51单片机芯片及根本外围电路组成的单片机最小系统根底上,利用P1口的8个引脚控制8个发光二极管。由于发光二极管具有普通二极管的共性----单向导电性,因此只要在其两极间加上适宜的正向电压,发光二极管即可点亮;将电压撤除或加反向电压,发光二极管即熄灭。根据发光二极管的特性,结合单片机P1口的输出信号,即可实现流水灯的控制效果。项目实施一、硬件电路设计〔二〕电路设计

1、P1口结构及流水灯电路左图是P1口中某一位的位结构电路图。P1口为8位准双向口,每一位均可独立定义为输入或输出口,当作为输出口时,1写入锁存器,,T2截止,内部上拉电阻将电位拉至"1",此时该口输出为1;当0写入锁存器,,T2导通,输出那么为0。作为输入口时,锁存器置1,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,所以P1口称为准双向口。P1.0—P1.7:准双向I/O口〔内置了上拉电阻〕21DQCK/Q读引脚=0读锁存器=0写锁存器内部总线Vcc引脚P1.X内部上拉电阻〔1〕P1.0—P1.7作为输出口【输出1】21DQCK/Q读引脚=0读锁存器=0写锁存器内部总线Vcc引脚P1.X内部上拉电阻输出数据=1时110截止=121DQCK/Q读引脚=0读锁存器=0写锁存器内部总线Vcc引脚P1.X内部上拉电阻输出数据=0时001=0导通〔2〕P1.0—P1.7作为输出口【输出0】21DQCK/Q读引脚=1读锁存器=0写锁存器内部总线Vcc引脚P1.X内部上拉电阻输入数据时,要先对其写“1〞110截止〔3〕P1.0—P1.7作为输入口发光二极管的连接方法:假设将它们的阴极连接在一起,阳极信号受控制,即构成共阴极接法,如图a所示;假设将它们的阳极连接在一起,阴极信号受控制,那么构成共阳极接法,如图b所示。由于P1口引脚输出高电位时电压大约是5V,为保证发光二极管的可靠工作,必须在发光二极管和单片机输出引脚间连接一只限流电阻。本工程选用硅型普通发光二极管,限流电阻取220Ω。P1口控制流水灯〔8个发光二极管〕电路综合以上的分析,得到以下图所示电路原理图。〔三〕材料表

从原理图可以得到实现本工程所需的元器件。元器件的选择应该合理,以满足功能要求为原那么,否那么会造成资源的浪费。序号元件名称元件型号元件数量备注1单片机芯片AT89C511片DIP封装

2发光二极管Φ51只普通型3晶振1只12MHz4电容30pF2只瓷片电容22uF1只电解电容5电阻200Ω8只碳膜电阻10kΩ1只碳膜电阻6按键1只无自锁1只带自锁740脚IC座1片安装AT89C51芯片8导线若干二、控制程序的编写

〔一〕绘制程序流程图

本控制使用简单程序设计中的顺序结构形式实现,程序结构流程图如以下图。〔二〕编制汇编源程序标号操作码操作数指令意义(注释)ORG0000H;伪指令,指明程序从0000H单元开始存放LJMPMAIN2;控制程序跳转到“MAIN2”处执行ORG0200H;主程序从0200H单元开始MAIN2:MOVP1,#0FEH;将立即数FEH送累加器A,L0亮LCALLDELAY;调用DELAY(延时)程序MOVP1,#0FDH;L1亮LCALLDELAYMOVP1,#0F7H;L2亮LCALLDELAYMOVP1,#0F7H;L3亮LCALLDELAYMOVP1,#0EFH;L4亮LCALLDELAYMOVP1,#0DFH;L5亮LCALLDELAY标号操作码操作数指令意义(注释)MOVP1,#0BFH;L6亮LCALLDELAYMOVP1,#7FH;L7亮LCALLDELAY;将立即数FEH送累加器A,L0亮SJMP$;重复执行本条指令(程序结束)ORG0F00H;延时程序从0F00H开始DELAY:MOVR7,#10;将立即数10送通用寄存器R7D0:MOVR6,#100;将立即数100送通用寄存器R6D1:MOVR5,#200;将立即数200送通用寄存器R5D2:DJNZR5,D2;根据R5减1后的内容判断程序执行方向DJNZR6,D1;根据R6减1后的内容判断程序执行方向DJNZR7,D0;根据R7减1后的内容判断程序执行方向RET;子程序返回指令END;程序结束标记2、程序执行过程

ORG0000HLJMPMAIN2ORG0200HMAIN2:MOVP1,#0FEH;L0亮

LCALLDELAYMOVP1,#0FDH;L1亮

LCALLDELAYMOVP1,#0FBH;L2亮

LCALLDELAYMOVP1,#0F7H;L3亮

LCALLDELAYMOVP1,#0EFH;L4亮

LCALLDELAYMOVP1,#0DFH;L5亮

LCALLDELAY

MOVP1,#0BFH;L6亮

LCALLDELAYMOVP1,#7FH;L7亮

LCALLDELAYSJMP$;重复执行本条指令

ORG0F00HDELAY:MOVR7,#10D0:MOVR6,#100D1:MOVR5,#200D2:DJNZR5,D2DJNZR6,D1DJNZR7,D0RET;子程序返回指令

END;程序结束标记在本工程中,利用P1口实现8个发光二极管的流水灯控制,主要利用了送数指令,将要显示的现象对应的数据通过P1口送出。在编写控制程序时,应首先将每个对应现象分析清楚,比方:要让L3亮,其余发光二极管灭,那么P1口的数据应为11110111B;要让L7亮,那么P1口的数据应为01111111B。然后找到能实现此操作的指令即可。下面使用我们在本工程中学习的移位指令编写程序如下:ORG0000HORG0F00HLJMPMAIN2DELAY:MOVR7,#10ORG0200HD0:MOVR6,#100MAIN2:MOVA,#0FEHD1:MOVR5,#200XH:MOVP1,A

温馨提示

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

评论

0/150

提交评论