一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

搜索
楼主: blueruby

发在单片机板块人气低,发在这里求助一下吧

[复制链接]
发表于 2016-3-25 11:08 | 显示全部楼层
本帖最后由 snoopy8008 于 2016-3-25 11:13 编辑
blueruby 发表于 2016-3-25 10:43
就是我原来那个源程序
不知道位选怎么改啊
光改段选的代码表也没有用


应该好改,我想看看你说去掉三极管和限流电阻后能正常显示的那个程序。
你现在贴的程序,我觉得段码给图纸好像不一致,位地址好像错一位,是不是贴错了??

---看到了cloud2跟图纸对应,是那个去掉三极管和限流电阻能正常显示的?
回复

使用道具 举报

发表于 2016-3-25 11:23 | 显示全部楼层

#define ON  0               //定义0为打开
#define OFF 1               //定义1为关闭

改为

#define ON  1               //定义1为打开
#define OFF 0               //定义0为关闭

你试试这个吧。
回复

使用道具 举报

 楼主| 发表于 2016-3-25 12:28 | 显示全部楼层
snoopy8008 发表于 2016-3-25 11:23

#define ON  0               //定义0为打开
#define OFF 1               //定义1为关闭

这个我改过了
在原电路上还是不行
同步乱码
看来位码改起来没那么简单

回复

使用道具 举报

 楼主| 发表于 2016-3-25 12:32 | 显示全部楼层
snoopy8008 发表于 2016-3-25 11:08
应该好改,我想看看你说去掉三极管和限流电阻后能正常显示的那个程序。
你现在贴的程序,我觉得段码给 ...

段地址错一位
这个是一个坛友给做的
影响不大
以原理图为准
改过来就行了
代码表是对的
改原程序没那么简单
不改源程序了
哪位给个程序能显示012345就行了
我自己改计时

回复

使用道具 举报

发表于 2016-3-25 13:31 | 显示全部楼层
本帖最后由 snoopy8008 于 2016-3-25 13:53 编辑
blueruby 发表于 2016-3-25 12:28
这个我改过了
在原电路上还是不行
同步乱码


P4.6要写为1,或者把dir引脚直接接VCC,这步做了没?


另外还有,上个帖子你这样说过。
“改了改void display程序里的
on和off
不是同步显示了
但还是乱码”

回复

使用道具 举报

发表于 2016-3-25 13:49 | 显示全部楼层
我按照我的猜测改了下,试图只显示012345,假如连编译过不去,别笑我,我不会C。

0123456.zip

1.75 KB, 下载次数: 49, 下载积分: 一乐金币 -1

回复

使用道具 举报

 楼主| 发表于 2016-3-25 15:43 | 显示全部楼层
snoopy8008 发表于 2016-3-25 13:49
我按照我的猜测改了下,试图只显示012345,假如连编译过不去,别笑我,我不会C。

按照您修改的程序试了试还是一样的问题
看来问题不是出在4.6脚上
还是程序的问题
看来这个程序不适合共阴极数码管
不是
应该说不适合这种三极管接法的程序
看来还得走经典的段位扫描的老路啊
回复

使用道具 举报

发表于 2016-3-25 16:03 | 显示全部楼层
本帖最后由 pla155 于 2016-3-25 19:21 编辑

程序能显示012345就行了是吧。

不要做任何的硬件改动。


74LS245的1脚DIR接电源即可。
或者看看接到CPU的哪个管脚没有。
如果有,加上一个置1的指令。
我敢肯定你图上P4.6是错误的。


#include <reg51.h>         
/*****************************************************************************/
sbit HOU_S=P2^0;      
sbit HOU_G=P2^1;      
sbit MIN_S=P2^2;      
sbit MIN_G=P2^3;      
sbit SEC_S=P2^4;      
sbit SEC_G=P2^5;      
/*****************************************************************************/
/* 看到有2个MAX232芯片,猜测应该是11.0592的晶振*/
void Delay10ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 108;
        j = 145;
        do
        {
                while (--j);
        } while (--i);
}
/*****************************************************************************/
// 0x077,0x024,0x05d,0x06d,0x02e,0x06b,0x07b,0x025,0x07f,0x06f
/*****************************************************************************/
main()
{
  P0 , P2 = 0X000 ;

  while(1)
   {
        SEC_G         = 0 ;      
        P0                = 0X077 ;
        HOU_S         = 1 ;      
        Delay10ms() ;

        HOU_S         = 0 ;      
        P0                = 0X024 ;
        HOU_G         = 1 ;      
        Delay10ms() ;

        HOU_G         = 0 ;      
        P0                = 0X05D ;
        MIN_S         = 1 ;      
        Delay10ms() ;

        MIN_S         = 0 ;      
        P0                = 0X06D ;
        MIN_G         = 1 ;      
        Delay10ms() ;

        MIN_G         = 0 ;      
        P0                = 0X02E ;
        SEC_S         = 1 ;      
        Delay10ms() ;

        SEC_S         = 0 ;      
        P0                = 0X06B ;
        SEC_G         = 1 ;      
        Delay10ms() ;
   }
}


LED.rar (8.82 KB, 下载次数: 0, 售价: 5 人民币)






回复

使用道具 举报

发表于 2016-3-25 19:46 | 显示全部楼层
blueruby 发表于 2016-3-25 15:43
按照您修改的程序试了试还是一样的问题
看来问题不是出在4.6脚上
还是程序的问题

我已技穷。
回复

使用道具 举报

 楼主| 发表于 2016-3-25 21:36 | 显示全部楼层
pla155 发表于 2016-3-25 16:03
程序能显示012345就行了是吧。

不要做任何的硬件改动。

用这个程序试了试原电路板不显示乱码了
同步显示012345了
用的还是77。。。。那个段位码啊
有坛友不是说这是共阳的用法
共阴要取反么?


电板没有设计错
只是没有合适的程序去实现计时罢了

问题基本结束
虽然还搞不懂这些三极管怎么个用法
但总算知道原电路板怎么能显示正确的数字了
基于这种显示方法的计时程序慢慢写吧

ps:
p4.6接的没有错
不过是P4.6也接在vcc上了
呵呵
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-14 13:29 , Processed in 0.038934 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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