STM32彩灯控制器
彩灯控制器程序设计
- 完整工程下载
#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的位置状态,要在计数时间上加标志位,
使切换到其他状态时候计数停止。
完整工程下载
作者:江多多(在校学生)
版权所有,欢迎保留原文链接进行转载:)
不忘初心,牢记使命,励志成为一名优秀的嵌入式工程师! (我的第八篇博客)
STM32彩灯控制器相关推荐
- 基于VHDL的可变速彩灯控制器的设计
使用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次.应充分利用VHDL"自顶向下"的设计优点以及层次化的设 ...
- c语言设计四路彩灯显示系统,四路彩灯控制器设计方案.doc
四路彩灯控制器设计方案 1 前言 1.1序言 随着经济的发展,城市之间的灯光系统花样越来越多,用中规模集成电路设计并制作一个四路彩灯显示系统,可用于节日庆典,医院病房等多处地方,同用单片机控制相比,它 ...
- 单片机实验:节日彩灯控制器
任务 设计8路节日彩灯控制器,要求在Protues中设计接口电路图,并编程实现节日彩灯闪烁方式的控制: 通过P1.0到P1.2来控制3个按键.3个按键分别对应3种彩灯闪烁方式. 彩灯闪烁方式分别为:从 ...
- 串灯控制盒去掉怎么接_彩灯控制器怎么接线
展开全部 彩灯控制器电路由电源电路和彩灯控制电路组成,如图所示.62616964757a686964616fe58685e5aeb931333365653932 电源电路由整流二极管VDl-VD4.限 ...
- 16路彩灯控制器 FPGA-Verilog
#16路彩灯控制器 FPGA-Verilog# 1.Verilog代码编写 1.1输入输出信号确定 题目要求多路彩灯控制器通过对应的开关按钮,能够控制多个彩灯的输出状态,组合多种变幻的灯光效果. 彩灯 ...
- 单片机彩灯移动实验_实验一 单片机彩灯控制器的电路设计与仿真
实验一 单片机彩灯控制器的电路设计与仿真 一.实验要求 仿照图 1-1 在 Proteus 中绘制一个基于 89C51 的流水灯控制器电路,开关可以控制流动 的方向,拨码开关可以调整流动的快慢. 二. ...
- 【分享】基于单片机嵌入式的家用智能节水淋浴控制器的设计-基于单片机的电子贺卡控制系统设计-基于单片机的倒计时牌控制系统设计-基于单片机的彩灯控制器系统设计-多模式彩灯-单片机的八路路数字电压表控制设计
1334基于单片机嵌入式的家用智能节水淋浴控制器的设计-全套毕设课设设计资料 三个ds18b20分别采集进水口热水 冷水 和温水的水温,然后分别显示出来,按下开始按键,系统初始化,自动设置出水温度为 ...
- 彩灯控制器课程设计vhdl_VHDL花样彩灯控制器的设计
10 分 得 分 一.实验名称 实验 8 :花样彩灯控制器的设计 二.任务及要求 [基本部分] 5 分 1 .在 QuartusII 平台上,采用文本输入设计方法,通过编写 VHDL 语言程序,设计一 ...
- 单片机C语言节日彩灯,单片机c语言节日彩灯控制器设计.docx
单片机c语言节日彩灯控制器设计 湖南涉外经济学院课程设计报告课程名称:单片机原理及应用报告题目:节日彩灯控制器的设计学生姓名:所在学院:信息科学与工程学院专业班级:电子信息工程1102班学生学号:指导 ...
最新文章
- 技术图文:如何解决 DAO 抛出的 80040154 错误?
- php显示网卡信息,linux如何查看网卡信息
- Rsync数据同步服务
- [PHP]php发布和调用Webservice接口的案例
- SAP推出iPhone手机端企业智能管理应用
- 计算某一段程序消耗的内存和时间【C#】
- Flutter 核心原理与混合开发模式
- ubuntu16下vue-cli安装
- Python的time模块和datatime模块
- 2019如何转换2010_9102年,你还不知道PPT怎么转换成视频吗?小心落伍了
- 爬虫神器:一条命令下载《复仇者联盟3:无限战争》
- C#中哈希表(HashTable)的用法详解
- 几十行python代码构建一个前后端分离的目标检测演示网站,代码开源
- java拼装树_java 数据拼装成树结构
- 进程间的通信方式有哪些?
- 困境下的SEO,站长如何自渡?
- 2022快手春节跳一跳红包到 怎么获得66元红包?
- 如何把本机的文件共享到VMware虚拟机
- arcgis怎么关联excel表_arcgis中如何跟excel连接?
- 在JSRUN写一段王者荣耀段位代码