当前位置:首页 > 单片机 > 单片机
[导读]使用定时器T0产生PWM方波,用按键调整占空比,20级可调控制led灯的亮度等级.C代码#include"my51.h"#include"timer0.h"#definegrading20//亮度20级变化sbitkeyS3=P3^5;//按键调整占空比,PWM_keyChange++sbitkeyS4=P3^6;

使用定时器T0产生PWM方波,

用按键调整占空比,20级可调

控制led灯的亮度等级.

C代码

#include"my51.h"

#include"timer0.h"

#definegrading20//亮度20级变化

sbitkeyS3=P3^5;//按键调整占空比,PWM_keyChange++

sbitkeyS4=P3^6;//PWM_keyChange--

u8PWM_keyChange=10;//初值,按键调整在1~20之间变化

//占空比PWM_keyChange/grading

voidT0_work()//本函数由T0定时器中断函数调用

{

if(timeMultiple1Flag)

{

led=off(7);//关闭7号灯

timeMultiple1Flag=0;//清定时器复用置位标志

}

if(timeMultiple2Flag)

{

led=on(7);//打开7号灯

timeMultiple2Flag=0;//清定时器复用置位标志

}

}

voidmain()//测试

{

u8keyFlag=1;//程序中没有消抖处理,只是简易的按键进出自锁标志

led0=ledon;//先打开0号灯,用于和7号灯对比亮度

initT0(1,10,grading);//1毫秒的基本定时,亮的时间1*10毫秒,暗1*(grading-10)毫秒

while(1)

{

if(0==keyS3)

{

if(keyFlag)//防止一次按键中多次执行

{

keyFlag=0;//清标志,类似同步锁

if(++PWM_keyChange>grading)

{

PWM_keyChange=grading;//占空比最大100%

}

initT0(1,PWM_keyChange,grading);

}

}

elseif(0==keyS4)

{

if(keyFlag)

{

keyFlag=0;

if(0==--PWM_keyChange)//占空比减小

{

PWM_keyChange=1;//最小占空比1/20

}

initT0(1,PWM_keyChange,grading);//占空比减小

}

}

else

{

keyFlag=1;//按键锁释放标志,下一次按键时允许调整占空比

}

}

}

C代码

#ifndef_MY51_H

#define_MY51_H

#include

//#include

#include

#include

#include"mytype.h"

#ifndef_51LED_

#define_51LED_

#defineledP1//P1总线连8个led灯,灯连573锁存器,P1置低电平点亮

#defineLEDled

#defineON(x)P1&(~(1<<(x)))//打开某个灯,开多个灯用ON(m)&ON(n)

#defineOFF(x)P1|(1<<(x))//关闭某个灯,关多个灯用OFF(m)|OFF(n)

#defineon(x)ON(x)//包含大小写

#defineoff(x)OFF(x)

#defineledon0//某个灯,打开

#defineledoff1//某个灯,关闭

sbitled0=P1^0;

sbitled1=P1^1;

sbitled2=P1^2;

sbitled3=P1^3;

sbitled4=P1^4;

sbitled5=P1^5;

sbitled6=P1^6;

sbitled7=P1^7;

sbitledLock=P2^5;//锁定当前8个led的状态,0锁定,1不锁定

#endif

/*************二进制输入宏****************************/

#ifndef_LongToBin_

#defineLongToBin(n)

(

((n>>21)&0x80)|

((n>>18)&0x40)|

((n>>15)&0x20)|

((n>>12)&0x10)|

((n>>9)&0x08)|

((n>>6)&0x04)|

((n>>3)&0x02)|

((n ) & 0x01)

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

51单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对51单片机的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 51单片机

在嵌入式系统开发中,单片机是不可或缺的重要组成部分。其中,STM32单片机和51单片机是两种常见的单片机芯片。本文将对比分析这两种单片机的区别,并探讨STM32单片机的优势。

关键字: stm32单片 51单片机

51单片机是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了许多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基...

关键字: 51单片机 串行通信

Holtek持续扩展Touch A/D Flash MCU产品,新增系列成员BS86C12CA,延续优良抗干扰特性,提供丰富的定时器资源并支持LXT振荡器。引脚与BS86C08C及BS86D12C相容,具高性价比,适合需...

关键字: MCU LXT振荡器 定时器

采用MCU(微控制器单元)模块实现定时器的设计是通过利用MCU内部的定时器/计数器资源来实现的。定时器是MCU中的一个重要功能模块,它可以在特定的时间间隔内执行特定的操作,如产生中断、更新定时器值、触发其他设备等。

关键字: mcu模块 定时器

51单片机是一种常见的微控制器,它具有串行通信接口(Serial Communication Interface,SCI)。通过串口通信接口,51单片机可以与其他设备或系统进行串行通信,实现数据传输和控制。

关键字: 51单片机 串口通信

在这篇文章中,小编将对pwm的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: pwm 脉冲宽度调制

在下述的内容中,小编将会对PWM控制器的相关消息予以报道,如果PWM控制器是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: pwm 控制器 pwm控制器

单片机的外设是指与单片机核心处理部分相连的附加硬件模块,它们能够扩展单片机的功能和能力。这些外设包括各种模块和接口,用于处理特定的任务或实现特定的功能。

关键字: 单片机 定时器

Pic单片机和51单片机是两种应用广泛的微控制器,它们各自具有不同的特点和优势,选择哪种单片机取决于具体应用需求。下面将对Pic单片机和51单片机进行详细的介绍和对比。

关键字: PIC单片机 51单片机 单片机
关闭
关闭