本文目錄一覽:
- 1、CCS軟件C語言編程輸出SPWM脈寬調製波控制感應電機轉速程序算法解讀
- 2、c語言二維數組 查表
- 3、《單片機C語言程序設計實訓100例——基於8051+Proteus仿真》 【綜合設計部分】的源代碼
CCS軟件C語言編程輸出SPWM脈寬調製波控制感應電機轉速程序算法解讀
1、PWM波是控制直流電機的
通俗的說,5V直流電機在5V的情況下肯定速度最快,在0V的情況下肯定不轉了
這樣電源0~5V就對應了不同的速度
問題是怎麼才能實現0~5V的變化呢?
於是就用PWM波控制mos管來給直流電機供電。PWM就是一個矩形波,通過控制高電平和低電平的時間來控制MOS管導通的時間。MOS管在高電平的時候導通,就相當於5V電源直接加到電機上;MOS管在低電平的時候截止,就相當於0V電源加到電機上。
PWM又叫脈寬調製,就是控制高電平佔一個周期的比例。而這個PWM波就是控制5V電源加到電機上的時間,從而控制了電機。
2、例程:
#include reg52.h
sbit KEY1 = P3^4;
sbit PWM = P1^5;
unsigned char CYCLE; //定義周期 該數字X基準定時時間 如果是10 則周期是10 x 0.1ms
unsigned char PWM_ON ;//定義高電平時間
void delay(unsigned int cnt)
{
while(–cnt);
}
main()
{
unsigned char PWM_Num;//定義檔位
TMOD |=0x01;//定時器設置 1ms in 12M crystal
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定時1mS
IE= 0x82; //打開中斷
TR0=1;
CYCLE = 10;// 時間可以調整 這個是10步調整 周期10ms 8位PWM就是256步
while(1)
{
if(!KEY1)
{
delay(10000);
if(!KEY1)
{
PWM_Num++;
if(PWM_Num==4)PWM_Num=0;
switch(PWM_Num){
case 0:P0=0x06;PWM_ON=0;break;//高電平時長
case 1:P0=0x5B;PWM_ON=4;break;
case 2:P0=0x4F;PWM_ON=6;break;
case 3:P0=0x66;PWM_ON=8;break;
default:break;
}
}
}
}
}
/********************************/
/* 定時中斷 */
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定時1mS
if (count==PWM_ON)
{
PWM = 1; //燈滅
}
count++;
if(count == CYCLE)
{
count=0;
if(PWM_ON!=0) //如果左右時間是0 保持原來狀態
PWM = 0;//燈亮
}
c語言二維數組 查表
const int a[2][100]={{1000,1900,2100,。。。},{500,530,560,。。。}};
const long c[2][100]={{1000*500,},{1,2,00}};
int Chazhao(int d[2][100],int b,char h)
{
int i;
for(i=0;i100;i++)
{
if(d[h0x01][i]==b)
break;
}
if(i!=100)
return(d[~h0x01][i]);
else
return(0); // 返回沒有查到的代碼;
}
//使用:已知 e:轉速1900
int e =1900;
f = Chazhao(a,e,0); // f定義查找得到的負載
if(f) // 判斷是否查到。
g = Chazhao(c,f*e,0); // g定義根據轉速和負載求數據。
// 定義個三維數組就行,表格根據數而定,h 定義為是根據什麼查什麼的。即根據轉速查負載為0,根據負載查轉速為1,的bit變量,只有最後一位而定,C就是根據負載和轉速組合成的第三個值。
《單片機C語言程序設計實訓100例——基於8051+Proteus仿真》 【綜合設計部分】的源代碼
單片機c語言編程100個實例目錄1 函數的使用和熟悉例26:用P0 口顯示指針運算結果 實例27:用指針數組控制P0口8位LED流水點亮 實例28:用數組的指針控制P0 口8 位LED流水點亮 實例29:用P0 、P1口顯示整型函數返回值 實例30:用有參函數控制P0口8位LED流水速度 實例31:用數組作函數參數控制流水花樣 實例32:用指針作函數參數控制P0口8位LED流水點亮 實例33:用函數型指針控制P1口燈花樣 實例34:用指針數組作為函數的參數顯示多個字符串 單片機c語言編程100個實例目錄2 實例35:字符函數ctype.h應用舉例 實例36:內部函數intrins.h應用舉例 實例37:標準函數stdlib.h應用舉例 實例38:字符串函數string.h應用舉例 實例39:宏定義應用舉例2 實例40:宏定義應用舉例2 實例41:宏定義應用舉例3 * 中斷、定時器中斷、定時器 *中斷、定時器*中斷、定時器 / 實例42:用定時器T0查詢方式P2口8位控制LED閃爍 實例43:用定時器T1查詢方式控制單片機發出1KHz音頻 實例44:將計數器T0計數的結果送P1口8位LED顯示 實例45:用定時器T0的中斷控制1位LED閃爍 實例46:用定時器T0的中斷實現長時間定時 實例47:用定時器T1中斷控制兩個LED以不同周期閃爍 實例48:用計數器T1的中斷控制蜂鳴器發出1KHz音頻 實例49:用定時器T0的中斷實現”渴望”主題曲的播放 實例50-1:輸出50個矩形脈衝 實例50-2:計數器T0統計外部脈衝數 實例51-2:定時器T0的模式2測量正脈衝寬度 實例52:用定時器T0控制輸出高低寬度不同的矩形波 實例53:用外中斷0的中斷方式進行數據採集 實例54-1:輸出負脈寬為200微秒的方波 實例54-2:測量負脈衝寬度 實例55:方式0控制流水燈循環點亮 實例56-1:數據發送程序 實例56-2:數據接收程序 實例57-1:數據發送程序 實例57-2:數據接收程序 實例58:單片機向PC發送數據 實例59:單片機接收PC發出的數據 *數碼管顯示*數碼管顯示 數碼管顯示數碼管顯示*/ 實例60:用LED數碼顯示數字5 實例61:用LED數碼顯示器循環顯示數字0~9 實例62:用數碼管慢速動態掃描顯示數字”1234″ 實例63:用LED數碼顯示器偽靜態顯示數字1234 實例64:用數碼管顯示動態檢測結果 實例65:數碼秒錶設計 實例66:數碼時鐘設計 實例67:用LED數碼管顯示計數器T0的計數值 實例68:靜態顯示數字「59」 單片機c語言編程100個實例目錄3 鍵盤控制*鍵盤控制* *鍵盤控制 *鍵盤控制 */ 實例69:無軟件消抖的獨立式鍵盤輸入實驗 實例70:軟件消抖的獨立式鍵盤輸入實驗 實例71:CPU控制的獨立式鍵盤掃描實驗 實例72:定時器中斷控制的獨立式鍵盤掃描實驗 實例73:獨立式鍵盤控制的4級變速流水燈 實例74:獨立式鍵盤的按鍵功能擴展:”以一當四” 實例75:獨立式鍵盤調時的數碼時鐘實驗 實例76:獨立式鍵盤控制步進電機實驗 實例77:矩陣式鍵盤按鍵值的數碼管顯示實驗 //實例78:矩陣式鍵盤按鍵音 實例79:簡易電子琴 實例80:矩陣式鍵盤實現的電子密碼鎖 液晶顯示LCD*液晶顯示LCD *液晶顯示LCD * *液晶顯示LCD*液晶顯示LCD *液晶顯示LCD */ 實例81:用LCD顯示字符’A’ 實例82:用LCD循環右移顯示”Welcome to China” 實例83:用LCD顯示適時檢測結果 實例84:液晶時鐘設計 *一些芯片的使用*24c02 DS18B20 X5045 ADC0832 DAC0832 DS1302 紅外遙控/ 實例85:將數據”0x0f”寫入AT24C02再讀出送P1口顯示 實例86:將按鍵次數寫入AT24C02,再讀出並用1602LCD顯示 實例87:對I2C總線上掛接多個AT24C02的讀寫操作 實例88:基於AT24C02的多機通信 讀取程序 實例89:基於AT24C02的多機通信 寫入程序 實例90:DS18B20溫度檢測及其液晶顯示 實例91:將數據”0xaa”寫入X5045再讀出送P1口顯示 實例92:將流水燈控制碼寫入X5045並讀出送P1口顯示 實例93:對SPI總線上掛接多個X5045的讀寫操作 實例94:基於ADC0832的數字電壓表 實例95:用DAC0832產生鋸齒波電壓 實例96:用P1口顯示紅外遙控器的按鍵值 實例97:用紅外遙控器控制繼電器 實例98:基於DS1302的日曆時鐘 實例99:單片機數據發送程序 實例100:電機轉速表設計 模擬霍爾脈衝 實例3:用單片機控制第一個燈亮 實例4:用單片機控制一個燈閃爍:認識單片機的工作頻率 實例5:將 P1口狀態分別送入P0、P2、P3口:認識I/O口的引腳功能 實例6:使用P3口流水點亮8位LED 實例7:通過對P3口地址的操作流水點亮8位LED 實例8:用不同數據類型控制燈閃爍時間 實例9:用P0口、P1 口分別顯示加法和減法運算結果 實例10:用P0、P1口顯示乘法運算結果 實例11:用P1、P0口顯示除法運算結果 實例12:用自增運算控制P0口8位LED流水花樣 實例13:用P0口顯示邏輯”與”運算結果 實例14:用P0口顯示條件運算結果 實例15:用P0口顯示按位”異或”運算結果 實例16:用P0顯示左移運算結果 實例17:”萬能邏輯電路”實驗 實例18:用右移運算流水點亮P1口8位LED 實例19:用if語句控制P0口8位LED的流水方向 實例20:用swtich語句的控制P0口8位LED的點亮狀態 實例21:用for語句控制蜂鳴器鳴笛次數 實例22:用while語句控制LED 實例23:用do-while語句控制P0口8位LED流水點亮 實例24:用字符型數組控制P0口8位LED流水點亮 實例25: 用P0口顯示字符串常量 實例26:用P0 口顯示指針運算結果
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/280421.html