国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門(mén) >> PIC單片機(jī)之PIC16F884

PIC單片機(jī)之PIC16F884

關(guān)鍵字:PIC16F884 PIC單片機(jī) 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-18  瀏覽:34

buck電路

buck電路圖

這是一個(gè)降壓電路,SW 在此處通入PWM ,進(jìn)行降壓的主要工作,Vout分壓后,最高不超過(guò)芯片工作電壓 (5V 也行 )輸入到PIC AN1口,進(jìn)行AD轉(zhuǎn)換,

將轉(zhuǎn)換的結(jié)果在1602上顯示出來(lái)。如果電壓不是想要的電壓 程序便改變PWM的占空比,以達(dá)到需要的值。

主要環(huán)節(jié)在1602 的初始化 寫(xiě)數(shù)據(jù) 和寫(xiě)指令 以及 PIC的AD啟動(dòng)工作模塊,程序如下 

#include<htc.h>

__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ù)通過(guò)P0口傳給1602 

 delay(2);

 en = 1;

 delay(2);

 en = 0; 

}

 

void lcd_wdat(uchar dat)

{

 rs = 1;

 en = 0;

 DATA= dat;//將8位數(shù)據(jù)通過(guò)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點(diǎn)陣,8位數(shù)據(jù)

 lcd_wcmd(0x0c);   //顯示開(kāi),關(guān)光標(biāo)

 lcd_wcmd(0x06);   //移動(dòng)光標(biāo)

 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<5:4>/4(PR2+1)PULSE WIDTH

     //0X3F  25%

 TMR2IF=0; 

 T2CON=0X05;    //啟動(dòng)定時(shí)器2 預(yù)分頻比是1:4

 while(TMR2IF)

 {

  TMR2IF=0;

  TRISC1=0;

 } 

}

void adc_init()

{

 ADCON0=0X45;// f/2的頻率  AN1通道 AD轉(zhuǎn)換完成 禁止ADC

 ADCON1=0X80;  //右對(duì)齊 參考電壓 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 擴(kuò)大了100倍

 temp=result;

 a1=temp/100;

 a2=temp%100/10;

 a3=temp%100%10;

 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個(gè)字符

 while(dis1[i]!='\0') 

 {      //顯示字符"welcome!"

  lcd_wdat(dis1[i]);

  i++;

 } 

 lcd_wcmd(0x80+0X40); 

 i=0;   //設(shè)置顯示位置為第一行的第5個(gè)字符

 while(dis2[i]!='\0') 

 {      //顯示字符"welcome!"

  lcd_wdat(dis2[i]); 

  i++;

 }

}

void main()

{

 delay(10);

 lcd_init();    //初始化LCD  只要寫(xiě)起始地址就 就行了啊   

 adc_init(); 

 while(1) 

 {

  lcd_dis();

  deal_ad();

 }

// pwm_init();

 while(1);

}

不是很完美,僅供參考。PWM的調(diào)節(jié)還沒(méi)完善 不過(guò)這也不是很大難度了

編輯:admin  最后修改時(shí)間:2019-10-12

聯(lián)系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A09

Copyright © 2014-2025 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4