找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4837|回復(fù): 14
收起左側(cè)

單片機(jī)數(shù)碼管亮但是沒有數(shù)字咋回事?

[復(fù)制鏈接]
ID:761785 發(fā)表于 2020-5-26 17:20 | 顯示全部樓層 |閱讀模式
題目要求是 利用ADC0809設(shè)計(jì)一個(gè)簡(jiǎn)易數(shù)字電壓表,要求可以測(cè)量0~5V之間8路輸入電壓
值,電壓值由4LED數(shù)碼管顯示,并在數(shù)碼管上輪流顯示或單路選擇顯示; 2. 測(cè)量最小分辨率為0.019V,測(cè)量誤差約為±0.02V

$@[ZL36K92~9[KN1VQIJT{5.png
#include<reg52.h>
unsigned char code
        dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
        unsigned char dispbuf[4];
        unsighed ;char getdata;
        unsigned int temp;
        sbit ST=P3^0;
        sbit OE=P3^1;
    sbit EOC=P3^2;
        sbit CLK=P3^3;
        sbit P20=P2^0;
        sbit P21=P2^1;
        sbit P22=P2^2;
        sbit P23=P2^3;
    sbit P17=P1^7;
    sbit bb=P3^7;
//unsigned char o;
void timeinitial();
void delay(unsigned int i);
void timeinitial()
{
TMOD=0x11;
TH1=(65536-200)/256;
TL1=(65536-200)%256;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
EA=1;
ET1=1;
ET0=1;
TR1=1;
}
void Delay(unsigned int i)
{
unsigned int j,k;
for(k=0;k<i;k++)
for(j=0;j<125;j++);
}


void Display()
{
P1=dispbitcode[dispbuf[3]];
P20=0;
P21=1;
P22=1;
P23=1;
Delay(10);
P1=0x00;
P1=dispbitcode[dispbuf[2]];
P17=1;
P20=1;
P21=0;
P22=1;
P23=1;
Delay(10);
P1=0x00;
P1=dispbitcode[dispbuf[1]];
P20=1;
P21=1;
P22=0;
P23=1;
Delay(10);
P1=0x00;
P1=dispbitcode[dispbuf[0]];
P20=1;
P21=1;
P22=1;
P23=0;
Delay(10);
P1=0x00;
}


void main()
{
timeinitial ();
{
ST=0;
OE=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
getdata=P0;
OE=0;
if(getdata>=255)
        {
        TR0=1;
        }
        else
                TR0=0;
                temp=getdata*1.0/255*500;
                dispbuf[0]=temp%10;
                dispbuf[1]=temp/10%10;
                dispbuf[2]=temp/100;
                dispbuf[3]=temp/1000;
                Display();
                }
                }
                void tl(void)interrupt 3 using 0
                        {
                        TH1=(65536-200)/256;
                        TL1=(65536-200)%256;
                        CLK=~CLK;
                        }
                        
                        void t0(void)interrupt 1 using 0
                                {
                                TH0=(65536-2000)/256;
                                TL0=(65536-2000)%256;
                                bb=~bb;
                                }



回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-26 17:21 | 顯示全部樓層
感謝各位!求助
回復(fù)

使用道具 舉報(bào)

ID:377210 發(fā)表于 2020-5-26 20:38 | 顯示全部樓層
剛學(xué)到AD轉(zhuǎn)換,數(shù)碼管亮但沒數(shù)值變化顯示,可能是沒有啟動(dòng)轉(zhuǎn)換或者轉(zhuǎn)換的通道不會(huì)。沒有用過仿真,都是直接實(shí)物上手。初學(xué)者,沒有注釋,不太看得明白代碼
回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-26 21:34 | 顯示全部樓層
有人能幫幫我嗎,弄到凌晨也沒整明白,感謝!
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-5-26 22:31 | 顯示全部樓層
請(qǐng)求指教 發(fā)表于 2020-5-26 21:34
有人能幫幫我嗎,弄到凌晨也沒整明白,感謝!

沒有主循環(huán)程序不可能正常運(yùn)行
void main()
{
        timeinitial();
        while(1)
        {
//確認(rèn)以下轉(zhuǎn)換程序是否正確
                ST=0;
                OE=0;
                ST=1;
                ST=0;
                while(EOC==0);
                OE=1;
                getdata=P0;
                OE=0;
                if(getdata>=255)
                {
                        TR0=1;
                }
                else TR0=0;
                temp=getdata*1.0/255*500;
//////////////////////////////////
                dispbuf[0]=temp/1000%10;
                dispbuf[1]=temp/100%10;
                dispbuf[2]=temp/10%10;
                dispbuf[3]=temp%10;
                Display();
        }
}
回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-27 00:28 | 顯示全部樓層
wulin 發(fā)表于 2020-5-26 22:31
沒有主循環(huán)程序不可能正常運(yùn)行
void main()
{

你好 感謝回復(fù) ! 我把你那段程序替換后 仿真后還是沒有什么變化  
回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-27 00:48 | 顯示全部樓層
本帖最后由 請(qǐng)求指教 于 2020-5-27 10:20 編輯

頭禿...
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-5-27 10:51 | 顯示全部樓層
請(qǐng)求指教 發(fā)表于 2020-5-27 00:28
你好 感謝回復(fù) ! 我把你那段程序替換后 仿真后還是沒有什么變化

樓主要仔細(xì)查對(duì),你的軟件和硬件圖都有錯(cuò)誤,給你改好了。 無標(biāo)題.jpg
數(shù)字電壓表.zip (84.74 KB, 下載次數(shù): 10)




回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-27 12:32 | 顯示全部樓層
wulin 發(fā)表于 2020-5-26 22:31
沒有主循環(huán)程序不可能正常運(yùn)行
void main()
{

你好 感謝回復(fù) ! 我是做的數(shù)字電壓表的那位,我把你那段程序替換后 仿真后還是沒有什么變化。我現(xiàn)在甚至懷疑我的程序和電路圖都是錯(cuò)的,都不能實(shí)現(xiàn)我的題目要求了,能再幫忙看看嗎,單片機(jī)基礎(chǔ)太差了  萬分感謝。。
回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-27 13:40 | 顯示全部樓層
wulin 發(fā)表于 2020-5-27 10:51
樓主要仔細(xì)查對(duì),你的軟件和硬件圖都有錯(cuò)誤,給你改好了。

感謝 感謝   真真切切感受到了  書到用時(shí)方恨少! 您能具體給我指出一下錯(cuò)誤嗎  說實(shí)話我甚至有些程序還看不明白...感謝!
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-5-27 13:46 | 顯示全部樓層
請(qǐng)求指教 發(fā)表于 2020-5-27 12:32
你好 感謝回復(fù) ! 我是做的數(shù)字電壓表的那位,我把你那段程序替換后 仿真后還是沒有什么變化。我現(xiàn)在甚至 ...

你的軟件和硬件圖都有錯(cuò)誤,看上面8樓回帖。
回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-27 15:36 | 顯示全部樓層
wulin 發(fā)表于 2020-5-27 10:51
樓主要仔細(xì)查對(duì),你的軟件和硬件圖都有錯(cuò)誤,給你改好了。

你好,還有一個(gè)疑問,題目要求能夠測(cè)量8路電壓,目前是不是還無法實(shí)現(xiàn)要求
回復(fù)

使用道具 舉報(bào)

ID:761785 發(fā)表于 2020-5-27 21:21 | 顯示全部樓層
wulin 發(fā)表于 2020-5-27 13:46
你的軟件和硬件圖都有錯(cuò)誤,看上面8樓回帖。

你好   要求能夠測(cè)量8路輸入電壓   此時(shí)只有1路輸入  又該怎么修改呢   感謝!  
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-5-27 22:52 | 顯示全部樓層
請(qǐng)求指教 發(fā)表于 2020-5-27 21:21
你好   要求能夠測(cè)量8路輸入電壓   此時(shí)只有1路輸入  又該怎么修改呢   感謝!

控制ADD-A、ADD-B、ADD-C 從000~111不就分別測(cè)量IN0~IN7,這點(diǎn)悟性都沒有后面的路怎么走?
回復(fù)

使用道具 舉報(bào)

ID:319023 發(fā)表于 2020-5-28 00:18 | 顯示全部樓層
ADC器件不是有8 個(gè)輸入嗎? 就是控制分時(shí)采樣 八個(gè)輸入就可以啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表