標(biāo)題:
關(guān)于pic16f1828單片機(jī)制作的呼吸燈,但是漸亮和漸暗過(guò)程效果不順暢
[打印本頁(yè)]
作者:
淺、念
時(shí)間:
2018-8-7 16:57
標(biāo)題:
關(guān)于pic16f1828單片機(jī)制作的呼吸燈,但是漸亮和漸暗過(guò)程效果不順暢
新手剛接觸單片機(jī),用的是PIC16f1828芯片,參考著做了個(gè)呼吸燈,用PWM輸出,在中斷部分的程序沒(méi)看明白,可以幫我解釋下嗎?而且在燈漸亮和漸暗過(guò)程中不是很流暢,在暗亮之間的停頓時(shí)間過(guò)短。大家能幫我看看該怎么調(diào)整嗎?如果配置完P(guān)WM后不用中斷,想讓占空比通過(guò)逐漸增加和減少來(lái)實(shí)現(xiàn)漸亮到漸滅來(lái)實(shí)現(xiàn)呼吸燈功能又該怎么寫?謝謝以下是我參考所寫的程序:
#include <pic16f1828.h>
#define uint8 unsigned char
#define uint16 unsigned int
uint8 gDutycount = 0;
uint16 count=0;
const char SINETABLE[38]={50,55,60,65,70,75,80,85,90,95,100,95,90,85,80,75,70,60,60,55,50,45,40,35,30,25,20,15,10,5,10,15,20,25,30,35,40,45};
void PWM_Init(void)
{
OSCCONbits.IRCF=1110;//8M晶振
CCPR1L=0x32;
CCP1CON=0b00001100;
TRISC5=0;
}
void Time2_Init(void)
{
T2CON=0x05;
PR2=99;
TMR2IF=0;
GIE=1;
PEIE=1;
TMR2IE=1;
}
void main(void)
{
PWM_Init();
Time2_Init();
while(1)
{
}
}
void interrupt Tmer2_isr(void)
{
if(TMR2IF)
{
++count;
if(count==35)
{
++gDutycount;
if(gDutycount==75)
{
gDutycount=0;
}
CCPR1L=SINETABLE[gDutycount];
count=0;
}
TMR2IF=0;
}
}
復(fù)制代碼
作者:
淺、念
時(shí)間:
2018-8-9 16:39
這是用一個(gè)數(shù)組按照5%的占空比的關(guān)系列出來(lái)的,慢慢調(diào)節(jié)亮度時(shí)候回感覺那種跳變的,程序該怎么修改才能讓占空比的變化是緩慢進(jìn)行的而不是階梯性跳變的
作者:
zjjhtony
時(shí)間:
2018-8-10 10:15
<blockquote>
復(fù)制代碼
1)pic16F1828的CCP1的PWM輸出可以設(shè)置time2,time4,time6定時(shí)器。
CCPTMRS0=0; //選擇CCP1設(shè)置為time2定時(shí)器
2)time2已經(jīng)用于CCP1定時(shí)器,不能在用于普通的定時(shí)器。
3)以上程序,經(jīng)過(guò)proteus仿真,可以看如附件視頻。
QQ視頻20180810101052.rar
2018-8-10 10:14 上傳
點(diǎn)擊文件名下載附件
5.42 MB, 下載次數(shù): 26
作者:
Sendhily
時(shí)間:
2019-1-15 19:17
樓主有仿真么
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1