自动感光调节LED灯亮度C语言程序,单片机PWM调节LED灯亮度

刚搞完飞思卡尔智能车,昨天我一起做车的搭档跑来跟我说魏老师(我们系的前主任,不知道他们怎么认识的....)叫他帮忙做个可通过无线遥控调节LED灯亮度的设计方案,问我有没有兴趣做做,主要是魏老师也是受他以前的老同学(合工大的....)所托,他自己估计没怎么搞过这个,开始自己不敢接,很担心自己不会做,自己几斤几两自己还不清楚,呵呵,后来实在央求不过,算了,做就做吧,还以为是什么大项目...了解了才知道,我能需要做的很简单,只要通过无线按键控制增减调节灯得亮度,甚至只要通过按键实现一定范围变化的模拟变化量输出就OK了,回来上网搜索了一些资料,昨晚花了一晚上的时间写了一个很简单的通过单片机PWM调节LED灯亮度的代码,估计我想通过调节灯得亮度一般都是通过PWM来调节的,(网上一般都是这样的设计)

上午又写了个,主要是感觉昨晚的那个不怎么好,而且控制的不够精准,两个程序都贴出来吧,主要大家一起学习!这两个程序都是经过我亲自调试过!下载到自己使用只需要修改相关的控制引脚就OK了.......

昨晚的程序如下:

// PWM 控制 LED 灯渐亮渐灭程序

// 晶振为12M

// 利用定时器控制产生占空比可变的 PWM 波

// 按K1,PWM值增加,则占空比减小,LED 灯渐暗。

// 按K2,PWM值减小,则占空比增加,LED 灯渐亮。

// 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

#include < reg51.h >

sbit K1 =P3^0

; //增加键

sbit K2 =P3^1 ;

sbit P10=P1^0

; //减少键

sbit BEEP =P3^7

; //蜂鸣器

unsigned char PWM=0x7f; //赋初值

void Beep();

void delayms(unsigned char ms);

void delay(unsigned char t);

void main()

{

/初始化/

K1=1;

K2=1;

TMOD=0x21;

TH0=0xfc; //1ms延时常数

TL0=0x18; //频率调节

TH1=PWM; //脉宽调节

TL1=0;

EA=1;

ET0=1;

ET1=1; TR0=1;

/主循环// while(1)

{

if(K1==0)//递增按键考虑消抖..

{

delayms(20);

if(K1==0)

{ if(PWM==255)

{ PWM=255;

Beep(); }

else

PWM++;

}

}

if(K2==0)//递减按键

{

delayms(20);

if(K2==0)

{ if(PWM==0)

{ PWM=0;

Beep(); }

else PWM--

;

}

}

}

}

// 定时器0中断服务程序.

void timer0() interrupt 1

{

TH0=0xfc

;

TL0=0x18

;

TH1=PWM

;//定时器自动重装值由PWM提供

TR1=1

;

P10=0

; //启动输出

}

// 定时器1中断服务程序

void timer1() interrupt 3

{

TR1=0;

P10=1

; //结束输出

}

//蜂鸣器子程序

void

Beep() {

unsigned char i ;

for (i=0 ;i<100 ;i++)

{

delay(200) ;

BEEP=!BEEP

; //Beep取反

}

BEEP=1

; //关闭蜂鸣器

delayms(200);

}

// 延时子程序

void delay(unsigned char t)

{

while(t--) ;

}

// 延时子程序

void delayms(unsigned char ms)

{

unsigned

char i ;

while(ms--)

{

for(i = 0 ; i < 120 ; i++) ;

}

}

上午的程序,也是从网上下修改修改的,通过示波器可以很明显的观察到PWM占空比的变化

#include

 //模拟PWM输出控制灯的10个亮度级

unsigned int scale;

sbit K1 =P3^0

; //增加键

sbit K2 =P3^1 ;

sbit P11=P1^2 ;

sbit P10=P1^0

; //减少键

sbit BEEP =P3^7

; //蜂鸣器

unsigned char PWM=20; //赋初值 //占空比控制变量

void Beep();

void delayms(unsigned char ms);

void delay(unsigned char t);

void main(void) // 主程序

{

TMOD=0x02; //定时器0,工作模式2(0000,0010),8位定时模式

TH0=0x06; //写入预置初值6到定时器0,使250微秒溢出一次(12MHz)

TL0=0x06; //写入预置值

TR0=1; //启动定时器

ET0=1; //允许定时器0中断

EA=1; //允许总中断

while

(1) //无限循环,实际应用中,这里是做主要工作

{

if(K1==0)//递增按键

{

delayms(100);

if(K1==0)

{ if(scale==40)

{ //PWM=255;

Beep(); }

else scale++;

;

}

}

if(K2==0)//递减按键

{

delayms(100);

if(K2==0)

{ if(scale==0)

{ //PWM=0;

Beep(); }

else scale--

;

}

}

}

}

void timer0(void) interrupt 1 //定时器0中断服务程序

{

static

unsigned int n ; //n用来保存当前时间在一秒中的比例位置

n++; //每250微秒增加1

if(n==40) //1秒的时钟周期

{

n=0; //使n=0,开始新的PWM周期

P10=0; //使LED灯亮

}

if(scale==n) //按照当前占空比切换输出为高电平

P10=1; //使LED灯灭

}

//程序中从tt=0开始到scale为低电平,从scale开始到n=10为高电平,

//由于scale是变量,所以改变scale就可以改变占空比。

/下面的程序同上面一样///

//蜂鸣器子程序

void

Beep() {

unsigned char i ;

for (i=0 ;i<100 ;i++)

{

delay(200) ;

BEEP=!BEEP

; //Beep取反

}

BEEP=1

; //关闭蜂鸣器

delayms(200);

}

// 延时子程序

void delay(unsigned char t)

{

while(t--) ;

}

// 延时子程序

void delayms(unsigned char ms)

{

unsigned

char i ;

while(ms--)

{

for(i = 0 ; i < 120 ; i++) ;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python找到字符中空格所在的位置_Python 查找字符在字符串中的位置示例效果

Python 查找字符在字符串中的位置实例 下面为大家分享一篇Python 查找字符在字符串中的位置实例&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。一起过来看看吧 str_1wo shi yi zhi da da niu char_1i nPosstr_1.index(char_1) print(nPos) 运行结果&#xf…

ztree 自定义参数_Ztree节点前加上两个自定义按钮

前言&#xff1a;在我的权限管理模块遇到了给某些角色加权限的问题&#xff0c;这时就需要实现将每个模块做成树&#xff0c;在每个节点前加上预览和编辑的按钮&#xff0c;这样可以根据数据库的某个字段给每个角色赋权限。必须必须吐槽的是&#xff0c;这部分的功能在网上没找…

xilinx c语言编程,使用Xilinx SDSoc在Xilinx zcu102开发板上编程HelloWorld

关于Xilinx SDSoc的介绍我就不再复述了&#xff0c;我理解的也不一定准确&#xff0c;可以阅读官方文档了解SDSoc&#xff0c;你可以把它理解为一个集成开发环境 (IDE)&#xff0c;通过SDSoc我们能够简单快速的对Xilinx的开发板进行编程&#xff0c;不用像传统的嵌入式编程那样…

python画图小猪佩奇_吊炸天!Python 20秒画出小猪佩奇

原标题&#xff1a;吊炸天&#xff01;Python 20秒画出小猪佩奇 今年社交平台上的带货女王是谁?范冰冰?杨幂?Angelababy?不&#xff0c;是猪猪女孩小猪佩奇。 小猪佩奇在构图基本是各种曲线&#xff0c;类抛物线、类圆、类椭圆、类二次贝塞尔曲线。因为画图画曲线不是Pytho…

win10c语言错误,win10打开程序提示错误状态0xc0000020的原因和解决方法

win10系统打开程序弹出“c:\xx\xxx.dll没有被指定在windows上运行&#xff0c;或者它包含错误。请尝试使用原始安装介质重新安装程序&#xff0c;或联系你的系统管理员或软件供应商以获取支持。错误状态0xc0000020 ”的提示&#xff0c;这到底是什么情况&#xff1f;这 一般是由…

poll和死锁_计算机基础知识

转自&#xff1a;http://blog.csdn.net/qq_15437629/article/details/52388685在这里只做备份计算机网络TCP/IP模型TCP/IP协议集的分层实施:为什么要给网络划分层次&#xff1f;(1)各层之间相对独立&#xff0c;每层都可以用最合适的技术实现&#xff1b;(2)各层只需知道通过层…

matlab 向量_Matlab基础入门

感谢大家观看你所做的事情,也行暂时看不到成功,但不要灰心,你并不是没有成长,而是在扎根.前情提要本篇文章将会分多次发放(原因内容太长,导致写的是否微信卡崩了&#x1f643;), 目的在于从基础的Matlab的教程开始慢慢的深入. 如果大家看到该文章有些格式上的错误或内容上的错误…

2017蓝桥c语言真题,[蓝桥杯][2017年第八届真题]发现环 (C语言代码)------------C语言——菜鸟级...

解题思路:并查集 找环 未成环之前 看作一个树用并查集找到环 两点 找的同时 建立一个 并查集树(自己瞎起的)找到两点后从两个点分别回到并查集的根节点经过的点标记上 这两个点单独经过的点(交点处除外)都是环上点原文 欢迎访问 我的博客注意事项:参考代码:#include#include#d…

python34.dll_python34.dll下载

缺少python34.dll&#xff1f;python34.dll文件是存放在电脑系统中很重要的一个文件&#xff0c;是电脑程序正常运行的重要支持&#xff0c;大家要是发现这个文件缺少了就要立马重新下载一个&#xff0c;欢迎有需要的朋友来当易网下载。dll文件特点推广模块式体系结构DLL 有助于…

python全文检索引擎_Python中使用haystack实现django全文检索搜索引擎功能

{% if query %}搜索结果如下&#xff1a; {% for result in page.object_list %} {{ result.object.gName }} {% empty %}啥也没找到 {% endfor %} {% if page.has_previous or page.has_next %}{% if page.has_previous %}{% endif %} 上一页{% if page.has_previous %}{% end…

c语言音像图书管理系统设计,c语言--图书管理系统

(1)创建音像图书库。此图书库中有图书&#xff0c;VCD&#xff0c;录像带3类&#xff0c;而每个音像图书的信息均包括编号(用B**,V**,R**分别表示图书&#xff0c;VCD和录像带的编号)&#xff0c;名称&#xff0c;原价&#xff0c;原数量及剩余数量。(2)租借音像图书。在文件&q…

python环境配置opencv_【Python】python2.7 安装配置OpenCV2

原博文 2017-05-23 22:28 − 环境&#xff1a;Ubuntu16.04 anaconda Python2.7 opencv2.4.13 安装opencv后 import cv2 遇到错误信息&#xff1a; No module named cv2 安装opencv时make的过程中会出现文件“cv2.so”&#xff0c;它是连接OpenCV和... 相关推荐 2019-12-04 13:5…

流水灯c语言程序延时失败,用c8051f340做控制流水灯实验,程序会卡死在延时函数中 ,只要在那加延时函数程序就只能跑到那,代码如下...

满意答案lohboon2016.07.31采纳率&#xff1a;52% 等级&#xff1a;7已帮助&#xff1a;1159人#include "reg52.h"#define uint unsigned int#define uchar unsigned charsbit K1 P3^2; //独立按键void Delayms(uint x){ uint i,j; for(ix;i>0;i--) for(j100;…

杨辉三角python代码 不要括号_关于杨辉三角python代码的问题

匿名用户1级2017-09-02 回答杨辉三角&#xff0c;是二项式系数在三角形中的一种几何排列。前提&#xff1a;每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称&#xff0c;由1开始逐渐变大。第n行的数字有n项。第n行数字和为2n-1。第n行的m个数可表示为 C(n-1…

python 双向链表_Python实现双向链表

打开Python开发工具IDLE&#xff0c;新建‘DoubleLinkedList.py’文件&#xff0c;并写代码如下; class Node: def __init__(self,item): self.item item self.next None self.pre None class DoubleLinkedList: def __init__(self): self.__head None def add(self,item):…

android自定义view生命周期,android基础之自定义view

一、Custom View1、view的继承关系view继承关系.png2、Android 如何绘制试图层次当activity获取焦点时&#xff0c;它必须提供layout层次的根节点&#xff0c;然后android 系统开始视图的绘制过程。绘制是从layout的根节点开始的&#xff0c;按照从上往下的顺序&#xff0c;父元…

python网课期中答案_中国大学python编程答案网课MOOC考试期末慕课答案

简述班主任的职责。创新需要提出问题&#xff0c;问题产生于()。A、好奇B、质疑C、想象D、矛盾“玄米色”的炒麦香属于()A.茶类香B.品种香C.地域香D.附加香已知某实心小球是由下表中所列塑料材料中的一种制成的&#xff0e;塑料名称密度(kg&#xff0f;m3〕聚甲基戊烯0.8103聚丙…

python import如何使用_Python如何import其它.py文件及其函数

​ 如上图所示&#xff0c;我想在test_1.py文件中import我在lstm_1.py中定义的LstmParam和 LstmNetwork。我直接采用的是最简单的引用方法&#xff1a;from lstm_1 import LstmParam, LstmNetwork&#xff0c;但是很明显报错了&#xff0c;不能直接这样引用。因为&#xff0c;编…

android 数据库 字节数组,Android上的GreenDAO:字节数组作为主键/构建包含字节数组属性Where子句的查询...

关于字节[]又名在greendao BLOB&#xff1a;看着de.greenrobot.dao.query.WhereCondition.PropertyCondition.checkValueForType条件01目前不支持&#xff0c;因为如果值的类型为byte[]&#xff0c;以下几行将始终引发异常。if (value ! null && value.getClass().isAr…

艾为数字ic面试题_每日学习:数字后端面试100问(2019全新版)

关注并标星大同学吧每天1次&#xff0c;打卡学习积累1个新知识&#xff0c;增1分职场底气作者称谓&#xff1a;Tao涛个人介绍&#xff1a;摸爬滚打多年的数字后端工程师微信公众号&#xff1a;数字后端IC芯片设计半导体知识分享第29期技能升级&#xff0c;从这里开始最近项目刚…