PIC单片机之PIC16F884

发布者:BlissfulMoments最新更新时间:2018-10-10 来源: eefocus关键字:PIC单片机  PIC16F884 手机看文章 扫描二维码
随时随地手机看文章

buck电路


PIC单片机之PIC16F884 


这是一个降压电路,SW 在此处通入PWM ,进行降压的主要工作,Vout分压后,最高不超过芯片工作电压 (5V 也行 )输入到PIC AN1口,进行AD转换,


将转换的结果在1602上显示出来。如果电压不是想要的电压 程序便改变PWM的占空比,以达到需要的值。


主要环节在1602 的初始化 写数据 和写指令 以及 PIC的AD启动工作模块,程序如下


#include


__CONFIG(0x201A);


#define uint unsigned int


#define uchar unsigned char


#define rs RC4 //数据命令


#define en RC5 // 使能端


#define DATA PORTD //数据口


//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位数据通过P0口传给1602


delay(2);


en = 1;


delay(2);


en = 0;


}


void lcd_wdat(uchar dat)


{


rs = 1;


en = 0;


DATA= dat;//将8位数据通过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位数据


lcd_wcmd(0x0c); //显示开,关光标


lcd_wcmd(0x06); //移动光标


lcd_wcmd(0x01); //清除LCD的显示内容


}


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 预分频比是1:4


while(TMR2IF)


{


TMR2IF=0;


TRISC1=0;


}


}


void adc_init()


{


ADCON0=0X45;// f/2的频率 AN1通道 AD转换完成 禁止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; //设置显示位置为第一行的第5个字符


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


{ //显示字符"welcome!"


lcd_wdat(dis1[i]);


i ;


}


lcd_wcmd(0x80 0X40);


i=0; //设置显示位置为第一行的第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的调节还没完善 不过这也不是很大难度了


关键字:PIC单片机  PIC16F884 引用地址:PIC单片机之PIC16F884

上一篇:PIC单片机驱动LCD断码屏代码生成工具
下一篇:PIC单片机PIC18F26K80中断优先级图

推荐阅读最新更新时间:2024-03-16 16:15

PIC单片机之I2C(从模式)详解
  I2C简介   I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。   主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。   I2C:就好像上下级对话。一个领导面对一个或者多个员工。只
[单片机]
<font color='red'>PIC单片机</font>之I2C(从模式)详解
PIC单片机和51单片机谁更容易于学习
pic单片机是当前最实用工具之一,而对于pic单片机的探讨往往与其他类型单片机相联系。 51好学一些,但是PIC也没比51难多少。首先,PIC比51多个配置位,这个基本上看看就懂了。然后,PIC的端口要配置成输入或者输出,51单片机则不用。PIC的中断没有优先级,需要软件判断。最后,PIC比51多许多寄存器,你要使用PIC的各种功能,都需要去初始化寄存器。 再说说PIC相比与51单片机有哪些优点: 1:相同的晶振情况下,PIC比51速度快,PIC4个时钟周期为一个指令周期,51是12个。 2:PIC比51功能强大许多,比如自带AD转换,自带PWM,内置弱上拉(需设置)LCD接口等。。这样,你在用到许多功能的时候就很方便啦,
[单片机]
<font color='red'>PIC单片机</font>和51单片机谁更容易于学习
PIC单片机在ICD做lcd显示时钟演示程序
;************************************************* ;* CLKTEST.ASM * ;*-----------------------------------------------* ;*-----------------------------------------------* ;************************************************* ;* ICDDEMO教学实验板 lcd显示时钟演示程序 * ;************************************************* include p16f877.i
[单片机]
PC机与PIC单片机串行全双工通信
1. 实例目的: 本实例完全建立在计算机软件的基础上,利用PROTEUS软件构建一个单片机系统,利用VB编写一个计算机控制软件和单片机系统串行通信,计算机上的控制软件可以发送一个值在0 999之间的数,在单片机系统上显示出来,单片机系统上也可输入一个相同值域的数并在计算机控制软件上显示出来。本实例主要是为了展示虚拟串行通信的仿真。 2. 系统配置 本实例虽然简单,但是要想看到想要的仿真结果,建立虚拟的串口连接是必不可少的。要想仿真串行通信,必须要把单片机系统上的串行口与计算机上的串行口连接,这样他们之间才能传输数据,但由于是仿真,实际没有相连接,所以需要创建一对虚拟串行口并使他们相连,这里我使用的是这个软件Virtual Ser
[单片机]
PC机与<font color='red'>PIC单片机</font>串行全双工通信
PIC单片机之SPI总线篇
大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,现在我们就趁热打铁,再向上跨一步,一起来学习一下SPI 总线器的工作原理及使用方法,这样我们可以将一些需要保存的数据保存到存储器芯片中,掉电不会失丢,如汽车的里程表,它在不断地计数,其公里数就是放在一个SPI 总线的存储器芯片里面。 一、SPI总线基本概念 SPI ( Serial Peripheral Interface ———串行外设接口) 总线是Motorola 公司推出的一种同步串行接口技术。SPI 总线系统是一种同步串行外设接口, 允许MCU 与各种外围设备( 如闪存、数摸转换、网络控制器、从MCU)
[单片机]
<font color='red'>PIC单片机</font>之SPI总线篇
PIC单片机与PC机串行通信模块的设计
PIC 单片机与PC机串行通信模块的设计思路:该模块利用了PlC16F877的异步串行通信端口,实现与PC机的串行通信。PC机中串口的编程采用Visual C++,利用Visual C++中的CMSComm控件进行编程。PC机串口程序采用定时发送中断接收方式。单片机采用中断控制方式,当中断收到8个数据后,将收到的8个数据以中断的方式发送给PC机。 如图所示为上位机串口调试界面: 图 上位机串口调试界面
[单片机]
<font color='red'>PIC单片机</font>与PC机串行通信模块的设计
用PICC编译器开发PIC单片机的代码
引言 目前,在市场上应用最广泛的应该属于8位单片机,Microchip Technoloogy公司推出的8位PIC系列单片机,目前在国内市场上深受用户欢迎,已经逐渐成为单片机应用的新潮流;但遗憾的是,目前国内介绍它的C语言开发工具的书籍和文章却比较少,而且用的人也不多,广大的程序员在用其开发的过程中都在慢慢摸索,可能会走一些弯路。笔者最近在用PIC的C语言时就遇到了好些问题,在这里想和最近一段时间用PIC的C语言的一些经验和广大的底层软件程序员做一下交流和介绍希望本文对用PICC开发PIC系列单片机的人有所帮助。 目前,在国内用得比较多的是Hi-Tech的Hi-Tech PICC编译器,而且目前市场上一些国内的PIC单片机仿真
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved