PIC��Ƭ�C(j��)֮PIC16F884
buck�·
�@��һ��(g��)�����·��SW �ڴ�̎ͨ��PWM ���M(j��n)�н�������Ҫ������Vout�։�������߲����^(gu��)оƬ����늉� ��5V Ҳ�� ��ݔ�뵽PIC AN1�����M(j��n)��AD�D(zhu��n)�Q��
���D(zhu��n)�Q�ĽY(ji��)����1602���@ʾ����(l��i)�����늉�������Ҫ��늉� ������׃PWM��ռ�ձ������_(d��)����Ҫ��ֵ��
��Ҫ�h(hu��n)��(ji��)��1602 �ij�ʼ�� ����(sh��)��(j��) �͌�ָ�� �Լ� PIC��AD����(d��ng)����ģ�K����������
#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�ڂ��o1602
delay(2);
en = 1;
delay(2);
en = 0;
}
void lcd_wdat(uchar dat)
{
rs = 1;
en = 0;
DATA= dat;//��8λ��(sh��)��(j��)ͨ�^(gu��)P0�ڂ��o1602
delay(2);
en = 1;
delay(2);
en = 0;
}
void lcd_init()
{
TRISC=0Xcf; //1100 1111
TRISD=0X00;
lcd_wcmd(0x38); ////16*2�@ʾ��5*7�c(di��n)���8λ��(sh��)��(j��)
lcd_wcmd(0x0c); //�@ʾ�_���P(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)���r(sh��)��2 �A(y��)���l����1:4
while(TMR2IF)
{
TMR2IF=0;
TRISC1=0;
}
}
void adc_init()
{
ADCON0=0X45;// f/2���l�� AN1ͨ�� AD�D(zhu��n)�Q��� ��ֹADC
ADCON1=0X80; //�Ҍ�(du��)�R ����늉� 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 �U(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; //�O(sh��)���@ʾλ�Þ��һ�еĵ�5��(g��)�ַ�
while(dis1[i]!='\0')
{ //�@ʾ�ַ�"welcome!"
lcd_wdat(dis1[i]);
i++;
}
lcd_wcmd(0x80+0X40);
i=0; //�O(sh��)���@ʾλ�Þ��һ�еĵ�5��(g��)�ַ�
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);
}
���Ǻ��������H��������PWM���{(di��o)��(ji��)߀�]���� ���^(gu��)�@Ҳ���Ǻܴ��y����

����admin ����ĕr(sh��)�g��2019-10-12