標(biāo)題:
基于單片機(jī)和adc0832的電壓表設(shè)計(jì) 精確到第三位小數(shù)點(diǎn),protues仿真
[打印本頁]
作者:
酷酷天天
時(shí)間:
2017-6-7 20:28
標(biāo)題:
基于單片機(jī)和adc0832的電壓表設(shè)計(jì) 精確到第三位小數(shù)點(diǎn),protues仿真
這是我做的基于adc0832的電壓表,模擬電壓輸入0-5v,adc0832模數(shù)轉(zhuǎn)換
運(yùn)用四位數(shù)碼管顯示,精確到第三位小數(shù)點(diǎn),protues仿真,單片機(jī)型號(hào)為stc89c52
0.png
(954.23 KB, 下載次數(shù): 118)
下載附件
2017-6-8 02:58 上傳
0.png
(60.32 KB, 下載次數(shù): 118)
下載附件
2017-6-8 02:58 上傳
單片機(jī)源程序如下:
#include<AT89x51.h>
#include<intrins.h> //頭文件聲明
#define uchar unsigned char
#define uint unsigned int //定義數(shù)據(jù)類型
sbit CS=P2^3; //0832的cs為單片機(jī)p2.3
sbit CLK=P2^2; //0832的clk為單片機(jī)p2.2
sbit DO=P2^1; //0832的do為單片機(jī)p2.1
sbit DI=P2^0; //0832的di為單片機(jī)p2.0
uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//共陽數(shù)碼管編碼
uint vvv,i; //聲明電壓值vvv
void delay (int tt) //延時(shí)函數(shù),時(shí)間為tt*0.5ms
{
while(tt--)
{
for(i=0;i<300;i++);
}
}
uchar Get_AD_Result()
{
uint j=0;
uchar dat1=0;
CS=1;
CLK=0; _nop_(); _nop_();
CS = 0; _nop_(); _nop_();
CLK = 1; _nop_(); _nop_(); //第一個(gè)上升沿
DI = 1; _nop_(); _nop_(); //起始信號(hào)
CLK = 1; _nop_(); _nop_();
CLK = 0;DI = 1; _nop_(); _nop_(); //第一個(gè)下降
CLK = 1; _nop_(); _nop_();
CLK = 0;DI = 1; _nop_(); _nop_(); //第二個(gè)下降
CLK = 1;DI = 0; _nop_(); _nop_();
CLK = 0;DI = 1; _nop_(); _nop_(); //第三個(gè)下降后,須將DI置高,準(zhǔn)備接收數(shù)據(jù)
for(j=0;j<8;j++)
{
CLK = 1; _nop_(); _nop_(); //第四個(gè)下,一位一位的讀取數(shù)據(jù)
CLK = 0; _nop_(); _nop_();
if(DO) //如果這一位數(shù)據(jù)為1,dat1與0x01或等,最后一位變?yōu)?
{
dat1|=0x01;
}
else //或者這一位數(shù)據(jù)為0,將dat1于0xfe與等,最后一位變成0
{
dat1&=0xfe;
}
CLK=0;
_nop_();
CLK=1; //上升沿,輸出數(shù)據(jù)
dat1=dat1<<1; //將數(shù)據(jù)進(jìn)行左移運(yùn)算,一直到8位移入完成
}
CS = 1; //使能置高,禁用AD芯片
return dat1; //返回AD值
}
void display(uint dat) //顯示函數(shù)程序
{
P1=0xff; //消隱 ,顯示方式為動(dòng)態(tài)顯示
P0=0x08; //通過p0口驅(qū)動(dòng),顯示最高位,個(gè)位
P1=tab[dat/100]&0x7f; //計(jì)算出個(gè)位數(shù)字,并帶小數(shù)點(diǎn)進(jìn)行顯示
delay(1); //延時(shí)
P1=0xff;
P0=0x04; //顯示小數(shù)點(diǎn)后第一位
P1=tab[dat%100/10];
delay(1);
P1=0xff;
P0=0x02; //顯示小數(shù)點(diǎn)后第二位
P1=tab[dat%10];
delay(1);
P1=0xff;
P0=0x01; //顯示最后一位
P1=tab[dat%1];
delay(1);
P1=0xff;
} //主函數(shù)
void main()
{
//P1=0xff; //清零
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
adc0832.rar
(63.36 KB, 下載次數(shù): 80)
2017-6-8 03:00 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
bomber_kk
時(shí)間:
2017-12-13 12:02
take a look
作者:
bomber_kk
時(shí)間:
2017-12-13 12:07
學(xué)習(xí)一下先
作者:
bomber_kk
時(shí)間:
2017-12-15 15:54
沒有幣
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1