標(biāo)題:
注釋詳細(xì)的ADC0808數(shù)模轉(zhuǎn)換(電壓檢測(cè))單片機(jī)源程序+仿真
[打印本頁(yè)]
作者:
瓦莉拉丶
時(shí)間:
2018-10-19 23:54
標(biāo)題:
注釋詳細(xì)的ADC0808數(shù)模轉(zhuǎn)換(電壓檢測(cè))單片機(jī)源程序+仿真
ADC0808仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(15.33 KB, 下載次數(shù): 88)
下載附件
2018-10-20 00:25 上傳
單片機(jī)源程序如下:
#include <reg51.h>//包含頭文件reg51.h
sbit CLOCK=P2^4;//定義ADC0809的CLOCK引腳
sbit EOC=P2^5; //定義ADC0809的EOC引腳
sbit START=P2^6; //定義ADC0809的START引腳
sbit OE=P2^7; //定義ADC0809的OE引腳
sbit high_bit=P3^0; //定義數(shù)碼管的高位位選通
sbit low_bit=P3^1; //定義數(shù)碼管的低位位選通
unsigned char ADC_val;//定義AD轉(zhuǎn)換結(jié)果暫存
unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
};//0~9的段碼表
unsigned char table1[]=
{0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
};//0.~9.的段碼表
void display(unsigned char);//顯示函數(shù)聲明
void delayms(unsigned int);//延時(shí)函數(shù)聲明
//主程序
void main()
{
while(1)
{
START=0;START=1;START=0;//啟動(dòng)A/D轉(zhuǎn)換
while(EOC); //等待EOC變低
while(!EOC);//等待EOC變低,轉(zhuǎn)換結(jié)束
OE=1;ADC_val=P0;OE=0;//讀轉(zhuǎn)換結(jié)果
display(ADC_val);//顯示16進(jìn)制轉(zhuǎn)換結(jié)果
}
}
//顯示函數(shù)
void display(unsigned char ADC_display)
{
unsigned char display_high,display_low;
//把兩位十六進(jìn)制的模數(shù)轉(zhuǎn)換結(jié)果拆分出低位
display_low=((ADC_display+1)*50/255)%10;
//把低位數(shù)的段碼通過(guò)P1口送到低位數(shù)碼管
P1=table[display_low];
low_bit=1;//選通兩位數(shù)碼管的低位
delayms(10);//延時(shí)10ms
low_bit=0;
//把兩位十六進(jìn)制的模數(shù)轉(zhuǎn)換結(jié)果拆分出高位
display_high=((ADC_display+1)*50/255)/10;
//把高位數(shù)的段碼通過(guò)P1口送到高位數(shù)碼管
P1=table1[display_high];
high_bit=1;//選通兩位數(shù)碼管的高位
delayms(10);//延時(shí)10ms
high_bit=0;
}
//延時(shí)函數(shù)
void delayms(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=114;j>0;j--);
}
復(fù)制代碼
所有資料51hei提供下載:
ADC0808模數(shù)轉(zhuǎn)換.rar
(64.85 KB, 下載次數(shù): 101)
2018-10-19 23:54 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
可嘆的小草
時(shí)間:
2020-3-13 20:04
今天寫這個(gè)半天寫不出來(lái)快自閉了。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1