历史上的今天
今天是:2025年04月25日(星期五)
2020年04月25日 | PIC16F877 定时采集电压 LCD1602显示 Proteus仿真图
2020-04-25 来源:eefocus
功能:定时器间隔50us采集一次AD电压,一共采集30次,并通过LCD1602显示。
软件:MPLAB X IDE v5.35,ISIS 7 Professional
注意事项:系统时钟配置为外部时钟8Mhz,由于间隔50us采集一次,所以AD采集一次时间应该小于50us。可通过调整定时器的数值,间隔不同的时间采集AD。
代码如下:
#include "pic.h"
#define RS RC1 //command or data
#define RW RC2 //read write io
#define EN RC3 //enable
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF & BOREN_ON & LVP_ON & CPD_OFF);
void LCD1602_Init(void);
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str); //display
void Time_Init(void);
void ADC_Init(char k);
int AD_CollectVolt(void);
char AD_Complete_Flag = 0;
unsigned int arr[30];
unsigned int ad_volt = 0;
unsigned long sum = 0;
unsigned char num = 0,j = 0;
unsigned int Data = 0;
unsigned char volt_num[5];
void main(void) //Fosc = 8Mhz
{
PEIE = 1;
GIE = 1;
TRISC = 0X00; //OUTPUT
TRISD = 0X00; //OUTPUT
Time_Init(); //50us interrupt
ADC_Init(0); //Channel 0 RA0
LCD1602_Init();
while(1)
{
AD_CollectVolt();
volt_num[0] = ad_volt/1000 + 48;
volt_num[1] = ad_volt/100%10 + 48;
volt_num[2] = ad_volt/10%10 + 48;
volt_num[3] = ad_volt%10 + 48;
volt_num[4] = '




