buck電路
這是一個降壓電路,SW 在此處通入PWM ,進行降壓的主要工作,Vout分壓后,最高不超過芯片工作電壓 (5V 也行 )輸入到PIC AN1口,進行AD轉(zhuǎn)換,
將轉(zhuǎn)換的結(jié)果在1602上顯示出來。如果電壓不是想要的電壓 程序便改變PWM的占空比,以達到需要的值。
主要環(huán)節(jié)在1602 的初始化 寫數(shù)據(jù) 和寫指令 以及 PIC的AD啟動工作模塊,程序如下
#include
__CONFIG(0x201A);
#define uint unsigned int
#define uchar unsigned char
#define rs RC4 //數(shù)據(jù)命令
#define en RC5 // 使能端
#define DATA PORTD //數(shù)據(jù)口
//RC1 作為PWM輸出口
const uchar dis1[]="The voltage is:"; //asm("nop");
const uchar dis2[]=" . V";
void delay(uchar time) //1ms
{
uint j;
for(time;time>0;time--)
for(j=160;j>0;j--);
}
void lcd_wcmd(uchar cmd)
{
rs = 0;
en = 0;
DATA = cmd;//將8位數(shù)據(jù)通過P0口傳給1602
delay(2);
en = 1;
delay(2);
en = 0;
}
void lcd_wdat(uchar dat)
{
rs = 1;
en = 0;
DATA= dat;//將8位數(shù)據(jù)通過P0口傳給1602
delay(2);
en = 1;
delay(2);
en = 0;
}
void lcd_init()
{
TRISC=0Xcf; //1100 1111
TRISD=0X00;
lcd_wcmd(0x38); ////16*2顯示,5*7點陣,8位數(shù)據(jù)
lcd_wcmd(0x0c); //顯示開,關(guān)光標
lcd_wcmd(0x06); //移動光標
lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容
}
void pwm_init()
{
TRISC1=1; //CCP2 OUTPUT DISABLE
PR2=0XFF;
CCP2CON=0X3C; //0011(CCPR1L后兩位))1100 11XX PWM MODE
CCPR2L=0X3F; //CCPR2L:CCP2CON
//0X3F 25%
TMR2IF=0;
T2CON=0X05; //啟動定時器2 預(yù)分頻比是1:4
while(TMR2IF)
{
TMR2IF=0;
TRISC1=0;
}
}
void adc_init()
{
ADCON0=0X45;// f/2的頻率 AN1通道 AD轉(zhuǎn)換完成 禁止ADC
ADCON1=0X80; //右對齊 參考電壓 VSS VDD
TRISA=0X01; //輸入
delay(5);
}
void deal_ad()
{
uint temp;
uint ad_sample;
uint result;
uchar a1,a2,a3;
GO_DONE=1;
while(GO_DONE);
ad_sample=ADRESL (ADRESH<<8);
result=(ad_sample*500)>>10; //參考電壓5V 擴大了100倍
temp=result;
a1=temp/100;
a2=temp0/10;
a3=temp0;
if(a1!=0)
{
lcd_wcmd(0x80 0x44);
lcd_wdat(a1 0x30);
}
lcd_wcmd(0x80 0x45);
lcd_wdat(a2 0x30);
lcd_wcmd(0x80 0x47);
lcd_wdat(a3 0x30);
}
void lcd_dis()
{
uchar i;
lcd_wcmd(0x80);
i=0; //設(shè)置顯示位置為第一行的第5個字符
while(dis1[i]!='\0')
{ //顯示字符"welcome!"
lcd_wdat(dis1[i]);
i ;
}
lcd_wcmd(0x80 0X40);
i=0; //設(shè)置顯示位置為第一行的第5個字符
while(dis2[i]!='\0')
{ //顯示字符"welcome!"
lcd_wdat(dis2[i]);
i ;
}
}
void main()
{
delay(10);
lcd_init(); //初始化LCD 只要寫起始地址就 就行了啊
adc_init();
while(1)
{
lcd_dis();
deal_ad();
}
// pwm_init();
while(1);
}
不是很完美,僅供參考。PWM的調(diào)節(jié)還沒完善 不過這也不是很大難度了
上一篇:第一頁
下一篇:PIC單片機PIC18F26K80中斷優(yōu)先級圖
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 動力電池“三國殺”:中企提前鎖定勝局,日韓廠商集體失守
- 研究人員開發(fā)出人工智能雷達技術(shù) 可用于高分辨率3D城市制圖
- 上半年動力電池TOP15:寧德時代和比亞迪裝車近200GWh 兩家公司新上榜
- 半年砸下數(shù)千億元!“并購”浪潮下,汽車芯片大戰(zhàn)再起風(fēng)云
- 奇瑞人形機器人9月開售并將面向個人用戶,機器人時代該來了嗎?
- 華為李文廣:華為智能駕駛規(guī)劃曝光,加速追趕特斯拉
- 功能迭代和功能安全的矛盾及車端應(yīng)用層-下
- 功能迭代和功能安全的矛盾及車端應(yīng)用層-中
- 功能迭代和功能安全的矛盾及車端應(yīng)用層-上
- 車云一體其他層面的架構(gòu)設(shè)計借鑒-下
- Nexperia有獎直播|電動汽車中車規(guī)功率MOSFET和氮化鎵器件的介紹及應(yīng)用
- 【有獎活動】與春天有個約會--曬照片
- 【EEWORLD第二十二屆社區(qū)明星人物】暢想十二月明星人物揭曉!
- Arrow&allegro有獎直播:下一代磁感應(yīng)解決方案:XtremeSense™ TMR 技術(shù)如何促進高效應(yīng)用
- 有獎直播|魏德米勒 OMNIMATE® 聯(lián)接技術(shù)的創(chuàng)新發(fā)展
- 開學(xué)總動員,書籍開發(fā)板低價購!
- TI 有獎直播 | 使用基于 Arm 的 AM6xA 處理器設(shè)計智能化樓宇