标题: 单片机数码管亮但是没有数字咋回事? [打印本页]

作者: 请求指教    时间: 2020-5-26 17:20
标题: 单片机数码管亮但是没有数字咋回事?
题目要求是 利用ADC0809设计一个简易数字电压表,要求可以测量0~5V之间8路输入电压
值,电压值由4LED数码管显示,并在数码管上轮流显示或单路选择显示; 2. 测量最小分辨率为0.019V,测量误差约为±0.02V


#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;
                                }




作者: 请求指教    时间: 2020-5-26 17:21
感谢各位!求助
作者: MOVEORDIE    时间: 2020-5-26 20:38
刚学到AD转换,数码管亮但没数值变化显示,可能是没有启动转换或者转换的通道不会。没有用过仿真,都是直接实物上手。初学者,没有注释,不太看得明白代码
作者: 请求指教    时间: 2020-5-26 21:34
有人能帮帮我吗,弄到凌晨也没整明白,感谢!
作者: wulin    时间: 2020-5-26 22:31
请求指教 发表于 2020-5-26 21:34
有人能帮帮我吗,弄到凌晨也没整明白,感谢!

没有主循环程序不可能正常运行
void main()
{
        timeinitial();
        while(1)
        {
//确认以下转换程序是否正确
                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();
        }
}
作者: 请求指教    时间: 2020-5-27 00:28
wulin 发表于 2020-5-26 22:31
没有主循环程序不可能正常运行
void main()
{

你好 感谢回复 ! 我把你那段程序替换后 仿真后还是没有什么变化  
作者: 请求指教    时间: 2020-5-27 00:48
本帖最后由 请求指教 于 2020-5-27 10:20 编辑

头秃...
作者: wulin    时间: 2020-5-27 10:51
请求指教 发表于 2020-5-27 00:28
你好 感谢回复 ! 我把你那段程序替换后 仿真后还是没有什么变化

楼主要仔细查对,你的软件和硬件图都有错误,给你改好了。
数字电压表.zip (84.74 KB, 下载次数: 10)





作者: 请求指教    时间: 2020-5-27 12:32
wulin 发表于 2020-5-26 22:31
没有主循环程序不可能正常运行
void main()
{

你好 感谢回复 ! 我是做的数字电压表的那位,我把你那段程序替换后 仿真后还是没有什么变化。我现在甚至怀疑我的程序和电路图都是错的,都不能实现我的题目要求了,能再帮忙看看吗,单片机基础太差了  万分感谢!!!
作者: 请求指教    时间: 2020-5-27 13:40
wulin 发表于 2020-5-27 10:51
楼主要仔细查对,你的软件和硬件图都有错误,给你改好了。

感谢 感谢   真真切切感受到了  书到用时方恨少! 您能具体给我指出一下错误吗  说实话我甚至有些程序还看不明白...感谢!
作者: wulin    时间: 2020-5-27 13:46
请求指教 发表于 2020-5-27 12:32
你好 感谢回复 ! 我是做的数字电压表的那位,我把你那段程序替换后 仿真后还是没有什么变化。我现在甚至 ...

你的软件和硬件图都有错误,看上面8楼回帖。
作者: 请求指教    时间: 2020-5-27 15:36
wulin 发表于 2020-5-27 10:51
楼主要仔细查对,你的软件和硬件图都有错误,给你改好了。

你好,还有一个疑问,题目要求能够测量8路电压,目前是不是还无法实现要求
作者: 请求指教    时间: 2020-5-27 21:21
wulin 发表于 2020-5-27 13:46
你的软件和硬件图都有错误,看上面8楼回帖。

你好   要求能够测量8路输入电压   此时只有1路输入  又该怎么修改呢   感谢!  
作者: wulin    时间: 2020-5-27 22:52
请求指教 发表于 2020-5-27 21:21
你好   要求能够测量8路输入电压   此时只有1路输入  又该怎么修改呢   感谢!

控制ADD-A、ADD-B、ADD-C 从000~111不就分别测量IN0~IN7,这点悟性都没有后面的路怎么走?
作者: 随风飘远    时间: 2020-5-28 00:18
ADC器件不是有8 个输入吗? 就是控制分时采样 八个输入就可以啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1