/*---------------------------------------------------------------------*/
/* --- 北斗科技 ----------------------------------*/
/* --- ZL -------------------------------*/
/* --- 2020年9月6日 ----------------------------------------*/
/* --- V1.0 ------------------------*/
/*
VCC接3.3V
GNG接电源地
TAO接P10
TON接3.3V或者高电平*/
/*---------------------------------------------------------------------*/
#include "bsp.h"
/***************************************************************************
* 描 述 : 主函数
* 入 参 : 无
* 返回值 : 无
**************************************************************************/
/************* 本地常量声明 **************/
unsigned char value[]=" BeiDouKeJi ";//数据
unsigned char state[]="LMT70:";//状态
unsigned char code ASCII[12] = {'0','1','2','3','4','5','6','7','8','9'};//字库
unsigned char disbuff[9]={0,0,0,0,0,0,0,0,0};//显示缓存
unsigned short LDC_value=0;//返回值
#define size 20//数组大小
#define N 12//滑动平均滤波计算平均值时所取的点数
float Sum1;
float dataad[];
/************* 本地变量声明 **************/
u8 count = 0;
/************* 本地函数声明 **************/
void smooth(float smdata[])
{
int j,k;
Sum1=0;
for(j=0;j<size;j++)
{
if(j<N/2)
{
for(k=0;k<N;k++)
{
Sum1+=smdata[j+k];
}
smdata[j]=Sum1/N;
}
else
if(j<size -N/2)
{
for(k=0;k<N/2;k++)
{
Sum1+=(smdata[j+k]+smdata[j-k]);
}
smdata[j]=Sum1/N;
}
else
{
for(k=0;k<size-j;k++)
{
Sum1+=smdata[j+k];
}
for(k=0;k<(N-size+j);k++)
{
Sum1+=smdata[j-k];
}
smdata[j]=Sum1/N;
}
Sum1=0;
}
}
/************* 外部函数和变量声明 *****************/
void ADC_config(void)
{
ADC_InitTypeDef ADC_InitStructure; //结构定义
ADC_InitStructure.ADC_Px = ADC_P10 | ADC_P11 | ADC_P12; //设置要做ADC的IO, ADC_P10 ~ ADC_P17(或操作),ADC_P1_All
ADC_InitStructure.ADC_Speed = ADC_360T; //ADC速度 ADC_90T,ADC_180T,ADC_360T,ADC_540T
ADC_InitStructure.ADC_Power = ENABLE; //ADC功率允许/关闭 ENABLE,DISABLE
ADC_InitStructure.ADC_AdjResult = ADC_RES_H8L2; //ADC结果调整, ADC_RES_H2L8,ADC_RES_H8L2
ADC_InitStructure.ADC_Polity = PolityLow; //优先级设置 PolityHigh,PolityLow
ADC_InitStructure.ADC_Interrupt = DISABLE; //中断允许 ENABLE,DISABLE
ADC_Inilize(&ADC_InitStructure); //初始化
ADC_PowerControl(ENABLE); //单独的ADC电源操作函数, ENABLE或DISABLE
}
/******************** IO配置函数 **************************/
void GPIO_config(void)
{
P5M0 &= ~(1<<5); //设置P5.5为准双向口
P5M1 &= ~(1<<5);
}
/******************** 主函数 **************************/
int main()
{
/////////////////////////////////////////////////
//注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为
// 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
//相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
/////////////////////////////////////////////////
unsigned int i=0;
unsigned long temp=0,temp1;
unsigned char buf[6];
u16 ad;
float p1= -0.1913;
float p2= 209.6;
// float p1= -0.193;
// float p2= 212;
float p;
long tao;
P2M1 &= 0x00; P2M0 &= 0x00; //设置P3.0~P3.1为准双向口
P3M1 &= 0xFC; P3M0 &= 0xFC; //设置P3.0~P3.1为准双向口
P4M1 &= 0x00; P4M0 &= 0x00; //设置P4.0~P4.7为准双向口
GPIO_config();
delay_ms(500); //上电延时
UartInit();
ADC_config();
delay_ms(150);
Init_LCD1602();
LCD1602_write_com(0x80); //指针指向第1行第0个位置
LCD1602_write_word("Welcome to use!");
LCD1602_write_com(0x80+0x40); //指针指向第2行第0个位置
LCD1602_write_word("LMT70 EVM");
delay_ms(200);
LCD1602_write_com(0x01); //清屏指令
LcdShowStr(0,0,value);//显示logo
LCD1602_write_com(0x80+0x40); //指针指向第2行第0个位置
LCD1602_write_word("LMT70 Temp:");
while(1)
{
ad = Get_ADC10bitResult(0); //参数0~7,对应P10-P17,查询方式做一次ADC, 返回值就是结果, == 1024 为错误
// U1SendString("LMT70");
//// U1SendString(j);
//// U1SendString(" ");
tao=ad*32.2;//3.22=3300/1024 ,扩大10倍
// disbuff[0]=tao/100000;
// disbuff[1]=tao%100000/10000;
// disbuff[2]=tao%100000%10000/1000;
// disbuff[3]=tao%100000%10000%1000/100;
// disbuff[4]=tao%100000%10000%1000%100/10;
// disbuff[5]=tao%100000%10000%1000%100%10;
//
// DisplayOneChar(2, 1, ASCII[disbuff[0]]);
// DisplayOneChar(3, 1, ASCII[disbuff[1]]);
// DisplayOneChar(4, 1, ASCII[disbuff[2]]);
// DisplayOneChar(5, 1, ASCII[disbuff[3]]);
// DisplayOneChar(6, 1, ASCII[disbuff[4]]);
// DisplayOneChar(7, 1, ASCII[disbuff[5]]);
p=p2*10+p1*tao;
temp=(long)p;
// U1SendString("LMT70");
delay_ms(200);
disbuff[0]=temp/1000;
disbuff[1]=temp%1000/100;
disbuff[2]=temp%1000%100/10;
disbuff[3]=temp%1000%100%10;
// DisplayOneChar(11, 1, ASCII[disbuff[0]]);
DisplayOneChar(12, 1, ASCII[disbuff[1]]);
DisplayOneChar(13, 1, ASCII[disbuff[2]]);
DisplayOneChar(14, 1, '.');
DisplayOneChar(15, 1, ASCII[disbuff[3]]);
}
}
评论1