找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3581|回复: 21
打印 上一主题 下一主题
收起左侧

0-59秒循环显示程序,十位显示很暗,请大神帮忙

  [复制链接]
跳转到指定楼层
楼主
本人是单片机新手,最近正在学习51单片机,但在学习过程中遇到了困难,在编写0-59循环显示程序时,发现十位数一直无法正常显示,不知道怎么回事,还请大神帮帮忙。以下是源程序和原理图,请大神帮帮忙。该如何修改

#include <reg52.h>
#define uchar unsigned
#define uint unsigned
sbit duan=P1^0;//段锁存器
void delay(uint z);
void display(uint a,uint b);
uint a,shi,ge,num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void init();
void main()
{
    init();//程序初始化
   
    while(1)
    {
       if(a==20)
       {
          a=0;
          num++;//秒计时
          if(num>59)
             num=0;
          shi=num/10;
          ge=num%10;
          display(shi,ge);
       }
    }
}
void display(uint a,uint b)
{
     //十位数的显示
     duan=1;
     P3=table[a];
     duan=0;
     P2=0xfd;
     delay(1);
     //个位数的显示
     duan=1;
     P3=table[ b];
     duan=0;
     P2=0xfe;
     delay(1);
}
void timer0() interrupt 1
{
    a++;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;


}
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void init()
{
    a=0;
    num=0;
    TMOD=0x01;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:88060 发表于 2016-10-7 08:57 | 只看该作者
P3=table; 这个有问题?
回复

使用道具 举报

板凳
ID:99525 发表于 2016-10-7 10:03 | 只看该作者
这个延时好像太短了吧~~
回复

使用道具 举报

地板
ID:141506 发表于 2016-10-7 10:18 | 只看该作者

这个是我在上传程序的时候漏写了 本来是P3=table[ge];
回复

使用道具 举报

5#
ID:141506 发表于 2016-10-7 10:20 | 只看该作者
雪玉寐影 发表于 2016-10-7 10:03
这个延时好像太短了吧~~

是十位显示的延时太短了吗?我再改长一点试试
回复

使用道具 举报

6#
ID:141506 发表于 2016-10-7 21:31 | 只看该作者
雪玉寐影 发表于 2016-10-7 10:03
这个延时好像太短了吧~~

增加延时时间,还是没有解决问题。
回复

使用道具 举报

7#
ID:123289 发表于 2016-10-8 01:17 | 只看该作者
均分各位显示的时间即可。
回复

使用道具 举报

8#
ID:57657 发表于 2016-10-8 07:06 | 只看该作者
配置一下P2M0、P2M1、P3M0、P3M1寄存器试试。
回复

使用道具 举报

9#
ID:141648 发表于 2016-10-8 10:47 | 只看该作者
显示时间过短
回复

使用道具 举报

10#
ID:141506 发表于 2016-10-8 13:07 | 只看该作者
npn 发表于 2016-10-8 07:06
配置一下P2M0、P2M1、P3M0、P3M1寄存器试试。

好的 谢谢啊
回复

使用道具 举报

11#
ID:141506 发表于 2016-10-8 13:08 | 只看该作者

加长了延时时间,亮度增加了。但是十位显示一直在闪烁,
回复

使用道具 举报

12#
ID:138155 发表于 2016-10-8 13:40 | 只看该作者
P3=table 好像没有子程序啊
回复

使用道具 举报

13#
ID:7485 发表于 2016-10-8 15:15 | 只看该作者
本帖最后由 ahshmj 于 2016-10-8 15:19 编辑

     duan=1;
     P3=table[a];
     duan=0;
     P2=0xfd;
     delay(1);
     //个位数的显示
     duan=1;
     P3=table;
     duan=0;
     P2=0xfe;
     delay(1);
在这段程序中,
   “delay(1);
     //个位数的显示
     duan=1; ”
    当延时过后,接着就是duan=1 ,关闭了十位的显示。
个位显示过以后呢?要等到下次运行到一个“duan=1”时,才关闭个位显示,所以个位显示的时间长、就会很亮。

解决的办法是:个位的显示延时后面也加上“duan=1”,这样就会像十位一样了,如果感觉亮度都达不到要求,加大延时即可。

duan=1;
P3=table[a];
duan=0;
P2=0xfd;
delay(1);
//个位数的显示
duan=1;
P3=table;
duan=0;
P2=0xfe;
delay(1);
duan=1;



回复

使用道具 举报

14#
ID:7485 发表于 2016-10-8 15:21 | 只看该作者
其他的错误,如P3=table;
大概是笔误?你自己看着改。
回复

使用道具 举报

15#
ID:141506 发表于 2016-10-8 21:14 | 只看该作者
wuyibin2003 发表于 2016-10-8 13:40
P3=table 好像没有子程序啊

上传程序的时候漏掉了,本来是P3=table[ge];
回复

使用道具 举报

16#
ID:141506 发表于 2016-10-8 21:29 | 只看该作者
wuyibin2003 发表于 2016-10-8 13:40
P3=table 好像没有子程序啊

这个复制的时候漏掉了,本来是P3=table[ge];
回复

使用道具 举报

17#
ID:141506 发表于 2016-10-8 21:29 | 只看该作者
ahshmj 发表于 2016-10-8 15:15
duan=1;
     P3=table[a];
     duan=0;

好的,谢谢啊,我试一试
回复

使用道具 举报

18#
ID:111634 发表于 2016-10-9 21:17 | 只看该作者
本帖最后由 zl2168 于 2016-10-9 21:29 编辑

“本人是单片机新手,最近正在学习51单片机,但在学习过程中遇到了困难”
为什么不找一本好的教材?
介绍你2本书,

张志良编著
80C51单片机实用教程——基于Keil CProteus》,高等教育出版社,ISBN 978-7-04-044532-9,用于学理论。
《80C51单片机仿真设计实例教程——基于Keil C和Proteus》,清华大学出版社,ISBN 978-7-302-41682-1,用于实验操作。
电路与程序真实可靠可信可行,且便于阅读理解,便于自学。
这样就不会出现那么多问题!!!
12-04962-003-01单片机实用教程 (1).pdf (479.45 KB, 下载次数: 7)







回复

使用道具 举报

19#
ID:141648 发表于 2016-10-10 15:18 | 只看该作者
display(shi,ge);放在while主循环里面,不要放在a==20里面
回复

使用道具 举报

20#
ID:141506 发表于 2016-11-8 18:28 | 只看该作者
zl2168 发表于 2016-10-9 21:17
“本人是单片机新手,最近正在学习51单片机,但在学习过程中遇到了困难”
为什么不找一本好的教材?
介绍 ...

好的  谢谢
回复

使用道具 举报

21#
ID:155877 发表于 2016-12-19 14:50 | 只看该作者
求电路图!有点单片机不认识
回复

使用道具 举报

22#
ID:155915 发表于 2016-12-19 14:55 | 只看该作者
驱动力不够
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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