智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2494|回复: 7
打印 上一主题 下一主题

51单片机,遇到奇怪的事情

[复制链接]

8

主题

148

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2052

优秀会员奖章活跃会员奖章

威望
1146
贡献
574
兑换币
210
注册时间
2011-4-25
在线时间
166 小时
跳转到指定楼层
1#
发表于 2012-8-3 16:51:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   闲着没事做,就做下51初级编程,跑马灯,如下程序目的是实现的功能:
1、8盏灯,从外往里(两个亮)跑过去
2、然后,全部熄灭,由里及外跑出来
3、再移位从第一站亮到第8盏,再移位从第8亮到第1盏
   但是,跑完第2步,第三步开始就乱跑了,凌乱了,瞎亮了开始。
   然而,单独跑移位的程序是没问题的,单独跑第1步、第2步也是没问题的。
   合起来跑就出问题了。
   不知道问题何在?

8

主题

148

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2052

优秀会员奖章活跃会员奖章

威望
1146
贡献
574
兑换币
210
注册时间
2011-4-25
在线时间
166 小时
2#
 楼主| 发表于 2012-8-3 16:51:50 | 只看该作者
#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit beep=P2^5;

sbit shiwei=P2^6;//声明U1锁存器锁存端
sbit gewei=P2^7;//声明U2锁存器的锁存端
uint table[10]={0xcf,0x03,0x5d,0x5b,0x93,0xda,0xde,0x43,0xdf,0xdb};          //数码管编码

uint table[4]={0x7e,0xbd,0xdb,0xe7};

void delay10ms()
{
        unsigned char i, j;
        for(i=20;i>0;i--)
        for(j=248;j>0;j--);
}

void delay02s(void) //延时0.2秒子程序
{
        unsigned char i,j,k;
        for(i=20;i>0;i--)
        for(j=20;j>0;j--)
        for(k=248;k>0;k--);
}

void delay05s()                //延时0.5秒子程序
{
    unsigned char i,j,k;
        for(i=15;i>0;i--)
        for(j=202;j>0;j--)
        for(k=818;k>0;k--);
}



void main()
{
           uint m;
                P1=0xff;
                   delay05s();
                delay05s();
                delay05s();

        while(1)

   {   
   
        for (m=0;m<=3;m++)
   {
                   P1=table[m];
                delay05s();
                delay05s();
   }
   
                   P1=0xff;
                   delay05s();
                delay05s();


        for(m=3;m>=0;m--)
        {
                   P1=table[m];
                delay05s();
                delay05s();
   }

                   P1=0xff;
                   delay05s();




                P1=0xfe;
  for( m=0;m<8;m++)
       
        {
                delay02s();
                P1<<=1;
                P1=P1|0x01;

        }

                P1=0xff;
                   delay05s();
               
               
           P1=0x7f;
        for( m=0;m<8;m++)
       
        {               
                delay05s();
                P1>>=1;
           P1=P1|0x80;

        }

                P1=0xff;
                   delay05s();
                delay05s();
                delay05s();


        for( m=0;m<8;m++)
       
        {
                P1=0xff;
                delay05s();
                P1=0x00;
                delay05s();
        }


        }

}


回复 支持 反对

使用道具 举报

16

主题

487

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2898
威望
1582
贡献
758
兑换币
243
注册时间
2011-3-18
在线时间
279 小时
3#
发表于 2012-8-4 09:02:58 | 只看该作者
两次给table[]赋值?
回复 支持 反对

使用道具 举报

0

主题

43

帖子

0

精华

高级会员

Rank: 4

积分
608
QQ
威望
254
贡献
212
兑换币
0
注册时间
2012-7-9
在线时间
71 小时
4#
发表于 2012-8-4 10:36:03 | 只看该作者
定义数码管编码和它的锁存端有什么意义?
回复 支持 反对

使用道具 举报

8

主题

148

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2052

优秀会员奖章活跃会员奖章

威望
1146
贡献
574
兑换币
210
注册时间
2011-4-25
在线时间
166 小时
5#
 楼主| 发表于 2012-8-5 19:41:30 | 只看该作者
Lee_Hour 发表于 2012-8-4 10:36
定义数码管编码和它的锁存端有什么意义?

没用,本来是想做数码管显示的,不过也没有用到啊
回复 支持 反对

使用道具 举报

0

主题

43

帖子

0

精华

高级会员

Rank: 4

积分
608
QQ
威望
254
贡献
212
兑换币
0
注册时间
2012-7-9
在线时间
71 小时
6#
发表于 2012-8-6 09:21:50 | 只看该作者
qiangnancy 发表于 2012-8-5 19:41
没用,本来是想做数码管显示的,不过也没有用到啊

你的两个table一样的,底下调用时到底是调用的哪个呢
回复 支持 反对

使用道具 举报

8

主题

148

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2052

优秀会员奖章活跃会员奖章

威望
1146
贡献
574
兑换币
210
注册时间
2011-4-25
在线时间
166 小时
7#
 楼主| 发表于 2012-8-8 19:54:58 | 只看该作者
Lee_Hour 发表于 2012-8-6 09:21
你的两个table一样的,底下调用时到底是调用的哪个呢

第一个调用table,第二个不调用。
回复 支持 反对

使用道具 举报

7

主题

297

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6172

论坛元老奖章

威望
1226
贡献
4724
兑换币
274
注册时间
2010-4-17
在线时间
111 小时
8#
发表于 2012-9-7 10:37:36 | 只看该作者
我反复看了多遍,好帖,得支持
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 16:39 , Processed in 0.045695 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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