亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版
標題:
STC8單片機12位AD轉換顯示程序
[打印本頁]
作者:
zhangshuyuan1
時間:
2022-9-5 19:11
標題:
STC8單片機12位AD轉換顯示程序
#include<STC8.H>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//***********y延時聲明**************************
void Delay(uint t);
void LCD_Delay(uint t);
//***********LCD1602聲明***********************************
void lcd_init(void);
void DisplayOneChar(uint X, uint Y, uint DData);
//**********************************************
sbit LED0=P7^1;
//**********************************************
uchar xdata table1[]={" "};
uchar xdata table2[]={"ADC_V: "};
//**********************************************
uint ADC_Result;uint ADC_count; ulong ADC_sum;uint xdata ADC_data[100]; uint ADC_flag;
void Display_line(uchar y,uchar *DData)
{
uchar i;
for(i=0;i<16;i++)
{
if(y==0) DisplayOneChar(i,0,DData[i]);
else if(y==1) DisplayOneChar(0x40+i,1,DData[i]);
}
}
void table2_charge()
{
table2[8]=ADC_Result%10000/1000+0x30;
table2[9]=ADC_Result%1000/100+0x30;
table2[10]=ADC_Result%100/10+0x30;
table2[11]=ADC_Result%10+0x30;
}
void ADC_init()
{
P1M0 &=0xBF; //設置 P0.6 為 ADC 口 M1為1,M0為0,高阻輸入 1011 1111 0100 0000
P1M1 |= 0x40;
ADCCFG = 0x0f; //設置 ADC 時鐘為系統時鐘/2/16/16 數據左對齊
ADC_CONTR = 0x8E; //使能 ADC 模塊 使能 1000 1110 通道P0.6
EADC = 1; //使能 ADC 中斷
EA = 1;
ADC_CONTR |= 0x40; //啟動 AD 轉換
}
void ADC_filter(uint *P)
{
uint i,j,temp;
ulong sum=0;
for(j=0;j<99;j++)
for(i=0;i<99-j;i++)
{
if(*(P+i)>*(P+i+1))
{
temp=*(P+i);
*(P+i)=*(P+i+1);
*(P+i+1)=temp;
}
}
if(ADC_flag!=0)
{ for(i=45;i<55;i++)
{
sum+=P[i];
}
//ADC_Result=sum/10;
ADC_Result=(uint)((float)(sum/10*2.5/4.096));
}
}
void main()
{
LED0=0;
lcd_init();
ADC_init();
ADC_count=0;ADC_flag=0;
while(1)
{
// LED0=!LED0;
// LCD_Delay(5);
table2_charge();
Display_line(0,table1);
Display_line(1,table2);
ADC_filter(ADC_data);
}
}
void ADC_Isr() interrupt 5
{
ADC_CONTR &= ~0x20; //清中斷標志
ADC_data[ADC_count]= (ADC_RESL>>4)+ADC_RES*16; //讀取 ADC 結果
ADC_CONTR |= 0x40; //繼續 AD 轉換
ADC_count++;
if( ADC_count>100) {ADC_count=0; ADC_flag++; if(ADC_flag>=2) ADC_flag=1;}
}
復制代碼
作者:
lsh04
時間:
2022-9-8 17:59
一下程序呢?
//***********y延時聲明**************************
void Delay(uint t);
void LCD_Delay(uint t);
//***********LCD1602聲明***********************************
void lcd_init(void);
void DisplayOneChar(uint X, uint Y, uint DData);
作者:
gxgllzh123
時間:
2022-12-2 20:56
樓主,沒有完呀
作者:
gxgllzh123
時間:
2022-12-2 20:56
沒有完
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1