节日彩灯控制器的设计

一、设计要求:

以单片机为核心,设计一个节日彩灯控制器:

K1—开始,按此键则灯开始流动(由上而下)。

K2—停止,按此键则停止流动,所有灯为暗。

K3—下,按此键则灯由下向上流动。

K4—交替闪烁,按此键则奇数序号灯与偶数序号灯交替闪烁。

二、方案论证:

通过查阅大量相关技术资料,并结合自己的实际知识,我提出课两种技术方案来实现该公能。下面我将首先对这两种方案的组成框图和实现原理分别进行说明,并分析比较它们的特点,然后阐述我最终选择方案的原因。

1 方案比较

彩灯控制器课分为两种方案实现。一种是利用数字逻辑电路装置控制,另一种是采用单片机控制。

1.1 方案一

根据任务要求介绍的彩灯控制电路的基本组成,可以确定彩灯控制器应由振荡器、计数/时序分配电路、移位寄存器和彩灯显示五部分组成。其框图如图所示。

1.2 方案二

本方案主要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来达到本设计的要求、其硬件构成框图如图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源组成。

2 方案论证

如果采用方案一,利用数字逻辑电路装置控制,其电路不是很复杂,制作相对较容易,成本也相对较低,但可调性差,亮灯模式少而且样式单调,达不到设计任务要求或实现困难。而采用方案二,以单片机控制其优点是电路集成度高,工作原理简单,清晰明了,自定义编程,控制的图案花样多,移植性好等。

3 方案选择

综上,显然方案二各方面优于方案一,以及为了体现专业优势,本次设计采用方案二。

三、理论设计:

1、主程序设计

程序启动时跳转到键盘判断模块程序中,此程序里面包含K1—K4的按键情况判断,循环检测直到有按键按下的时候,程序转去相对应的按键的彩灯显示的模块。

2、键盘扫描程序

四、电路仿真和仿真结果分析:

1 仿真电路

1.1 时钟电路和复位电路

1.2 按键控制电路

1.3 LED显示电路

2 仿真结果分析:

此次系统设计结果较好,经Proteus软件仿真系统的调试,可检测出仿真电路正常;对应按键按下,彩灯出现不同花型,实现了多控制、多闪烁的LED彩灯循环;经以上仿真测试证实,本设计能实现设计系统要求的预期功能。

五、心得体会:

本次作业设计以C51单片机为核心,控制电路、LED显示电路、以及单片机最小系统等模块组成的核心主控制电路,实现了由单片机对LED灯的控制。

通过对软件的仿真调试,对彩灯控制器的运行成果满意,实现了题目的要求,同时此设计具有电路简单、易操作、成本小、体积小、耗能低等优点。

但是在设计中也出现了一些问题,在程序编写过程中发现自己有的知识模块模糊,导致实验速度减缓,通过c程序的编写实验就发现自己很多地方的不足,在查阅资料和同学的帮助下才解决了困难,这都是以后要多学习的地方。

单片机源程序如下:

#include

#define uchar unsigned char //宏定义

#define uint unsigned int

sbit k1=P1^2; //位定义

sbit k2=P1^3;

sbit k3=P1^4;

sbit k4=P1^5;

uchar a=0; //定义所需变量

uchar b;

uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //从上到下流水数组

uchar code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //从下到上流水数组

void delay_ms(uint xms) //延时函数

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void key_scan(uchar b) //按键扫描

{

if(b==1) //若K1按下

{

while(k2==1&&k3==1&&k4==1)

{

for(a=0;a<8;a++) //执行从上到下流水操作

{

P0=table1[a];

delay_ms(100);

}

a=0;

}

}

if(b==2) //若K2按下

{

while(k1==1&&k3==1&&k4==1)

{ //P0全部输出高电平,关闭LED

P0=0xff;

}

}

if(b==3) //若K3按下

{

while(k1==1&&k2==1&&k4==1)

{

for(a=0;a<8;a++) //执行从下到上流水操作

{

P0=table2[a];

delay_ms(100);

}

a=0;

}

}

if(b==4) //若K4按下

{

while(k1==1&&k2==1&&k3==1)

{

P0=0xaa; //奇偶位分别点亮

delay_ms(100);

P0=0x55;

delay_ms(100);

}

}

}

void main(void) //主函数

{

TMOD=0X01; //定时器中断初始化

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

EA=1;

ET0=1;

TR0=1;

while(1);

}

void T0_time interrupt 1 //中断服务函数

{

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

if(k1==0)b=1;

if(k2==0)b=2;

if(k3==0)b=3;

if(k4==0)b=4;

key_scan(b);

}

复制代码

单片机节日彩灯c语言,单片机节日彩灯控制器的设计Proteus仿真相关推荐

  1. 基于51单片机霍尔转速测量温度电机保护PWM调速设计proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示温度,PWM档位值和当前转速 2.可通过按键控制电机启动,停止,正转,反转,加速,减速 3.温度超过50℃蜂鸣器报警,且 ...

  2. 51单片机七人多数表决器仿真设计( proteus仿真+程序+报告+讲解视频)

    51单片机七人多数表决器仿真设计( proteus仿真+程序+报告+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0033 51 ...

  3. 基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频)

    基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S00 ...

  4. 51单片机双机串口数码管显示排队叫号仿真设计( proteus仿真+程序+报告+讲解视频)

    51单片机双机串口数码管显示排队叫号仿真设计 1.主要功能: 2.仿真 3.程序 4.设计报告 1.1 设计背景与意义 1.2 设计目的 1.3 设计要求及内容 1.4 本文结构安排 2 总体设计方案 ...

  5. 51单片机+L298驱动步进电机+L297测速+LCD1602显示+按键调试+Proteus仿真

    51单片机+L298驱动步进电机+L297测速+LCD1602显示+按键调试+Proteus仿真 *Proteus仿真 L298N是双H桥式驱动器. L297是步进电机控制集成芯片(包括环形分配器), ...

  6. 51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真

    51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真 说明:为什么采用4位的数码管,因为Proteus里面没有3位的数码管器件可选,也可以采用2+1,或者1+1+1, ...

  7. 51单片机蓄电池充电保护设计Proteus仿真

    51单片机蓄电池充电保护设计Proteus仿真 功能描述如下:本设计由STC89C52单片机电路+LCD1602液晶显示电路+ACS712电流检测电路+分压电路+PCF8591 AD检测设计+继电器电 ...

  8. c语言设计数字增量pi控制器,数字PI控制器的设计与仿真.pdf

    自动化技术与应用>2008年第27卷第10期 工 业 控制 与应 用 ndust~ ControlandApplications 数字PI控制器的设计与仿真 荣晓飞 .温莹莹 (1.临沂师范学院 ...

  9. 定时器实验循环彩灯C语言,单片机实验6__定时器控制循环彩灯实验.doc

    华 南 农 业 大 学 实 验 报 告 专业班次 08电信1 组别 200831120102 题目 实验六 定时器控制循环彩灯 姓 名 陈 建 泽 日期 2010.11.4 一.实验目的 1.学习89 ...

  10. 133、仿真-基于51单片机太阳能热水器水温水位智能监控仪报警设计(Proteus仿真+程序+配套资料等)

    毕设帮助.开题指导.技术解答(有偿)见文未 目录 一.硬件组成 二.设计功能 三.Proteus仿真图​编辑 ​编辑 四.程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包 ...

最新文章

  1. netty服务器返回信息关闭,netty4 服务端同步客户端返回的结果
  2. 360隔离mysql恢复_MySQL备份与恢复
  3. JavaScript 中遍历对象的属性
  4. pca图解读_干货!手把手一步一步解读PCA分析,逃学博士尽力了!
  5. 刷新SOTA!Salesforce提出跨模态对比学习新方法,仅需4M图像数据!
  6. 为什么女人喜欢有钱的男人?
  7. php月末,php获取月头月末
  8. 多线程命名管道通信的设计
  9. 烽火fr2600怎么web登录_烽火路由器回收,烽火交换机回收,烽火无线AP回收
  10. php超链接打不开了,excel超链接无法打开怎么办
  11. /etc/passwd,/etc/shadow文件详解,及密码复杂度设置
  12. 纳德拉:没有Excel的世界是无法想象的
  13. IOI2017 Day1 Toy Train 题解
  14. 计算机一直在启动界面进不去怎么办,Win7系统开机一直停留在“Windows正在启动”界面怎么办...
  15. 寺庙公众号开发:vue实现祈福牌位的前端部分
  16. 2020 软件测试行业问卷调查结果分析
  17. 网易资深安卓架构师:2021年Android常见面试题,面试必问
  18. html好看的渐变效果,CSS3实现渐变/立体/扁平的漂亮按钮
  19. 使用Google Analytics来统计网站流量
  20. 我国土地资源开发利用中存在的主要问题

热门文章

  1. W10计算机策略怎么打开,如何打开组策略,详细教您win10如何打开组策略
  2. win10共享文件夹设置,本地组策略配置全攻略
  3. How programer to represent love
  4. Charles 破解版安装图解
  5. Software.Cradle.Suite.V11 X64 热流体模拟软件
  6. 谷歌浏览器怎么下载视频 Google Chrome下载视频方法
  7. 读书笔记_《深度学习与计算机视觉》.叶韵 编著.田疆 西门子高级研究员 作序.机械工业出版社
  8. 计算机经常无法打印机,电脑打印机无法打印怎么办
  9. CSP2019普及组题解:公交换乘(C++)
  10. BAT等大厂年薪30W+面试清单:JVM\MySQL\设计模式\分布式\微服务