标题: 这是我写的一个51单片机led点阵显示大字的程序,为啥植入单片机中点阵并未显示呢 [打印本页]

作者: 哈哈我哈哈    时间: 2018-10-22 20:59
标题: 这是我写的一个51单片机led点阵显示大字的程序,为啥植入单片机中点阵并未显示呢
下面是程序:
#include "reg51.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^6;
u8 ledduan[]={0x00,0x00,0x48,0x50,0xe0,0x50,0x48,0x00};
u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(u16 i)
{
while(i--);
}

  void Hc595SendByte(u8 dat)
  {
   u8 a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
    SER=dat>>7;
    dat<<=1;
    SRCLK=1;
    _nop_();
    _nop_();
    SRCLK=0;
}
RCLK=1;
_nop_();
    _nop_();
RCLK=0;
  }

  void main()
  {
  u8 i;
   while(1)
   {
       P0=0x7f;
      for(i=0;i<8;i++)
   {
      P0=ledwei[i];
   Hc595SendByte(ledduan[i]);
   delay(100);
   Hc595SendByte(0x00);
   }
   }

  }
我反复检查了几遍并没有啥问题啊,点阵显示其他汉字倒是可以。请问这是为什么?

作者: angmall    时间: 2018-10-22 21:56
#include "reg51.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;    //P3^6; 红字这里错了


作者: 杀手cdx    时间: 2018-10-22 22:54
感觉没有什么问题
作者: HC6800-ES-V2.0    时间: 2018-10-23 08:24
程序正确,就是没有调好路线冒。
JP595要接上,JOE要接到GND一边。
作者: zl2168    时间: 2018-10-23 21:58
本帖最后由 zl2168 于 2018-10-24 09:09 编辑

实例66  LED 16×16点阵扫描显示汉字
⒈ 电路设计…
⒉ 汉字编码…
⑴ 汉字编码概述…
⑵ 汉字点阵显示代码…
⑶ 汉字点阵取模软件…
⒊ 电路设计…


说明:用一片1544-16译码器)代替21383-8译码器),性价比更高。
LED显示来说,164595性价比更高(都是串入并出移位寄存器,164控制更简单)
⒋程序设计 …⒌Keil调试…
6. Proteus仿真…
Proteus仿真一下,确认有效。
实例66a LED 16×16点阵汉字显示.rar (48.21 KB, 下载次数: 6)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1.书中电路和程序设计有详细说明,程序语句条条有注解





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1