STC12C5A系列內(nèi)置AD-PWM(頻率可調(diào))串口發(fā)送_第1頁
STC12C5A系列內(nèi)置AD-PWM(頻率可調(diào))串口發(fā)送_第2頁
STC12C5A系列內(nèi)置AD-PWM(頻率可調(diào))串口發(fā)送_第3頁
STC12C5A系列內(nèi)置AD-PWM(頻率可調(diào))串口發(fā)送_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精品文檔#include"stc12c5a.h"#include"intrins.h"#define uchar unsigned char/-void AD_init();/AD初始化函數(shù)void delay(unsigned int a); /延時函數(shù)( 1ms)float AD_work(unsigned char channel);/AD 數(shù)值處理函數(shù)unsigned int AD_get(unsigned char channel); /AD轉(zhuǎn)換函數(shù)void PCA();/設(shè)置 PWM輸出函數(shù)unsigned char ge1,n1,m1,aa

2、,num,pwm;int V,temp1;sbit key1=P01;sbit key2=P02;/-void send(uchar data1)ES=0;/ 關(guān)閉中斷TI=0;SBUF=data1;while(!TI); /等待發(fā)送完成TI=0;/ 中斷標(biāo)志位清0ES=1;/打開中斷void chuankou()/串口發(fā)送ADtemp1=V;ge1=temp1/1000;m1=(temp1%1000)/100;n1=(temp1%1000)%100)/10;send(ge1+48);/因為 0 對應(yīng)的 ASCII 碼是 48,所以要 +48send('.');send(m1+

3、48);send(n1+48);send('V');send(' ');。1歡迎下載精品文檔/-unsigned int AD_get(unsigned char channel)ADC_CONTR=0x88|channel;/ 開啟 AD轉(zhuǎn)換 10001000即 POWERSPEED1 SPEED0ADC_FLAGADC_START CHS2 CHS1 CHS0_nop_(); _nop_(); _nop_(); _nop_();/要經(jīng)過 4 個 CPU時鐘的延時,其值才能夠保證被設(shè)置進(jìn)ADC_CONTR寄存器while(!(ADC_CONTR&0x1

4、0);/等待轉(zhuǎn)換完成ADC_CONTR&=0xe7; / 關(guān)閉 AD轉(zhuǎn)換, ADC_FLAG位由軟件清 0 return(ADC_RES*4+ADC_RESL); / 返回 AD轉(zhuǎn)換完成的 10 位數(shù)據(jù) (16 進(jìn)制 )/-float AD_work(unsigned char channel)double AD_val,AD_vale;/定義處理后的數(shù)值A(chǔ)D_val 為浮點數(shù)unsigned char i;for(i=0;i<100;i+)AD_val+=AD_get(channel); /轉(zhuǎn)換 100 次求平均值 ( 提高精度 )AD_val/=100;AD_vale=(AD

5、_val*5000)/1024; /AD的參考電壓是單片機(jī)上的5v,所以乘5 即為實際電壓值V=AD_vale;return V;/-void delay(unsigned int a) /延時約 1msunsigned int i;while (-a!=0)for(i=600;i>0;i-);/-/-void AD_init()P1ASF=0x01; /P1口全部作為模擬功能AD使用。2歡迎下載精品文檔ADC_RES=0; / 清零轉(zhuǎn)換結(jié)果寄存器高8 位ADC_RESL=0; / 清零轉(zhuǎn)換結(jié)果寄存器低2 位ADC_CONTR=0x80;/開啟 AD電源delay(2);/等待 1ms,

6、讓 AD電源穩(wěn)定void anjian()if(pwm!=100)/占空比加到100 不繼續(xù)加if(key1=0)delay(10);if(key1=0)pwm+;aa=1;while(!key1);if(pwm!=0)/減到 0 不繼續(xù)減if(key2=0)delay(10);if(key2=0)aa=1;pwm-;while(!key2);void PCA()CCON=0;CL=0;CH=0;CMOD=0X04;/ 選擇脈沖源為計時器0CCAP0H=128;/占空比初值為50%。3歡迎下載精品文檔CCAP0L=128;CCAPM0=0X42;CR=1;/開啟 PWMvoid main()A

7、D_init();/AD 初始化PCA();TMOD=0x21;AUXR=0x80;TH0=(65536-25)/256;/設(shè)定定時器0 初值, pwm頻率為 1KHZTL0=(65536-25)%256;TH1=0xfd;/設(shè)置 9600波特率TL1=0xfd;SCON=0x50;/串口方式1,允許接收ET0=1;TR0=1;TR1=1;SM0=0;SM1=1;REN=1;ES=1;EA=1;while(1)unsigned char i;i=0;/ 以 P1i(P10) 口為 AD采集口AD_work(i);/讀取 AD電壓chuankou();CCAP0H=256-pwm*256/100;/設(shè)定占空比為pwm%CCAP0L=256-pwm*256/100;if(V>=3000)aa=0;pwm=0;/占空比為0if(V<3000)if(aa=0)pwm=50;。4歡迎下載精品文檔anjian();void T0_time() interru

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論