用 C学习51单片机——记录 3、点阵屏

本文详细介绍了使用STC89C52芯片的51单片机进行8*8共阳极点阵屏编程的过程。从单个点的显示到“生日快乐!”字符的动态显示,通过具体的C代码示例,讲解了点阵屏数据发送原理及动态显示技巧。

用 C 学习51单片机过程与自我拓展——记录(STC89C52芯片)

前言——其实51并不太难,多看 多写代码,多调试,就一定会有所感悟。
所以我在此留下一些代码以供自己重复记忆,也希望能够帮到你!

今天又找到一些时间来更新,废话不多说, 来🙂☞

三、8*8共阳极点阵屏

原理图共阳极点阵屏

(1)点阵屏一个点(第一个点)

程序总结
1、发送一个点只是帮助理解点阵屏发送数据的原理,实际上并不需要自己一个一点的找数据,可用取模软件直接给我们数据
2、记住传送点阵屏数据的方法

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
sbit DIO = P3^4; //数据输入IO口
sbit SCLK = P3^5;// 移位寄存器时钟
sbit RCLK = P3^6;//输出锁存器时钟

//row 0x80 ,cov 0xfe
void main ()
{
	uchar i,dat;
	 	dat = 0xfe;
	for(i=0;i<8;i++)
	{
		SCLK = 0;
		RCLK = 0;
		if(dat & 0x01)//dat的最低位为1时就输出1
			DIO = 1;
		else 
			DIO = 0;
		SCLK = 1;//拉高发送数据
		dat >>= 1;//数据左移
		SCLK = 0;//恢复(为下一次发送做准备)			
	}
	dat = 0x80;
	for(i=0;i<8;i++)
	{
		SCLK = 0;
		RCLK = 0;
		if(dat & 0x01)//dat的最低位为1时就输出1
			DIO = 1;
		else 
			DIO = 0;
		SCLK = 1;
		dat >>= 1;
		SCLK = 0;				
	}
	RCLK = 1;
	while(1);

}

(2)显示字( “生日快乐!”)

程序总结
1、记住发送数据的函数用法
2、显示多个点的原理同数码管的动态显示差不多,都是程序快速运行的结果

#include <reg52.h>
#include <intrins.h>
sbit DIO = P3^4;
sbit SCLK = P3^5;
sbit RCLK = P3^6;
unsigned char code tabel[5][8] ={
0xFF,0x80,0xF7,0xC1,0x77,0x81,0xD7,0xEF,//生
0xFF,0xC3,0xDB,0xDB,0xC3,0xDB,0xC3,0xFF,//日
0xDE,0xAD,0xB3,0x80,0x35,0xA1,0x97,0xBF,//快
0xFF,0xE7,0xD5,0xF7,0xC1,0xD7,0xC3,0xFF,//乐
0xFF,0xE7,0xFF,0xE7,0xE7,0xE7,0xE7,0xFF,//!
};

void S_byte (unsigned char dat)	//发送字节函数(一个字节)
{
	unsigned char i;
	SCLK = 0;
	RCLK = 0;
	for(i=0 ;i<8; i++)
	{
		if(dat & 0x01)//若dat最后一位是1则发送1	 	
			DIO = 1;
		else
			DIO = 0;
		dat >>= 1;
		SCLK = 1;
		SCLK = 0;		
	}
}

void main ()
{
	unsigned char i,j,ROW;
	int k;
	while(1)//循环显示
	{
		for(i=0;i<5;i++)//【5】【8】,对应其中【5】
		{
			for(k=0;k<1000;k++)//增加循环次数,使程序不用运行过快
			{
				ROW = 0x80;	//行选的初值
				for(j=0;j<8;j++)
				{
					S_byte(tabel[i][j]);//先发送列选值
					S_byte(ROW);//再发送行选值
					RCLK = 1;	//拉高输出锁存器(发送数据)
					RCLK = 0;  //拉低输出锁存器
					ROW =_cror_(ROW,1);//发送下一行的数据
			    }
			 }
	 	 }
	 }
}

今天就又先到这,期待下次更新🤭!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值