彩灯控制器程序设计

  • 完整工程下载

#include "key.h"
#include "led.h"
#include "lcd.h"
#include "usart.h"unsigned long ulTick_ms;                //SysTick_tim
unsigned char ucState=1 ,pucStr[21];    //lcd
unsigned char ucLed, ucLd2, ucLd3;      //led
unsigned char ucKey_Long;               //key
unsigned int delay=1000,pwmdelay=1000;  //tim
unsigned int  pwm=1000;                 //pwm_init
unsigned int  pwm_lcd=50;               //pwm_lcd_initvoid led_all(void);
void led_left_right(void);
void KEY_Proc(void);
void LCD_Proc(void);int main(void)
{SysTick_Config(72000);STM3210B_LCD_Init();LCD_Clear(Blue);LCD_SetBackColor(Blue);LCD_SetTextColor(White);KEY_Init();LED_Init();while(1){pwm_lcd=pwm/20;//pwm换算KEY_Proc();LCD_Proc();if(ucLd2){led_left_right();} if(ucLd3){led_all();}LED_Disp(ucLed);}
}void KEY_Proc(void)
{unsigned char ucKey_Val;ucKey_Val = KEY_Scan();if(ucKey_Val != ucKey_Long)ucKey_Long = ucKey_Val;elseucKey_Val = 0;switch(ucKey_Val){case 1:                                               // B1: 设置键if(ucState)ucState++;if(ucState==4)ucState=2;break;case 2:                                               // B2:加按键if(ucState==2)delay+=100;if(delay>2000)delay=1000;if(ucState==3){pwm+=200;if(pwm>2000)pwm=1000;    }break;case 3:                                              // B3: 减按键if(ucState==2)delay-=100;if(delay<500)delay=1000;if(ucState==3){pwm-=200;if(pwm<200)pwm=1000;   } break;}
}void LCD_Proc(void)
{if(ucState==1)                                       {sprintf((char*)pucStr, "     please !!!      ");LCD_DisplayStringLine(Line4, pucStr);ucLed=0x00;//默认关闭所有LED}if(ucState==2)                                        {sprintf((char*)pucStr, " LED_Delay: %1uMs        ", delay);LCD_DisplayStringLine(Line4, pucStr);ucLd2=1;//LED状态1标志if(ucLd2==1)ucLd3=0;//为LED状态不冲突,且保留状态(不能少)}
if(ucState==3)                                                        {sprintf((char*)pucStr, "        PWM:%02u%%        ", pwm_lcd);if(ucState == 3) LCD_SetBackColor(Red);//改变背景颜色LCD_DisplayStringLine(Line4, pucStr);LCD_SetBackColor(Blue);ucLd3=1;//LED状态2标志if(ucLd3==1)ucLd2=0;//为LED状态不冲突,且保留状态(不能少)}
}int number;
// SysTick中断处理程序
void SysTick_Handler(void)
{ulTick_ms++;
if(ucLd2)
{if(ulTick_ms%delay == 0)//delay状态1时间可调{number++;if(number==14)   number=0;  //为LED时间上变化做的变量}
}
}//函数功能,来回流水灯
int led[14]={128,64,32,16,8,4,2,1,2,4,8,16,32,64}; //led数组
void led_left_right()//LED状态1
{ucLed=led[number];
}/*
函数功能:
频率0.5hz,占空比可调(默认50%)
*/
void led_all(void) //LED状态2
{if(ucLd3){if(ulTick_ms%2000>=pwm){ucLed=0x00;}else{ucLed=0xff;}}
}

注:
实验要求按键切换保留上一次LED的位置状态,要在计数时间上加标志位,
使切换到其他状态时候计数停止。

完整工程下载

选择第8个工程

作者:江多多(在校学生)
版权所有,欢迎保留原文链接进行转载:)

不忘初心,牢记使命,励志成为一名优秀的嵌入式工程师! (我的第八篇博客)

STM32彩灯控制器相关推荐

  1. 基于VHDL的可变速彩灯控制器的设计

    使用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次.应充分利用VHDL"自顶向下"的设计优点以及层次化的设 ...

  2. c语言设计四路彩灯显示系统,四路彩灯控制器设计方案.doc

    四路彩灯控制器设计方案 1 前言 1.1序言 随着经济的发展,城市之间的灯光系统花样越来越多,用中规模集成电路设计并制作一个四路彩灯显示系统,可用于节日庆典,医院病房等多处地方,同用单片机控制相比,它 ...

  3. 单片机实验:节日彩灯控制器

    任务 设计8路节日彩灯控制器,要求在Protues中设计接口电路图,并编程实现节日彩灯闪烁方式的控制: 通过P1.0到P1.2来控制3个按键.3个按键分别对应3种彩灯闪烁方式. 彩灯闪烁方式分别为:从 ...

  4. 串灯控制盒去掉怎么接_彩灯控制器怎么接线

    展开全部 彩灯控制器电路由电源电路和彩灯控制电路组成,如图所示.62616964757a686964616fe58685e5aeb931333365653932 电源电路由整流二极管VDl-VD4.限 ...

  5. 16路彩灯控制器 FPGA-Verilog

    #16路彩灯控制器 FPGA-Verilog# 1.Verilog代码编写 1.1输入输出信号确定 题目要求多路彩灯控制器通过对应的开关按钮,能够控制多个彩灯的输出状态,组合多种变幻的灯光效果. 彩灯 ...

  6. 单片机彩灯移动实验_实验一 单片机彩灯控制器的电路设计与仿真

    实验一 单片机彩灯控制器的电路设计与仿真 一.实验要求 仿照图 1-1 在 Proteus 中绘制一个基于 89C51 的流水灯控制器电路,开关可以控制流动 的方向,拨码开关可以调整流动的快慢. 二. ...

  7. 【分享】基于单片机嵌入式的家用智能节水淋浴控制器的设计-基于单片机的电子贺卡控制系统设计-基于单片机的倒计时牌控制系统设计-基于单片机的彩灯控制器系统设计-多模式彩灯-单片机的八路路数字电压表控制设计

    1334基于单片机嵌入式的家用智能节水淋浴控制器的设计-全套毕设课设设计资料 三个ds18b20分别采集进水口热水  冷水 和温水的水温,然后分别显示出来,按下开始按键,系统初始化,自动设置出水温度为 ...

  8. 彩灯控制器课程设计vhdl_VHDL花样彩灯控制器的设计

    10 分 得 分 一.实验名称 实验 8 :花样彩灯控制器的设计 二.任务及要求 [基本部分] 5 分 1 .在 QuartusII 平台上,采用文本输入设计方法,通过编写 VHDL 语言程序,设计一 ...

  9. 单片机C语言节日彩灯,单片机c语言节日彩灯控制器设计.docx

    单片机c语言节日彩灯控制器设计 湖南涉外经济学院课程设计报告课程名称:单片机原理及应用报告题目:节日彩灯控制器的设计学生姓名:所在学院:信息科学与工程学院专业班级:电子信息工程1102班学生学号:指导 ...

最新文章

  1. 技术图文:如何解决 DAO 抛出的 80040154 错误?
  2. php显示网卡信息,linux如何查看网卡信息
  3. Rsync数据同步服务
  4. [PHP]php发布和调用Webservice接口的案例
  5. SAP推出iPhone手机端企业智能管理应用
  6. 计算某一段程序消耗的内存和时间【C#】
  7. Flutter 核心原理与混合开发模式
  8. ubuntu16下vue-cli安装
  9. Python的time模块和datatime模块
  10. 2019如何转换2010_9102年,你还不知道PPT怎么转换成视频吗?小心落伍了
  11. 爬虫神器:一条命令下载《复仇者联盟3:无限战争》
  12. C#中哈希表(HashTable)的用法详解
  13. 几十行python代码构建一个前后端分离的目标检测演示网站,代码开源
  14. java拼装树_java 数据拼装成树结构
  15. 进程间的通信方式有哪些?
  16. 困境下的SEO,站长如何自渡?
  17. 2022快手春节跳一跳红包到 怎么获得66元红包?
  18. 如何把本机的文件共享到VMware虚拟机
  19. arcgis怎么关联excel表_arcgis中如何跟excel连接?
  20. 在JSRUN写一段王者荣耀段位代码

热门文章

  1. python和c语言哪个更难学深_c语言和python先学哪个比较简单
  2. FXS与FXO接口的区别及应用
  3. 【转】Robot Framework作者建议如何选择自动化测试框架
  4. HttpClient Get请求带参数
  5. C#加壳工具做代码加密保护
  6. 上海往事之2015-07股市风云录
  7. 【Matlab学习手记】ELM分类
  8. Nginx配置https访问
  9. TM1637数码管显示STC51单片机驱动程序
  10. MySQL 字符类型大小