8x8LED点阵显示数字和汉字

8x8LED点阵原理
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
当 MR 为高电平,OE 为低电平时,数据在 SHCP 上升沿进入移位寄存器,在
STCP 上升沿输出到并行端口。
74595 的数据端:
QA–QH: 八位并行输出端,可以直接控制数码管的 8 个段。
QH’: 级联输出端。我将它接下一个 595 的 SI 端。
SI: 串行数据输入端。74595 的控制端说明:
/SCLR(10 脚): 低点平时将移位寄存器的数据清零。通常我将它接 Vcc。
SCK(11 脚):上升沿时数据寄存器的数据移位。 QA–>QB–>QC–>…–>QH;下
降沿移位寄存器数据不变。(脉冲宽度: 5V 时,大于几十纳秒就行了。)
RCK(12 脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄
存器数据不变。通常我将 RCK 置为低点平,当移位结束后,在 RCK 端产生一
个正脉冲( 5V 时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。

# include <reg52.h>
#include<intrins.h>

typedef unsigned int u16;
typedef unsigned char u8;

sbit SER=P3^4;
sbit CLK=P3^5;
sbit SRCLK=P3^6;

u8 code ledwidth[][8]={{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9
{0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P
{0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R
{0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E
{0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C
{0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H
{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I
{0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00}, //N
{0x00,0x12,0x14,0x78,0x14,0x12,0x00,0x00},  //大
{0x00,0x08,0x12,0x01,0xFF,0x00,0x10,0x08},   //小
{0x7F,0x41,0x5D,0x55,0x5D,0x41,0x7F,0x00},  //回

{0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00}};  //中
 
u16 ledlength[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; 


void delay_ms(u16 i)
{
	while(i--);
}

void send(u8 n)
{
   u8 i;
   CLK=0;
   SRCLK=0;
   for(i=0;i<8;i++)
   {
		SER=n>>7;
		n<<=1;
		SRCLK=0;
		SRCLK=1;

   }
	CLK=1; 
}

int main()
{
	u16 n,i,j=0;
	while(1)
	{
		for(i=0;i<100;i++)
		{
			for(n=0;n<8;n++)
			{

				P0=ledlength[n];
				send(ledwidth[j][n]);
				delay_ms(50);				
				P0=0xff;
				send(0x00);
				
			}
		}
		j++;
		j%=21;
	}
	return 0;	
}
  • 18
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值