pppphhhhyyyy 2023-09-10 13:25 采纳率: 80.6%
浏览 78
已结题

51单片机8*8点阵一直闪烁

51单片机中使用8*8点阵做了个笑脸,为什么一直在闪烁?有没有什么办法能让它稳定下来?

#include "regx52.h"
#include "Delay.h"
#include "T0.h"
sbit SER = P3 ^ 4;
sbit RCK = P3 ^ 5;
sbit SCK = P3 ^ 6;

unsigned char arr[]={
0x7E,0x91,0xA3,0xA5,
0xA3,0x91,0x7E,0x00,
0x00,0x7E,0xA1,0x93,
0x95,0x93,0xA1,0x7E,};


void _74hc595_init()
{
    SER = 0; RCK = 0; SCK = 0;
}
void _74hc595_data(unsigned char Data)
{
    unsigned char i;
    for (i = 0; i < 8; i++)
    {
        SER = Data & (0x80 >> i);
        SCK = 1; SCK = 0;
    }
    RCK = 1; RCK = 0; 
}
void _74hc595(unsigned char n, unsigned char Data)
{
    
    _74hc595_data(Data);
    P0 = ~(0x80 >> n);Delay(1);
    P0 = 0xff;

}
void main()
{
    unsigned  char k;

    _74hc595_init();
    while (1)
    {
        _74hc595(0,arr[0]);
        _74hc595(1,arr[1]);
        _74hc595(2,arr[2]);
        _74hc595(3,arr[3]);
        _74hc595(4,arr[4]);
        _74hc595(5,arr[5]);
        _74hc595(6,arr[6]);
        _74hc595(7,arr[7]);

  • 写回答

4条回答 默认 最新

  • pppphhhhyyyy 2023-09-12 23:23
    关注

    最后我判断了一下,应该是扫描太慢了,我试着把Delay和消影删掉了,可以得到一个稳定有残影的图像,于是我把消影加上,发现LED变暗了,这个我暂时解决不了,不过这个问题算是解决了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月12日
  • 创建了问题 9月10日