久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51單片機(jī)PWM-呼吸燈程序

作者:寒竹子   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月15日   【字體:

程序是在51hei單片機(jī)開發(fā)板上面做的,燈接在P0^0上,程序可以通用,到你自己的開發(fā)板或者是自己搭的電路也行.

/**
  ******************************************************************************
  *file    :     main.c
  *author  :     xr
  *date    :     2014年4月15日17:38:07 - 2014年4月15日 18:47:29
  *version :     V1.2.3
  *brief   :     PWM應(yīng)用-控制小燈的亮度-實(shí)現(xiàn)傳說中的呼吸燈效果  單片機(jī)STC89C52RC MCU 晶振 11.0592MHZ
  ******************************************************************************
  */
#include <reg52.h>

sbit ADDR0 = P1^0;   //如果是自己搭的電路,可以無視下面這幾行
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

sbit PWMOUTLED = P0^0;//用于PWM控制輸出

unsigned char heighHR0, heighLR0;//PWM一個(gè)周期中高電平高字節(jié)和低字節(jié)重載值
unsigned char lowHR0, lowLR0;//PWM一個(gè)機(jī)器周期中低電平時(shí)高字節(jié)和低字節(jié)重載值

void Initial();
void ConfigPWM(unsigned int fr, unsigned char dc);
void ClosePWM();

void main(void)
{
unsigned int i;
Initial();

while (1)     //呼吸燈效果
{
//LED亮->暗
ConfigPWM(100, 10);//配置PWM頻率為100HZ,占空比為10%
for (i = 0; i < 30000; i++); //軟件測試延時(shí)大約76ms
ConfigPWM(100, 20);//配置PWM頻率為100HZ,占空比為20%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 30);//配置PWM頻率為100HZ,占空比為30%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 40);//配置PWM頻率為100HZ,占空比為40%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 50);//配置PWM頻率為100HZ,占空比為50%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 60);//配置PWM頻率為100HZ,占空比為60%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 70);//配置PWM頻率為100HZ,占空比為70%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 80);//配置PWM頻率為100HZ,占空比為80%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 90);//配置PWM頻率為100HZ,占空比為90%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 95);//配置PWM頻率為100HZ,占空比為95%
for (i = 0; i < 30000; i++);
//LED暗->亮
ConfigPWM(100, 90);//配置PWM頻率為100HZ,占空比為10%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 80);//配置PWM頻率為100HZ,占空比為20%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 70);//配置PWM頻率為100HZ,占空比為30%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 60);//配置PWM頻率為100HZ,占空比為40%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 50);//配置PWM頻率為100HZ,占空比為50%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 40);//配置PWM頻率為100HZ,占空比為60%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 30);//配置PWM頻率為100HZ,占空比為70%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 20);//配置PWM頻率為100HZ,占空比為80%
for (i = 0; i < 30000; i++);
ConfigPWM(100, 10);//配置PWM頻率為100HZ,占空比為90%
for (i = 0; i < 30000; i++);
ClosePWM();
}
}

/*初始化*/
void Initial()
{
ADDR3 = 1;
ENLED = 0;//選擇U3,即LED
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//LEDS6=0
}

/*使用T0配置PWM高低電平的頻率*/
void ConfigPWM(unsigned int fr, unsigned char dc)  //fr為PWM的頻率,100HZ無閃爍,dc是PWM的占空比(高電平占的百分比)
{
unsigned long tmp;
unsigned int heigh, low;

tmp = 11059200/12;//一個(gè)機(jī)器周期頻率
tmp = tmp / fr;  //一個(gè)機(jī)器周期中fr的頻率所需計(jì)數(shù)值(包括高電平和低電平)
heigh = (tmp * dc) / 100;//高電平占dc%,所需計(jì)數(shù)值
low   = tmp - heigh;//低電平所需計(jì)數(shù)值
heigh = 65536-heigh;//高電平計(jì)數(shù)初值
low   = 65536-low;//低電平計(jì)數(shù)初值

heighHR0 = (unsigned char)(heigh >> 8);//高電平裝入初值的高字節(jié)
heighLR0 = (unsigned char)heigh;    //高電平裝入初值的低字節(jié)
lowHR0   = (unsigned char)(low >> 8);  //低電平裝入初值的高字節(jié)
lowLR0   = (unsigned char)low;    //低電平裝入初值的低字節(jié)

TMOD &= 0xF0;//清零T0控制位
TMOD |= 0x01;//設(shè)定T0工作方式1,16位可設(shè)定時(shí)器
TH0 = heighHR0;
TL0 = heighLR0;//裝入高電平計(jì)數(shù)初值
PWMOUTLED = 1;//開始時(shí)PWM輸出高電平
TR0 = 1;
ET0 = 1;
EA  = 1;
}

/*關(guān)閉PWM*/
void ClosePWM()
{
TR0 = 0;//關(guān)閉Timer0
ET0 = 0;//關(guān)閉T0中斷
PWMOUTLED = 1;//PWM輸出高電平
}

/*定時(shí)器T0中斷服務(wù)*/
void Timer0_ISP() interrupt 1
{
//判斷PWM現(xiàn)在輸出的是高電平還是低電平
  if (PWMOUTLED)
  {
   TH0 = lowHR0;
TL0 = lowLR0;//裝載低電平計(jì)數(shù)初值
PWMOUTLED = 0;//PWM輸出低電平
  }
  else
  {
   TH0 = heighHR0;
TL0 = heighLR0;//重裝裝載高電平計(jì)數(shù)初值
PWMOUTLED = 1;//PWM輸出高電平
  }
}

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 中文字幕一区二区三区不卡在线 | 国产99视频精品免费视频7 | h视频在线播放 | 精品久久久一区 | 欧美日韩精品久久久免费观看 | 成人妇女免费播放久久久 | 一级毛片免费看 | 亚洲一级黄色 | 亚洲精品久久久一区二区三区 | 99精品欧美一区二区三区 | 在线国产小视频 | 午夜影院视频 | 亚洲精品视频在线 | 日韩高清一区 | 国产精品久久久久久久久久妞妞 | 国产成人精品a视频一区www | 成人免费在线网 | 天天干天天干 | 中文字幕一区二区三区精彩视频 | 欧美freesex黑人又粗又大 | 日韩一区二区在线看 | 日本精品国产 | 亚洲午夜精品一区二区三区 | 国产乱码精品一区二区三区中文 | 久久精品国产久精国产 | av手机在线 | 欧美 日韩 国产 成人 在线 91 | 日韩成人久久 | 中文字幕一区二区三区在线观看 | 黄色一级视频 | 国产中文视频 | 亚洲一二三在线 | www成人免费视频 | 国产农村妇女精品一区 | 国产精品欧美一区二区 | 日韩欧美手机在线 | 免费午夜剧场 | 国产精品黄视频 | 久久精品色欧美aⅴ一区二区 | 亚洲性人人天天夜夜摸 | 欧美在线一区二区三区四区 |