找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机16*64点阵点亮单个LED后 屏幕有不规则干扰

[复制链接]
跳转到指定楼层
楼主
代码如下:参照网上一位老师的程序修改后能点亮单个LED了。但是屏幕上有不规则LED闪烁干扰。各位老师帮忙看看是什么原因呢?非常感谢
这是抓拍的图片.



#include<reg52.h>
sbit HC595_DS = P3^6;
sbit HC595_STCP = P3^5;
sbit HC595_SHCP = P3^4;
sbit HC595_OE = P3^7;

void HC595_WriteByte(unsigned char value)
{
                        unsigned char i;
                        for(i=0;i<8;i++)
  {
                        HC595_SHCP = 0;
                        HC595_DS = value&(0x7f >> i);
                        HC595_SHCP = 1;
  }
}
void Lattice_WriteData(unsigned char *buffer,unsigned char value,value1)
{
while(*buffer)//列扫描
{
                        HC595_WriteByte(*buffer++);
}
                        HC595_WriteByte(value);//行数据低八位
                        HC595_WriteByte(value1);//行数据高八位
                        HC595_STCP = 0;
                        HC595_STCP = 1;
}
unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列
void main()
{
               
         while(10)
                        
                {
                        HC595_OE = 0;
                        Lattice_WriteData(buffer,0x7f,0xff);
                }

}

LED干扰闪烁.zip

2.75 MB, 下载次数: 9

视频拍摄效果

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

使用道具 举报

沙发
ID:404160 发表于 2023-3-4 18:11 | 只看该作者
检查线路是否有接触不良、短路等。如一切正常,程序中在往显示缓冲区写数据时,短暂关闭显示。
回复

使用道具 举报

板凳
ID:105115 发表于 2023-3-4 20:53 | 只看该作者
飞云居士 发表于 2023-3-4 18:11
检查线路是否有接触不良、短路等。如一切正常,程序中在往显示缓冲区写数据时,短暂关闭显示。

线路检查没有问题,谢谢
回复

使用道具 举报

地板
ID:195496 发表于 2023-3-4 20:55 | 只看该作者
消隐没有写好
回复

使用道具 举报

5#
ID:579397 发表于 2023-3-5 01:31 | 只看该作者
本帖最后由 405616736 于 2023-3-5 01:43 编辑

unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列
从数组0x7f,0xff推测你64列为低电平有效,对应行为高电平有效

Lattice_WriteData(buffer,0x7f,0xff);
这条代码,行给出0x7f,0xff已经点亮出第一个外所有LED。与点亮单个LED了的想法不符了。

建议先弄清楚点阵屏的行列有效电平。
再重点关注以下几行代码
HC595_DS = value&(0x7f >> i);
unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列Lattice_WriteData(buffer,0x7f,0xff);
回复

使用道具 举报

6#
ID:579397 发表于 2023-3-5 01:41 | 只看该作者

行列都用595驱动的不需要消隐
回复

使用道具 举报

7#
ID:579397 发表于 2023-3-5 05:01 | 只看该作者
由unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列
判断列为低电平有效,行为高电平有效
但Lattice_WriteData(buffer,0x7f,0xff);
行数据复制0x7f,0xff,给出除了第一个点都有效,这里与“点亮单个LED”就已经不相符。
建议了解情况行列的高低电平有效值,注意修改以下三行代码:
HC595_DS = value&(0x7f >> i);
unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列
Lattice_WriteData(buffer,0x7f,0xff);
回复

使用道具 举报

8#
ID:384109 发表于 2023-3-5 07:58 | 只看该作者
缺电路图,代码看着逻辑有问题
回复

使用道具 举报

9#
ID:105115 发表于 2023-3-5 21:48 来自手机 | 只看该作者
405616736 发表于 2023-3-5 05:01
由unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列
判断列为低电平有效,行为 ...

非常感谢,板子是以前设备上的,拆下来改的,所以电路上不是完全理清,想着单片机上面写程序测试能测出来就先试试看了。
回复

使用道具 举报

10#
ID:105115 发表于 2023-3-5 21:49 来自手机 | 只看该作者
人中狼 发表于 2023-3-5 07:58
缺电路图,代码看着逻辑有问题

电路图没有,是其它设备上拆的点阵板子 大致理了一下线路 点亮了一些 ,想着用单片机来测试看看
回复

使用道具 举报

11#
ID:384109 发表于 2023-3-5 23:47 | 只看该作者
先查电路图吧,代码逻辑有问题,与电路有关
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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