久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
pwm頻率占空比調節
[打印本頁]
作者:
賀蘭小胖
時間:
2017-5-29 23:53
標題:
pwm頻率占空比調節
//------------------------------------------------------------------------------------
//程序功能簡介:本程序產生15HZ~~~50KHZ的方波,并且實現頻率和脈寬的獨立調制,即可
//在改變頻率的同時不改變脈寬,再改變脈寬的同時不改變頻率;同時設置
//兩個調節步長------在KEY鍵按下時,粗調,沒有按下時,細調;
//程序思路: 本程序用到兩個定時器------定時器0和定時器1,其中定時器0工作在定時方式下,
//決定方波的頻率;定時器1,同樣工作在定時方式下,用于設定脈寬;
//------------------------------------------------------------------------------------
#include <reg52.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
#define ALL 65536 //定時器工作方式1時,最大基數長度 65536;
#define F_osc 12000000 //晶振頻率12M;
sbit KEY_F_UP=P0^2; //頻率上調按鈕;
sbit KEY_F_DOWN=P0^3; //頻率下調按鈕;
sbit KEY_W_UP=P0^4; //脈寬上調按鈕;
sbit KEY_W_DOWN=P0^5; //脈寬下調按鈕;
sbit KEY=P0^6; //粗細調節按鈕-----按下為粗調,否則為細調;
sbit OUTPUT=P1^0; //波形輸出;
uchar TIMER0_H,TIMER0_L,TIMER1_H,TIMER1_L;//定時器0和定時器1的初值設置;
uchar PERCENT=50; //初始占空比;
uchar FLAG_F=0,FLAG_W=0;//頻率調節標志和脈寬調制標志;
uint FREQ=50000; //初始頻率;
float temp; //臨時全局變量,用于數據傳遞;
void delay(uchar t); //延時函數,用于按鍵去抖;
void init(); //初始化函數,用于定時器的初始化;
void calculate_F();
//頻率計算函數,當頻率變化,計算出定時器0初值;
void calculate_W();
//脈寬計算函數,脈寬變化時,計算出定時器1初值;
void key_scan(); //按鍵掃描函數;
void timer0(); //定時器0中斷函數;
void timer1(); //定時器1中斷函數;
void delay(uchar t)
{
uchar i,j;
while(t--) //每個脈沖為1us
{
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
}
void calculate_F()
{
TIMER0_H = (uint)temp/256;
TIMER0_L = (uint)temp%256;
}
void calculate_W()
{
float TEMP;
TEMP = (1 - PERCENT/100.0)*ALL + temp*PERCENT/100.0;
TIMER1_H = (uint)TEMP/256;
TIMER1_L = (uint)TEMP%256;
}
void key_scan()
{
delay(4);
if(!KEY_F_UP) //頻率上調鍵按下;
{
FLAG_F=1; //置標志位;
if(!KEY)
FREQ+=10;
else
FREQ++;
if(FREQ>50000)
FREQ=1;
}
else if(!KEY_F_DOWN) //頻率下調鍵按下;
{
FLAG_F=1; //置標志位;
if(!KEY)
FREQ-=10;
else
FREQ--;
if(FREQ<1)
FREQ=50000;
}
else if(!KEY_W_UP) //脈寬上調鍵按下;
{
FLAG_W=1; //置標志位;
if(!KEY)
PERCENT+=5;
else
PERCENT++;
if(PERCENT>49)
PERCENT=1;
}
else if(!KEY_W_DOWN) //脈寬下調鍵按下;
{
FLAG_W=1; //置標志位;
if(!KEY)
PERCENT-=5;
else
PERCENT--;
if(PERCENT<1)
PERCENT=49;
}
else ;
}
void timer0() interrupt 1 //決定頻率
{
TH0=TIMER0_H;
TL0=TIMER0_L;
TR1=1; //開定時器1;
OUTPUT=1;
}
void timer1() interrupt 3 //決定脈寬
{
TH1=TIMER1_H;
TL1=TIMER1_L;
TR1=0; //關定時器1,一定要這一步,因為定時器1的定時短于定時器0;
OUTPUT=0;
}
void init()
{
TMOD=0x11; //定時器0和定時器1都工作在方式1,16位計數器;
calculate_F(); //初始為1KHZ,占空比為50%;
calculate_W();
TH0=TIMER0_H;
TL0=TIMER0_L;
TH1=TIMER1_H;
TL1=TIMER1_L;
ET0=1;
ET1=1;
EA=1;
TR0=1;
TR1=1;
}
main()
{
init();
while(1)
{
key_scan();
if(FLAG_F) //改變頻率時要注意要進行脈寬的重新設置;
{
calculate_F();
calculate_W();
FLAG_F=0;
}
if(FLAG_W) // 脈寬改變,頻率不改變;
{
calculate_W();
FLAG_W=0;
}
}
}
作者:
愛學習的我。
時間:
2017-6-17 12:55
挺好的
作者:
糖糖有點咸
時間:
2017-6-22 16:22
挺好的,但是不知道怎么用啊
作者:
機智的愚人
時間:
2017-6-30 20:34
挺好的,但是請問這個能夠調節直流電機的轉速快慢嗎?如果能的話,應該怎么去實現?謝謝
作者:
UCAS
時間:
2017-7-1 21:00
學習了
作者:
2395
時間:
2017-7-21 10:55
真的很有用
作者:
2395
時間:
2017-7-21 10:56
這幾天 正好學到這一塊
作者:
ly19950808
時間:
2017-8-1 10:03
不錯,在學這個
作者:
11213131
時間:
2017-8-2 19:29
學習一下
作者:
VI武先生
時間:
2017-8-10 14:26
收下了
作者:
VI武先生
時間:
2017-8-10 14:28
很不錯 謝謝分享
作者:
wuqilin5
時間:
2017-9-27 21:14
請問樓主下面這個函數的temp值是從哪里來的?這個的付初始值好像沒有。謝謝。
void calculate_F()
{
TIMER0_H = (uint)temp/256;
TIMER0_L = (uint)temp%256;
}
作者:
電子迷ZZ
時間:
2017-9-27 23:17
程序確實有問題!定時器0和1工作方式在1模式定時最大值在8192,不會再65536值之間;temp值沒有賦值,初始值系統可能為0或任意值,定時器初值沒有設置好
void calculate_F()
{
TIMER0_H = (uint)temp/256;
TIMER0_L = (uint)temp%256;
}
void calculate_W()
{
float TEMP;
TEMP = (1 - PERCENT/100.0)*ALL + temp*PERCENT/100.0;
TIMER1_H = (uint)TEMP/256;
TIMER1_L = (uint)TEMP%256;
}
作者:
wuqilin5
時間:
2017-9-28 23:51
按照他這個程序如何改一改能執行。
作者:
sadlucky1996
時間:
2017-9-29 21:52
謝謝樓主
作者:
mcu007_rtos
時間:
2017-10-9 14:31
用兩個TIMER,一個timer做脈寬,一個timer做周期。
作者:
kaisonchen
時間:
2017-10-9 20:10
程序感覺有點問題
作者:
kaisonchen
時間:
2017-10-9 20:35
temp=ALL-F_osc/12.0/FREQ;
作者:
AAAAAA666666
時間:
2017-10-10 11:08
嗯,對于小車編程挺有用的!
作者:
方浩
時間:
2019-1-19 14:28
程序有點小問題,頻率不可以調節,占空比減不了,我看看能不能完善一下分享給大家
作者:
王秋冬
時間:
2019-1-21 10:03
期待你的完善,謝謝了。
作者:
益達。。。
時間:
2019-10-30 22:45
請問temp值怎么賦?謝謝了 急用
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
av高清毛片
|
久久四虎
|
国产乱码精品一品二品
|
欧美视频网
|
日韩av一区二区在线观看
|
亚洲视频在线免费
|
狠狠色狠狠色综合系列
|
成人av电影免费在线观看
|
伊人精品在线
|
久久久精品一区二区三区
|
亚洲啪啪
|
亚洲视频免费在线看
|
夜夜骚
|
色综合一区二区
|
国产精品爱久久久久久久
|
天堂三级
|
精品国产一区二区三区性色
|
国产91亚洲精品一区二区三区
|
h视频免费在线观看
|
伊人av在线播放
|
久久九九99
|
精品久久久久久久久久久下田
|
久久久久久久久久久久亚洲
|
国产高清视频
|
在线观看av网站永久
|
亚洲成人在线免费
|
国产一级片免费看
|
欧美精品久久久久
|
九九热最新视频
|
又黄又色
|
亚洲一二三区在线观看
|
国产一区二区三区免费
|
手机在线一区二区三区
|
www国产成人免费观看视频,深夜成人网
|
午夜免费看
|
久久久一二三
|
免费观看一级毛片视频
|
麻豆国产一区二区三区四区
|
在线精品一区
|
国产精品久久精品
|
a在线视频
|