打印
[51单片机]

led点阵动画显示错误

[复制链接]
323|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xukng|  楼主 | 2020-9-15 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>
sbit ser = P3^4;
sbit rclk= P3^5;
sbit srclk = P3^6;
unsigned char code ledbuf[40] = {
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
   0x00,0x00,0x41,0x7F,0x7F,0x41,0x00,0x00,
            0x38,0x44,0x42,0x21,0x21,0x42,0x44,0x38,
            0x00,0x00,0x7E,0x7F,0x03,0x03,0x7F,0x7E,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
            };
unsigned char code P0buf[8] = {0x7f,0xbf,0xdf,0xef,
                          0xf7,0xdb,0xfd,0xfe};
void HC595SendByte(unsigned char dat)
{
   unsigned char i;
   srclk = 0;
   rclk = 0;
   for(i=0;i<8;i++)
       {
     ser = dat>>7;
     dat=dat<<1;
  
     srclk = 1;
     _nop_();
     _nop_();
     srclk = 0;
        }
    rclk = 1;
    _nop_();
    _nop_();
    rclk = 0;
}
void main()
{
    TMOD=0x01;
TH0 = 0xfc;
TL0 = 0x67;
EA = 1;
ET0 =1;
TR0 = 1;

while(1);

}
void InterruptTimer0() interrupt 1
{
    static unsigned char i= 0;
static unsigned char cnt= 0;
static unsigned char tmr250ms = 0;
TH0 = 0xfc;
TL0 = 0x67;
   

if(i>=8)
{i=0;}
P0 = 0xff;
HC595SendByte(ledbuf[cnt+i]);
P0 =P0buf[i];  //
i++;
tmr250ms++;
if(tmr250ms>=250)
{
   cnt++;
   
   tmr250ms = 0;
   if(cnt>=32)
   cnt = 0;
}
}



使用特权

评论回复
评论
xukng 2020-9-15 14:23 回复TA
在点阵显示上出现不想要的图形 

相关帖子

沙发
xukng|  楼主 | 2020-9-15 14:54 | 只看该作者
unsigned char code P0buf[8] = {0x7f,0xbf,0xdf,0xef,
                          0xf7,0xdb,0xfd,0xfe};
这里有0xdb写错了,应该是0xfb

使用特权

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

本版积分规则

4

主题

13

帖子

0

粉丝