欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STM8S光敏測(cè)量帶AD值電壓值和擋位的源程序
[打印本頁]
作者:
叫我紅領(lǐng)巾
時(shí)間:
2018-7-20 00:03
標(biāo)題:
STM8S光敏測(cè)量帶AD值電壓值和擋位的源程序
硬件電路為光敏電阻串聯(lián)一個(gè)20K的分壓電阻 接1602液晶顯示 采用STM8S208MB芯片 內(nèi)部AIN13通道 可顯示采集到的AD值、轉(zhuǎn)換后的電壓值以及擋位
STM8S單片機(jī)源程序:
/*光敏測(cè)量 接20K分壓電阻 可顯示讀取到的AD值 轉(zhuǎn)換后的電壓值及擋位 AIN13端口PF5*/
/*注意:LCD R/W引腳需要硬件接地 若要軟件接地則GPIO初始化內(nèi)定義*/
#include"iostm8s208mb.h"
#define uchar unsigned char
#define uint unsigned int
#define ushort unsigned short
uchar tab1[]="=ADC2 GUANGMIN="; //初始化后顯示畫面
uchar tab2[]="= . V =";
static uint AD_temp[10]={0,0,0,0,0,0,0,0,0,0}; //建立數(shù)組用于存放采集的AD的10個(gè)數(shù)值
static uint AD_val=0; //全局變量 ADC單次采樣數(shù)據(jù)
static uint voltage=0; //實(shí)際測(cè)得的電壓值
#define LCD_EN PF_ODR_ODR4 //LCD使能端
#define LCD_RS PF_ODR_ODR0 //LCD寫端口
#define LCD_DATA PB_ODR //LCD數(shù)據(jù)端
void delay(uint z) //約1ms延時(shí)
{
uint i,j;
while (z--)
{
for(i=0;i<50;i++)
for(j=0;j<20;j++);
}
}
void GPIO_init(void)
{
PF_DDR_DDR4=1; //LCD使能端初始化
PF_CR1_C14=1;
PF_CR2_C24=1;
PF_DDR_DDR0=1; //LCD寫端口初始化
PF_CR1_C10=1;
PF_CR2_C20=1;
PB_DDR=0xff; //LCD數(shù)據(jù)端初始化
PB_CR1=0xff;
PB_CR2=0xff;
}
void write_com(uchar com) //LCD寫命令 參考時(shí)序圖
{
LCD_RS=0;
LCD_DATA=com;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void write_data(uchar data) //LCD寫數(shù)據(jù) 參考時(shí)序圖
{
LCD_RS=1;
LCD_DATA=data;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void LCD_init(void) //LCD初始化
{
LCD_EN=0;
write_com(0x38); //設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
write_com(0x0c); //設(shè)置開顯示,不顯示光標(biāo)
write_com(0x06); //寫一個(gè)字符后地址指針加1
write_com(0x01); //顯示清0,數(shù)據(jù)指針清0
}
void LCD_watch(uchar add,uchar data) //LCD顯示計(jì)數(shù)函數(shù)
{
write_com(0x80+0x40+add);
write_data(0x30+data); //0x30表示字符表內(nèi)0-9數(shù)字的八位為0011 0000
}
void LCD_DIS2(void) //LCD初始化結(jié)束后顯示內(nèi)容
{
uchar num;
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(tab1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_data(tab2[num]);
delay(5);
}
}
void ADC_init(void) //ADC13初始化函數(shù)
{
ADC_CSR=0x0d; //禁止中斷使能 選擇AIN13通道
ADC_CR1=0x02; //Fmaster2分頻 連續(xù)轉(zhuǎn)換模式
ADC_CR2=0x08; //禁止外部觸發(fā) 右對(duì)齊方式
PF_DDR_DDR5=0; //PF5設(shè)置為無中斷懸浮輸入
PF_CR1_C15=0;
PF_CR2_C25=0;
ADC_TDRH=0xff; //禁止施密特觸發(fā)功能
ADC_TDRL=0xff;
// ADC_CR1|=0x01; //使能喚醒ADC
}
void ADC_GET(void) //ADC轉(zhuǎn)換函數(shù)
{
uchar num=0; //num為采集次數(shù)
ADC_CR1|=0x01; //使能喚醒ADC
ADC_CR1|=0x01; //啟動(dòng)ADC轉(zhuǎn)換
while(num<10) //采集10次結(jié)果
{
while((ADC_CSR&0x80)==0); //判斷EOC位是否為1 等待轉(zhuǎn)換結(jié)束
ADC_CSR&=0x7f; //結(jié)束后EOC位由軟件清零
AD_temp[num]=(uint)ADC_DRL; //先賦值低位
AD_temp[num]|=(uint)ADC_DRH<<8; //高位左移8位后與低位拼合
num++;
}
ADC_CR1&=0xfe; //關(guān)閉ADC轉(zhuǎn)換
}
void AVG_AD_temp(void) //平均值濾波函數(shù)
{
uchar i,j;
uint temp; //定義暫存變量暫存數(shù)值
for(i=10;i>=1;i--)
{
for(j=0;j<(i-1);j++)
{
if(AD_temp[j]>AD_temp[j+1])
{
temp=AD_temp[j];
AD_temp[j]=AD_temp[j+1];
AD_temp[j+1]=temp;
}
}
}
for(i=2;i<=7;i++) //將采集到的10個(gè)值取中間6個(gè)進(jìn)行累加求平均
{
AD_val+=AD_temp[i];
}
AD_val=(uint)AD_val/6;
}
void main(void)
{
uchar qian,bai,shi,ge,qian1,bai1,shi1,ge1,shi2,ge2;
GPIO_init();
ADC_init();
LCD_init();
LCD_DIS2();
while(1)
{
ADC_GET();
AVG_AD_temp();
// delay(50);
/*這里顯示的是AIN13讀取到的AD實(shí)際值*/
qian=AD_val/1000; //千位
bai=AD_val%1000/100; //百位
shi=AD_val%100/10; //十位
ge=AD_val%10; //個(gè)位
LCD_watch(1,qian);
LCD_watch(2,bai);
LCD_watch(3,shi);
LCD_watch(4,ge);
/*這里顯示的是擋位(0-99對(duì)應(yīng)0-1023) 電壓基準(zhǔn)來自Vref+*/
shi2=(uint)(AD_val*0.09766)/10; //十位
ge2=(uint)(AD_val/0.09766)%10; //個(gè)位
LCD_watch(13,shi2);
LCD_watch(14,ge2);
voltage=(uint)(AD_val*5.087890625); //獲取的AD值乘以基準(zhǔn)值 由于乘積為浮點(diǎn)型所以再次轉(zhuǎn)換為整形
AD_val=0; //AD值清零
/*這里顯示的是AD轉(zhuǎn)換后的電壓值 電壓基準(zhǔn)來自Vref+ 此處和VDD連接 即+5V*/
qian1=voltage/1000; //千位
bai1=voltage%1000/100; //百位
shi1=voltage%100/10; //十位
ge1=voltage%10; //個(gè)位
LCD_watch(6,qian1);
LCD_watch(8,bai1);
LCD_watch(9,shi1);
LCD_watch(10,ge1);
}
}
復(fù)制代碼
所有資料51hei提供下載:
光敏測(cè)量帶AD值電壓值和擋位.rar
(272.37 KB, 下載次數(shù): 24)
2018-7-20 00:03 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
叫我紅領(lǐng)巾
時(shí)間:
2018-7-20 00:04
稍加改動(dòng)可移植到8S103/105等單片機(jī)上
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1