80c51day05点阵

电路原理

在这里插入图片描述
二极管两端有正向电位差就会发光
加上串口通信的芯片
在这里插入图片描述
两个芯片级联在一起,允许输入输出的引脚由共同的io口控制,还有两个清除数据和失效的引脚保持工作的状态,数据从第一个芯片的15脚输入。

代码

#include <reg52.h>
sbit DIO  = P3^4; //串行数据口
sbit S_CLK = P3^5;//移位寄存器时钟
sbit R_CLK = P3^6;//输出锁存器时钟
void main()
{
	//ROW 0x80 , COL 0xfe
	unsigned char i, dat;//i循环次数  dat需要发送的数据
	dat = 0xfe;//发送列值
	for(i=0; i<8; i++)//循环8次
	{
		S_CLK = 0;//拉低移位寄存器时钟
		R_CLK = 0;//拉低输出锁存器时钟
		if(dat & 0x01)//发送1
			DIO = 1;
		else		  //发送0
			DIO = 0;
		S_CLK = 1;//拉高移位寄存器时钟,数据移位
		dat >>= 1;//数据右移
	}
	dat = 0x80;//发送行值
	for(i=0; i<8; i++)//循环8次
	{
		S_CLK = 0;//拉低移位寄存器时钟
		R_CLK = 0;//拉低输出锁存器时钟
		if(dat & 0x01)//发送1
			DIO = 1;
		else		  //发送0
			DIO = 0;
		S_CLK = 1;//拉高移位寄存器时钟,数据移位
		dat >>= 1;//数据右移
	}
	R_CLK = 1;//拉高输出锁存器时钟,并行输出数据
	while(1);
}

上面那个芯片对应阴极,下面的对应阳极(点阵模块原理图没给,反推出来的),上面的代码的功能是点亮一个点,然后因为模块内部结构位置,所以不清楚是那个点。
再看一个例子:

#include <reg52.h>
#include <intrins.h> //循环右移头文件
sbit DIO = P3^4;  //串行数据口
sbit S_CLK = P3^5;//移位寄存器时钟
sbit R_CLK = P3^6;//输出锁存器时钟
/*点阵字形码*/
unsigned char code tabel[2][8]={
//8次,可以得出每行或列的点亮情况,所以可以覆盖所有情况
0xE0,0xEE,0x01,0x6D,0x01,0x6D,0x01,0xEF,//电
0xE7,0xF7,0xF7,0xF7,0x80,0xF7,0xFB,0xC3//子
};
/*595发送一字节*/
void Send_Byte(unsigned char dat)
{
	unsigned char i; //循环次数变量
	S_CLK = 0;//拉低移位寄存器时钟
	R_CLK = 0;//拉低输出锁存器时钟
	for(i=0; i<8; i++) //循环8次
	{
		if(dat & 0x01)//发送1
			DIO = 1;
			else	  //发送0
			DIO = 0;
		dat >>= 1;//数据右移
		S_CLK = 1;//拉高移位寄存器时钟,数据移位
		S_CLK = 0;//拉低移位寄存器时钟
	}	
}
void main()
{
	unsigned char j, k, ROW;//j发送8列和8行字形码,k字符数量,ROW行值
	unsigned int z;	//动态扫描延时变量
	while(1)
	{
		for(k=0; k<2; k++)//k 需要显示的字符数量
		{
			for(z=0; z<1000; z++)//z刷新次数,显示1000次”电“再显示”子“
			{
				ROW = 0x80;//行选初值
				for(j=0; j<8; j++) //循环8次发送行和列值
				{
					Send_Byte(tabel[k][j]);//发送列选值
					Send_Byte(ROW);	//发送行选值
					R_CLK = 1; //拉高输出锁存器,把移位寄存器中数据输出
					R_CLK = 0; //拉低输出锁存器
					ROW = _cror_(ROW, 1);//右移,选择下一行	
				}
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值