网站大量收购独家精品文档,联系QQ:2885784924

基于单片机的6种led彩色循环灯.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机的6种led彩色循环灯

课程设计报告 一、课题名称 LED彩灯控制器 二、课程设计的目的和意义 掌握单片机技术,及其原理。 熟练使用C语言编程及KEIL软件。 掌握硬件设计 熟悉LED彩灯控制器原理 三、设计目标或任务要求、任务分析 要求:1、9个发光管6种花样自动变换,循环往复。 2、彩灯花样变换的快慢节拍可以选择。 3、系统复位清零开关。 任务分析: 方案:利用时间中断控制变换的快慢 原理:本方案的主要思想是将多种方式的引脚变换的数据装在一个数组里面,装载在rom里面,通过定时器中断将灯的闪烁控制在一个频率内。 原理图如下: 方案 电路实现:通过单片机引脚的高低电平控制led小灯的亮灭。 程序清单: #includereg52.h #define shuchu P1 //前8个灯的引脚 sbit danshuchu = P2^0; //D9最后一个灯 sbit jia = P2^1; //时间片增加 循环变慢 sbit jian = P2^2; //时间片减少 循环变快 unsigned char times=5, num=0; //分别是 时间片 时间计数 //利用一个数组将所要表示的6种亮的模式 存入rom中 table0是前8个的表 table1是最后一个的表 下面是单点状态 unsigned char code table0[] ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,//从左到右依次亮 0000 0000 $1 0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,//从右到左依次亮 1000 000$0 0 0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,//亮灭亮灭 1010 10$10 1 0x08,0x14,0x22,0x41,0x80,0x41,0x22,0x14,0x08,//从中间到两边,在返回中间 0000 1$000 0 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0xff,//从左到右亮一条线 0000$ 0000 1 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,// 从右到左亮一条线 100$0 0000 0 00//补位 }; unsigned char code table1[] ={0x00,0x03,0x53,0x85,0x00,0x30,0x00}; unsigned int choose=0, count=0,countrl=0; //分别定义 void main() { TMOD=0x01; TH0=(65536-65072)/256; TL0=(65536-65072)%256; EA=1; ET0=1; TR0=1; while(1){ if(0==jia) {while(0==jia); times++; if(times30) times=30;} if(0==jian) { while(0==jian);;times--; if(times3) times=3;} } } void T0_time() interrupt 1 { TH0=(65536-55872)/256; TL0=(65536-55872)%256; num++;choose++; if(times==num) //可改变时间片 { num=0; danshuchu=(bit)((table1[count/8](count%8))0x01); shuchu=table0[count++]; if((countrl+9)==count) {count-=9; if(countrl50)countrl=0;count=0;} //使之循环 if(100==choose) {choose=0;countrl+=9;} //循环时间 } } 四、实验验证过程及结果 过程:1、启动keil软件,打开工程文件,编译源码,把程序下载到实验开发板上。 2、观察现象。 结果:9个发光管6种花样自动变换,循环往复。 变换方式见源码。 虽然只是用protues进行仿真但是我在开发板上进行过实际测试,完全可以通过。 五、结论 本设计完成要求,能实现彩灯变

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档