標(biāo)題:
STC15W408AS單片機(jī)電壓采集次數(shù)不帶掉電保存
[打印本頁]
作者:
郝書悅
時(shí)間:
2018-11-14 11:37
標(biāo)題:
STC15W408AS單片機(jī)電壓采集次數(shù)不帶掉電保存
STC15W408AS 運(yùn)用P1.4引腳進(jìn)行電壓采集并且進(jìn)行電壓壓降幾次,串口發(fā)送,文本模式
單片機(jī)源程序如下:
#include "STC15F2K60S2.H"
#include<intrins.h>
/**********************************************
此程序?yàn)殡妷合陆笛夭杉绦颍诎l(fā)送電壓及次數(shù),不帶掉電保存
采用單片機(jī)型號為STC15W408AS 采集引腳為P1.4
注:更改引腳需要更改ADC初始化引腳,對應(yīng)數(shù)值需參考P1ASF介紹
還需更改ADC_CONTR的值,進(jìn)行引腳變換頻率的設(shè)定。
**********************************************************/
void Delay_ms(unsigned int ms) ///////////延時(shí)1000MS對應(yīng)1S
{
unsigned int a,b;
for(a=ms;a>0;)
{
for(b=1000;b>0;)
{
b=b-1;
}
a--;
}
}
void TxChar(unsigned char send)
{
TI = 0;
SBUF =send;
while(!TI);
TI = 0;
}
void SendFourData(unsigned char send)
{
unsigned char a=0,b=0,c=0;
a= (send/100)+0x30; //對照ASCII表,0的編碼"十進(jìn)制"48--"十六進(jìn)制"0x30
b= (send/10%10)+0x30; //接收方式為文本
c= (send%10)+0x30;
TxChar(a);
TxChar(b);
TxChar(c);
}
void ADC_int() //ADc初始化
{
P1ASF=0X10; //吧P1.4設(shè)置為ADC引腳
CLK_DIV=0X20; //ADC結(jié)果設(shè)置
ADC_CONTR=0X80; //打開ADC 電源
ADC_RESL=0; /////ADC高位存儲(chǔ)
ADC_RES=0; /////ADC低位存儲(chǔ)
Delay_ms(10);
}
unsigned int ADC_Read() //讀ADCCH6
{
unsigned int a=0;
ADC_CONTR = 0X8c; //啟動(dòng)ADC電源和設(shè)置P1.4口為ADC轉(zhuǎn)換并且540個(gè)時(shí)鐘轉(zhuǎn)換一次
Delay_ms(1);
while(!(ADC_CONTR&0X10)); //等待轉(zhuǎn)換完成
a=ADC_RES*256+ADC_RESL; //獲取ADC結(jié)果
ADC_CONTR&=~0x10;
return a;
}
void UartInit() //9600bps@11.0592MHz
{
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR = 0x14;
AUXR |= 0x01; //串口1選擇定時(shí)器2為波特率發(fā)生器
T2L = 65536-(11059200/4/9600); //設(shè)定定時(shí)初值
T2H = (65536-(11059200/4/9600))>>8; //設(shè)定定時(shí)初值
}
void Uartsend_1(unsigned char send)
{
SBUF=send; //發(fā)送數(shù)據(jù)
while(!TI); //等待前一幀數(shù)據(jù)發(fā)送完畢
TI=0; //復(fù)位標(biāo)志位
}
void U1_TX_C(char *send)
{
unsigned char a=0;
while(send[a])
{
Uartsend_1(send[a]);
a++;
}
}
void Uartsend_adc(unsigned long send)
{
unsigned char a[4],b,c[4];
int x=0,s=0,j=5;
send=send*500/1024; //電壓計(jì)算
a[0]=send%10+'0';
a[1]=send/10%10+'0';
a[2]='.';
a[3]=send/100+'0';
a[3]=a[3]-1;
for(b=4;b>0;b--) //發(fā)送
Uartsend_1(a[b-1]); //
}
void main()
{ int j=0;
int x=0,s=0,lj=0;
unsigned int adcnum;
unsigned char a=0;
ADC_int(); //ADc初始化
UartInit(); //9600bps@11.0592MHz
while(1)
{
U1_TX_C("電壓");
Uartsend_1(0X22);//' “ '的十六進(jìn)制數(shù)
adcnum=ADC_Read(); //讀取一次
a= (adcnum/100)+0x30; //對照ASCII表,0的編碼"十進(jìn)制"48--"十六進(jìn)制"0x30
if(a>56) s=1;
else if(a<=56) x=1;
if(s==1&&x==1) //電壓下降沿檢測
{j++; //下降次數(shù)累加
s=0;}
Uartsend_adc(adcnum);
U1_TX_C("V");
Uartsend_1(0X22); //' “ '的十六進(jìn)制數(shù)
Uartsend_1(0Xff); //空格
U1_TX_C("次");
SendFourData(j);
x=0;
if(j>=255)
{lj++;
j=0;}
Uartsend_1(0Xff);
U1_TX_C("累加");
SendFourData(lj);
Uartsend_1(0Xff);
Uartsend_1(0Xff);
Uartsend_1(0Xff);
Uartsend_1(0Xff);
Uartsend_1(0Xff);
Uartsend_1(0Xff);
Uartsend_1(0Xff);
Uartsend_1(0Xff);
Delay_ms(500);
}
}
復(fù)制代碼
所有資料51hei提供下載:
電壓采集次數(shù)不帶掉電保存.rar
(45.5 KB, 下載次數(shù): 50)
2018-11-14 11:36 上傳
點(diǎn)擊文件名下載附件
文本模式
下載積分: 黑幣 -5
作者:
asiaschain
時(shí)間:
2019-12-22 21:06
呵呵不錯(cuò)謝謝
作者:
竹林清風(fēng)2022
時(shí)間:
2022-12-14 10:34
不錯(cuò)哦,可以試試
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1