搜索
bottom↓
回复: 6

天祥TX-1C静态数码管显示顺序不对

[复制链接]

出0入0汤圆

发表于 2013-1-6 16:20:01 | 显示全部楼层 |阅读模式
本帖最后由 siemenswjl 于 2013-1-6 16:26 编辑

1、编译成功且下载,运行发现:从0-E正常,最后一位显示b,而不是F
2、我把for(num=0;num<16;num++)改成for(num=15;num>0;num--)想实现从F-0的显示。编译成功且下载之后测试没有什么变化还是从0-E-b
郁闷,请教天祥的人得到回复是下载他们程序看看。我在教材的配套光盘中也没有找到对应的程序。所以只好来到万能的坛来找帮助

#include<stc89.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;                //申明U1锁存器的锁存端
sbit wela=P2^7;                //申明U2锁存器的锁存端
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms(uint);

#define Self_Define_ISP_Download_Command 0x5D
sfr IAP_CONTR=0xE7;

void Init_Com(void)
{
     TMOD = 0x20;
     SM0=0;
     SM1=1;
         REN=1;
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;
         EA=1;
         ES=1;
}
void main()
{
        Init_Com();
        wela=1;                        //打开U2锁存器
        P0=0xc0;                //送入位选信号
        wela=0;                        //关闭U2锁存器       
        while(1)
        {
                for(num=0;num<16;num++)                //16个数循环显示
                {
                        dula=1;                                        //打开U1锁存器
                        P0=table[num];
                        dula=0;
                        delayms(500);
                }
        }
}
void delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void UART_Interrupt_Receive(void) interrupt 4
{
        unsigned char k=0;
        unsigned int a,b;
        if(RI==1)
        {
                RI=0;
                k=SBUF;
                if(k==Self_Define_ISP_Download_Command)
                {
                        for(a=1000;a>0;a--)
                                for(b=100;b>0;b--); //延时约1S
                        IAP_CONTR = 0x60;
                }
        }
        else
        {
                TI=0;
        }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-1-6 16:28:44 | 显示全部楼层
本帖最后由 siemenswjl 于 2013-1-6 16:32 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-1-6 16:40:49 | 显示全部楼层
本帖最后由 siemenswjl 于 2013-1-6 16:56 编辑

神吧。刚才测试又好了!
但我把for(num=0;num<16;num++)改成for(num=15;num>=0;num--)后只进行一次循环就不在循环了

过了几分钟又开始显示。但不正常,忽闪忽闪

出0入0汤圆

发表于 2013-1-6 16:54:28 | 显示全部楼层
多测几次

出0入0汤圆

 楼主| 发表于 2013-1-6 16:57:36 | 显示全部楼层
估计当num=0时。程序执行不下去了。条件不满足了

出0入0汤圆

 楼主| 发表于 2013-1-7 16:34:49 | 显示全部楼层
我增加了num1变量,类型为int。都ok
#include<stc89.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;                //申明U1锁存器的锁存端
sbit wela=P2^7;                //申明U2锁存器的锁存端
uchar num;
int   num1;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms(uint);

#define Self_Define_ISP_Download_Command 0x5D
sfr IAP_CONTR=0xE7;

void Init_Com(void)
{
     TMOD = 0x20;
     SM0=0;
     SM1=1;
         REN=1;
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;
         EA=1;
         ES=1;
}
void main()
{
        Init_Com();
        wela=1;                        //打开U2锁存器,意味着先可以控制那位数码管显示
        P0=0xc0;                //因为为共阴数码管,所以位选0为接通,0xc0=11000000
        wela=0;                        //关闭U2锁存器       
        while(1)
        {
                for(num1=15;num1>=0;num1--)                //16个数循环显示
                {
                        dula=1;                                        //打开U1锁存器
                        P0=table[num1];
                        dula=0;
                        delayms(2000);
                }
        }
}
void delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void UART_Interrupt_Receive(void) interrupt 4
{
        unsigned char k=0;
        unsigned int a,b;
        if(RI==1)
        {
                RI=0;
                k=SBUF;
                if(k==Self_Define_ISP_Download_Command)
                {
                        for(a=1000;a>0;a--)
                                for(b=100;b>0;b--); //延时约1S
                        IAP_CONTR = 0x60;
                }
        }
        else
        {
                TI=0;
        }
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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