找回密码
 立即注册

QQ登录

只需一步,快速开始

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

帮忙分析下 数码管现在一起显示器 全部跟着变化

[复制链接]
跳转到指定楼层
楼主
ID:125710 发表于 2016-10-25 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我需要数码管数秒,但是现在不知道哪里出错了总是一起变化 希望大师帮忙看看程序
#include<reg51.h>
sbit A0=P1^0;   //éèÖÃ74HC138êäèë½Å
sbit A1=P1^1;   //éèÖÃ74HC138êäèë½Å
sbit A2=P1^2;   //éèÖÃ74HC138êäèë½Å
sbit E3=P1^3;  
sbit E1E2=P1^4; //éèÖÃ74HC138
        unsigned char i = 0;
        unsigned int cnt = 0;

unsigned char code ledchar[]={     //12Ñô¼«êyÂë1ü
0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,  
0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};
unsigned char ledbuff[]={         //λѡ′æ′¢±ä»ˉμÄλÖÃ2»Äü1»·ÅÔúCODEÄú
0xff,0xff,0xff,0xff,0xff,0xff
};

void main()
{
       
        unsigned long sec = 0;

        E1E2=0;//3õê¼»ˉ74HC138
        E3=1;
  TMOD=0X01;//3õê¼»ˉ¶¨ê±Æ÷¶¨ê±Æ÷01¤×÷·½ê½1
        TH0=0xfc;//1MS3õê¼Öμ
        TL0=0X67;
       
        EA=1;       
        ET0=1;TR0=1;
         while(1)
         {                     
                        if(cnt>=1000)//1Ãëê±¼äμ½
                           {
          cnt = 0;
                                         sec++;
                                         ledbuff[0]=ledchar[sec%10];
                                         ledbuff[1]=ledchar[sec/10%10];
                                         ledbuff[2]=ledchar[sec/100%10];
                                         ledbuff[3]=ledchar[sec/1000%10];
                                         ledbuff[4]=ledchar[sec/10000%10];
                                         ledbuff[5]=ledchar[sec/100000%10];
         }
                       
         }
                       

}


void T0_time() interrupt 1
{
TH0=0XFC;
TL0=0X67;
cnt++;
P0=0xff;
                                 switch(i)
                                 {
                                         i++;
          case 0:A2=0;A1=0;A0=0;i++;P0=ledbuff[0];break;
                                        case 1:A2=1;A1=0;A0=0;i++;P0=ledbuff[1];break;
                                        case 2:A2=0;A1=1;A0=0;i++;P0=ledbuff[2];break;
                                        case 3:A2=0;A1=1;A0=1;i++;P0=ledbuff[3];break;
                                        case 4:A2=1;A1=0;A0=0;i++;P0=ledbuff[4];break;
                                        case 5:A2=1;A1=0;A0=1;i=0;P0=ledbuff[5];break;
                                 
                                default:break;
                                 }
       
}




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

使用道具 举报

沙发
ID:138155 发表于 2016-10-25 17:30 | 只看该作者
代码有点乱码 看不明白
回复

使用道具 举报

板凳
ID:123732 发表于 2016-10-25 18:21 | 只看该作者
本帖最后由 刘海龙 于 2016-10-25 21:41 编辑
  1. ledbuff[0]=ledchar[sec%10];
  2. ledbuff[1]=ledchar[sec%100/10];
  3. ledbuff[2]=ledchar[sec%1000/100];
  4. ledbuff[3]=ledchar[sec%10000/1000];
  5. ledbuff[4]=ledchar[sec%100000/10000];
  6. ledbuff[5]=ledchar[sec/100000];
复制代码
回复

使用道具 举报

地板
ID:144413 发表于 2016-10-25 19:36 | 只看该作者
说明是乱码
回复

使用道具 举报

5#
ID:111634 发表于 2016-10-25 19:45 | 只看该作者
只有先读懂别人的有效程序,才能分析自己的程序出错在哪里。把一大段没头没脑的程序较“大神”分析,你以为“大神”真的是大神?
回复

使用道具 举报

6#
ID:140371 发表于 2016-10-25 20:55 | 只看该作者
case 0:A2=0;A1=0;A0=0;i++;P0=ledbuff[0];break; case 1:A2=1;A1=0;A0=0;i++;P0=ledbuff[1];break; case 2:A2=0;A1=1;A0=0;i++;P0=ledbuff[2];break; case 3:A2=0;A1=1;A0=1;i++;P0=ledbuff[3];break; case 4:A2=1;A1=0;A0=0;i++;P0=ledbuff[4];break; 這幾列敘述裡i++ 刪掉試試看
回复

使用道具 举报

7#
ID:123289 发表于 2016-10-25 23:58 | 只看该作者
估计是你的程序在显示的时候没有切断其它显示(每次只显示一位,关断其它位)
回复

使用道具 举报

8#
ID:143544 发表于 2016-10-26 08:06 | 只看该作者
怎么注释全是乱码
回复

使用道具 举报

9#
ID:50088 发表于 2016-10-26 08:27 | 只看该作者
命名IO口有没有搞错?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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