找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3439|回复: 14
收起左侧

单片机数码管亮但是没有数字咋回事?

[复制链接]
ID:761785 发表于 2020-5-26 17:20 | 显示全部楼层 |阅读模式
题目要求是 利用ADC0809设计一个简易数字电压表,要求可以测量0~5V之间8路输入电压
值,电压值由4LED数码管显示,并在数码管上轮流显示或单路选择显示; 2. 测量最小分辨率为0.019V,测量误差约为±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;
                                }



回复

使用道具 举报

ID:761785 发表于 2020-5-26 17:21 | 显示全部楼层
感谢各位!求助
回复

使用道具 举报

ID:377210 发表于 2020-5-26 20:38 | 显示全部楼层
刚学到AD转换,数码管亮但没数值变化显示,可能是没有启动转换或者转换的通道不会。没有用过仿真,都是直接实物上手。初学者,没有注释,不太看得明白代码
回复

使用道具 举报

ID:761785 发表于 2020-5-26 21:34 | 显示全部楼层
有人能帮帮我吗,弄到凌晨也没整明白,感谢!
回复

使用道具 举报

ID:213173 发表于 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();
        }
}
回复

使用道具 举报

ID:761785 发表于 2020-5-27 00:28 | 显示全部楼层
wulin 发表于 2020-5-26 22:31
没有主循环程序不可能正常运行
void main()
{

你好 感谢回复 ! 我把你那段程序替换后 仿真后还是没有什么变化  
回复

使用道具 举报

ID:761785 发表于 2020-5-27 00:48 | 显示全部楼层
本帖最后由 请求指教 于 2020-5-27 10:20 编辑

头秃...
回复

使用道具 举报

ID:213173 发表于 2020-5-27 10:51 | 显示全部楼层
请求指教 发表于 2020-5-27 00:28
你好 感谢回复 ! 我把你那段程序替换后 仿真后还是没有什么变化

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

使用道具 举报

ID:761785 发表于 2020-5-27 12:32 | 显示全部楼层
wulin 发表于 2020-5-26 22:31
没有主循环程序不可能正常运行
void main()
{

你好 感谢回复 ! 我是做的数字电压表的那位,我把你那段程序替换后 仿真后还是没有什么变化。我现在甚至怀疑我的程序和电路图都是错的,都不能实现我的题目要求了,能再帮忙看看吗,单片机基础太差了  万分感谢!!!
回复

使用道具 举报

ID:761785 发表于 2020-5-27 13:40 | 显示全部楼层
wulin 发表于 2020-5-27 10:51
楼主要仔细查对,你的软件和硬件图都有错误,给你改好了。

感谢 感谢   真真切切感受到了  书到用时方恨少! 您能具体给我指出一下错误吗  说实话我甚至有些程序还看不明白...感谢!
回复

使用道具 举报

ID:213173 发表于 2020-5-27 13:46 | 显示全部楼层
请求指教 发表于 2020-5-27 12:32
你好 感谢回复 ! 我是做的数字电压表的那位,我把你那段程序替换后 仿真后还是没有什么变化。我现在甚至 ...

你的软件和硬件图都有错误,看上面8楼回帖。
回复

使用道具 举报

ID:761785 发表于 2020-5-27 15:36 | 显示全部楼层
wulin 发表于 2020-5-27 10:51
楼主要仔细查对,你的软件和硬件图都有错误,给你改好了。

你好,还有一个疑问,题目要求能够测量8路电压,目前是不是还无法实现要求
回复

使用道具 举报

ID:761785 发表于 2020-5-27 21:21 | 显示全部楼层
wulin 发表于 2020-5-27 13:46
你的软件和硬件图都有错误,看上面8楼回帖。

你好   要求能够测量8路输入电压   此时只有1路输入  又该怎么修改呢   感谢!  
回复

使用道具 举报

ID:213173 发表于 2020-5-27 22:52 | 显示全部楼层
请求指教 发表于 2020-5-27 21:21
你好   要求能够测量8路输入电压   此时只有1路输入  又该怎么修改呢   感谢!

控制ADD-A、ADD-B、ADD-C 从000~111不就分别测量IN0~IN7,这点悟性都没有后面的路怎么走?
回复

使用道具 举报

ID:319023 发表于 2020-5-28 00:18 | 显示全部楼层
ADC器件不是有8 个输入吗? 就是控制分时采样 八个输入就可以啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表