標(biāo)題:
HT66f0025項(xiàng)目單片機(jī)程序,ADC例程
[打印本頁]
作者:
牧師
時(shí)間:
2018-7-9 15:18
標(biāo)題:
HT66f0025項(xiàng)目單片機(jī)程序,ADC例程
這是我第一次用合泰單片機(jī)寫程序,里面用到定時(shí)器和ADC,分享一下。
0.png
(9.55 KB, 下載次數(shù): 113)
下載附件
2018-7-10 01:49 上傳
單片機(jī)源程序如下:
#include "HT66F002.h"
#define MS1000HSPINIT 250 //高速模式
unsigned char ms_1000; //定義1/31S
unsigned int ms1000set; //定義1S
unsigned char ms_10000;
unsigned int minute1;
unsigned int minute360;
unsigned char chargedetect;
unsigned char chargemode;
unsigned char levelstore;
//設(shè)備的實(shí)際開關(guān)機(jī)狀態(tài)位,0為關(guān)機(jī),1為開機(jī)
unsigned char SYS_ON_OFF_SATE;
//燈亮度設(shè)置函數(shù)
void LightSet(unsigned char setvalue)
{
_stm0al=setvalue; _stm0ah=0;
}
//AD轉(zhuǎn)換函數(shù)
unsigned int AD_CaiJi() //unsigned char Channel
{
unsigned int AD_Data;
AD_Data=0;
//開啟轉(zhuǎn)換
_start = 0;
_start = 1;
_start = 0;
while(_adbz==1); //輪詢轉(zhuǎn)換
AD_Data = _sadoh;
AD_Data <<=4;
AD_Data += (_sadol>>4);
return AD_Data;
}
void main()
{
//adc參數(shù)定義
unsigned int adcx;
unsigned char ADC_Sate;
unsigned char ADC_Sate1=0;
//adc數(shù)據(jù)存儲(chǔ)變量
unsigned int adcx1;
unsigned int adcx2;
unsigned int adcx3;
unsigned int adcx4;
unsigned int adcx5;
//I/O口初始化設(shè)置
_papu = 0b11011011; //上拉設(shè)置,1為上拉,0為不上拉
_pac = 0b11111011; //IO口方向設(shè)置,0為輸出,1為輸入
//引腳功能設(shè)置
_pas4=1; //PA2=STP0
_pas6=1; //_pas6和_pas7用來設(shè)置PA5 功能選擇,選擇為ADC的通道AN3
_pas7=1;
//STM PWM 輸出設(shè)置
_stm0c1=0b10101000; //fINT=fSYS/4, PWM Mode 256/2M=pres
LightSet(0);
_stm0c0=0b00001010; //打開定時(shí)器
//AD初始化設(shè)置,參照數(shù)據(jù)手冊(cè)A/D轉(zhuǎn)換器章節(jié)
_sadc0 = 0b00100011; //使能ADC AN3
_sadc1 = 0b00000010; //fsys/4
_sadc2 = 0b00000000; //除能OPA
//系統(tǒng)參初始化
_hlclk=1; //時(shí)鐘初始化
ms1000set=MS1000HSPINIT;
ms_10000=31;
minute1=1860;
minute360=361;
SYS_ON_OFF_SATE=0; //關(guān)開機(jī)起始狀態(tài)設(shè)置
levelstore=125; //亮度初始化
while(1)
{
if(_stmp0f) //判斷STM中斷標(biāo)志位是否為1,everay 1ms/次
{
_clrwdt(); //清除看門狗定時(shí)器計(jì)數(shù)器
_stmp0f=0;
if(--ms_1000==0) //every 1/31s/次
{
ms_1000=ms1000set;
if(--ms_10000==0) //every 1s/次
{
ms_10000=31;
adcx=AD_CaiJi();
adcx1=AD_CaiJi();
adcx2=AD_CaiJi();
adcx3=AD_CaiJi();
adcx4=AD_CaiJi();
if((adcx>=2550)&&(adcx1>=2550)&&(adcx2>=2550)&&(adcx3>=2550)&&(adcx4>=2550)) //1.7V 1800
{
ADC_Sate=0;
ADC_Sate1=ADC_Sate;
SYS_ON_OFF_SATE=0; //關(guān)機(jī)狀態(tài)
}
else if((adcx<=2150)&&(adcx1<=2150)&&(adcx2<=2150)&&(adcx3<=2150)&&(adcx4<=2150)) //1.4V 1511
{
ADC_Sate=1;
ADC_Sate1=ADC_Sate;
SYS_ON_OFF_SATE=1; //開機(jī)狀態(tài)
}
else
{
ADC_Sate=ADC_Sate1;
}
if(chargemode==0)
{
if(ADC_Sate) //adc值小于1.6V
{
chargedetect=0;
LightSet(levelstore);
}
else if(++chargedetect>5)
{
chargemode=1;//start charge
LightSet(0);
levelstore=125;
minute1=1860;
minute360=361;
}
}
else
{
if(!ADC_Sate) //adc值大于1.6V
{
chargedetect=0;
LightSet(0);
}
else if(++chargedetect>5)
{
chargemode=0;//stop charge
LightSet(levelstore);
minute1=1860;
minute360=361;
}
}
}
if(--minute1==0) //everay minute/次
{
minute1=1860;
if(--minute360==0) //everay 6h/次
{
minute360=361;
levelstore=30;
}
}
}
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
HT66F0025單片機(jī)例程.rar
(23.63 KB, 下載次數(shù): 102)
2018-7-9 15:17 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
cool900
時(shí)間:
2018-7-21 22:05
謝謝分享
作者:
kmtbm
時(shí)間:
2019-1-2 15:44
有電路圖
作者:
kmtbm
時(shí)間:
2019-1-2 15:45
謝謝你的分享
作者:
tangkuan660
時(shí)間:
2021-5-12 10:18
謝謝分享,現(xiàn)在免費(fèi)能下的網(wǎng)站越來越少了。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1