打印

大家帮忙看看这段代码哪里有错误

[复制链接]
2020|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
testfish|  楼主 | 2013-6-7 19:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 testfish 于 2013-6-7 19:46 编辑

大家帮忙看看这段代码哪里有错误,主要想实现 6个led 从第一个开始循环显示LED_CODES里全部字符,然后换下一个,本人新手,鼓捣了半天也没成功,望大家赐教
#include <AT89X52.H>

unsigned char code Select[]={0x01,0x02,0x04,0x08,0x10,0x20};

unsigned char code LED_CODES[]={0xc0,0xF9,0xA4,0xB0,0x99,//0-4

0x92,0x82,0xF8,0x80,0x90,//5-9

0x88,0x83,0xC6,0xA1,0x86,//A,b,C,d,E

0x8E,0xFF,0x0C,0x89,0x7F,0xBF};//F,空格,P,H,.,-  


void delayms();

void main()

{

int m,ll;

while(1)
{
//P2=0;
//P2=Select[3];
//P1=LED_CODES[6];

for (m=0;m<7;m++)
     {
      P2=Select[m];
      for(ll=0;ll<=21;ll++)
         {
       P1=LED_CODES[ll];
        delayms();
          }
      }
}

}

void delayms()
{
int jj;

int kk;

for(jj=1000;jj>0;jj--)
      
     for(kk=110;kk>0;kk--);
}

相关帖子

沙发
testfish|  楼主 | 2013-6-7 20:02 | 只看该作者
补充下,代码20行 int m,ll;  写成 int ll.m;效果完全不一样,难道是 Proteus 7 的问题??等待学习板到货后再验证下,郁闷了。。。

使用特权

评论回复
板凳
ayb_ice| | 2013-6-8 10:55 | 只看该作者
基本代码没有问题,可能是程序与硬件不对应吧

使用特权

评论回复
地板
testfish|  楼主 | 2013-6-8 18:23 | 只看该作者
ayb_ice 发表于 2013-6-8 10:55
基本代码没有问题,可能是程序与硬件不对应吧

过两天学习板到货,重新测试下,谢谢您的解答!!

使用特权

评论回复
5
testfish|  楼主 | 2013-6-10 15:20 | 只看该作者
在学习板上重新写了下程序,测试正常,不知道和以上的代码有什么区别,新代码如下:


#include <reg51.h>
void delay(unsigned int i);
//此表为 LED 的字模, 共阴数码管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制

//此表为8个数码管位选控制, 共阴数码管 1-8个 -
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制


void main()
{
while(1)
{
int a,b;
for (a=0;a<=7;a++)
{
for (b=0;b<=9;b++)
{
P0=Disp_Tab[b];
P1=dispbit[a];
delay(100);
}
}
}
}

/*******************延时函数**********************************************/
void delay(unsigned int i)
{
unsigned int j;
for(i; i > 0; i--)
for(j = 120; j > 0; j--);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

0

粉丝