用单片机实现流水灯的控制设计.doc

上传人:飞****9 文档编号:133717442 上传时间:2020-05-30 格式:DOC 页数:13 大小:66.50KB
返回 下载 相关 举报
用单片机实现流水灯的控制设计.doc_第1页
第1页 / 共13页
用单片机实现流水灯的控制设计.doc_第2页
第2页 / 共13页
用单片机实现流水灯的控制设计.doc_第3页
第3页 / 共13页
用单片机实现流水灯的控制设计.doc_第4页
第4页 / 共13页
用单片机实现流水灯的控制设计.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《用单片机实现流水灯的控制设计.doc》由会员分享,可在线阅读,更多相关《用单片机实现流水灯的控制设计.doc(13页珍藏版)》请在金锄头文库上搜索。

1、用单片机实现流水灯的控制设计1.引言当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本设计课题是流水灯的控制设计,流水灯是一串按一定的规律像流水一样连续闪亮。流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。2.硬件组成2.1 总体方案设计分析要求用8255

2、的A口和B口做为输出,接16个发光二极管,从而实现16位流水灯的显示效果,基本的界限可如下图A所示,在C口的地两位接两个开关,实现两个扩展功能的控制。i:基本流水灯显示电路A口和B口两个端口不能同时复制,从而在试验中可以用BX进行需要复制的数据的存储,因为BX可以分从BH BL两个部分进行独立的操作,在本次试验中用BH对A口进行赋值,用BL对B口进行赋值,通过演示一段时间再对BH BL进行移位和输出,实现流水灯的效果。ii:正反方向选择把PC.0口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.0为高电平的时候则灯进行左移,同时B口与A口相反。iii:快慢速度控制把PC.1

3、口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.1为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快,低电平的时候则进行延时的时间变长,使得流水灯的流水速度加快。3硬件原理设计A该模块的WR.RD分别练到PC总线接口模块的XIOW和XIORB该模块的数据(AD0AD7)、地址线(A0A7)分别连到PC总线接口模块的数据(D0D7)、地址线(A0A7)C 8255模块选通线CA连到PC总线接口模块的IOY3D 8255的PA0PA7连到发光二极管的L1L8;8255的PB0PB7连到发光二极管的L9L16E 8255的PC0 PC1分别练到开关 K0 K1F 软件流程

4、框图及程序清单按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.255.50V的电压工作范围和024MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。图1 流水灯硬件

5、原理图2.1 硬件组成分析 1)总体方案设计分析要求用8DC52的P0口做为输出,接8个发光二极管,从而实现8位流水灯的显示效果,在C口的地两位接两个开关,实现两个扩展功能的控制。:基本流水灯显示电路如果要让接在P0.0口的 D5亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的 D5灯熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.1P0.7口的其他7个LED的点亮和熄灭的方法同D5。因此,要实现流水灯功能,我们只要将发光二极管 D1D8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。A口和B口两个端口不能同时复制,从而在试验中可以用BX进行需要

6、复制的数据的存储,因为BX可以分从BH BL两个部分进行独立的操作,在本次试验中用BH对A口进行赋值,用BL对B口进行赋值,通过演示一段时间再对BH BL进行移位和输出,实现流水灯的效果。ii:正反方向选择把PC.0口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.0为高电平的时候则灯进行左移,同时B口与A口相反。iii:快慢速度控制把PC.1口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.1为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快,低电平的时候则进行延时的时间变长,使得流水灯的流水速度加快。3硬件原理设计A该模块的WR.RD分别练到P

7、C总线接口模块的XIOW和XIORB该模块的数据(AD0AD7)、地址线(A0A7)分别连到PC总线接口模块的数据(D0D7)、地址线(A0A7)C 8255模块选通线CA连到PC总线接口模块的IOY3D 8255的PA0PA7连到发光二极管的L1L8;8255的PB0PB7连到发光二极管的L9L16E 8255的PC0 PC1分别练到开关 K0 K1F 软件流程框图及程序清单从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1P1.7口的其他7

8、个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。3.软件编程#include#include#define uchar unsigned char/定义无符号字符#define uint unsigned int /定义无符号整数sbit k1=P34 ; /增加键sbit k2 =P35 ; /减少键unsigned char PWM=0

9、x7f; /赋初值int ch=100;unsigned char temp=0xff;unsigned char shu=0x00;unsigned char k=0;unsigned char m=1;void delayms(char ms);/void liu();void line();void shudu();void fangxiang();void delay(uint t) ;void tiao();unsigned char const zu=0xff, 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, ;void main()

10、 P1=0xff; /P0=0xff; TMOD=0x21 ; TH0=0xff ; /1ms延时常数 TL0=0x02 ; /频率调节 TH1=PWM ; /脉宽调节 TL1=0 ; EA=1; ET0=1; ET1=1; TR0=1 ;/ P0=0xff;/ EA=1; EX0=1; EX1=1;/TCON=0x01;IE0=1; IE1=1;IT0=1;IT1=1;while(1)if(P1=0xef) if(PWM!=0xff) PWM+ ; delayms(10); if(P1=0xdf) if(PWM!=0x02) PWM- ;delayms(10); if(P1=0x7f) /d

11、elayms(10);if(P1=0x7f)fangxiang(); /*/ 设置LED灯的亮灭程度/*/*/ 定时器0中断服务程序./*/void timer0() interrupt 1 TR1=0 ; TH0=0xff ; TL0=0x02 ; TH1=PWM ; TR1=1 ;if(PWM0xff) P0=shu ; /启动输出/*/ 定时器1中断服务程序/*/void timer1() interrupt 3 TR1=0 ; P0=0xff ; /结束输出/*/ 延时子程序/*/void delayms(char ms) char i ; while(ms-) for(i = 0 ; i 120 ; i+) ; /*/ 设置流水灯的方向/*/void fangxiang()/while(1)uint i;uint j;uint a=1;uint b=9;/uchar temp; /TR0=0 ;/TR1=0 ;while(P1!=0xf7) if(m%2=1)for(i=b;i8&P1!=0xf7;i+) /8个流水灯逐个闪动if(m%2=1)shu=zui;delay(ch); /调用延时函数/b-;b=9;for(i=1;i9&P1!=0xf7;i+) /8个流水灯逐个闪动if(m%2=1)shu=

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

当前位置:首页 > 学术论文 > 管理论文

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