IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 10.LED8x8点阵 -> 正文阅读

[嵌入式]10.LED8x8点阵

????????要实现行列不同位置亮灯,需要使用动态显示的方法,也要结合扫描的方法。

????????在第一行亮灯一段时间以后灭掉,点亮第二行一段时间以后灭掉,点亮第三行一段时间以后灭掉,如此点亮,直到八行全部点亮一次。在第一行点亮到最后一行灭掉的总时间不能超过人肉眼可识别的时间,即 24 毫秒。

????????在每一行点亮的时候,给列一个新的数据,此时对应列而在该行上要点亮的灯的数据。这样就想数码管的动态显示一样,只不过数码管的 LED 灯是段值。这里使用 LED 点阵显示数字,也是多个 LED 同时点亮。

????????已知点阵的列由P0口控制,只需要令P0=0111 1111,1011 1111,……便可依次让对应的列为0,便可选中该列的LED。

????????行则由74HC595控制,下面说明如何通过使用取字模软件来获取数据。

????????新建图像,选择8x8的面积,如下:

????????参数设置如下:

????????鼠标点白色格子,选中要显示的格子。点击“C51格式”,点阵生成区便可得到对应的数据。

? ? ? ? 把数据复制进代码里面,如下。

#include"reg52.h"
#include"intrins.h"

typedef unsigned int  u16;
typedef unsigned char  u8;

u8 led_row[]={0x28,0x48,0xA8,0x28,0xFF,0x28,0x28,0x28};//该行数据为取字模软件得到,输入给74HC595 
u8 led_line[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//列数据为0111 1111,1011 1111,1101 1111……把数据赋值给P0口,便可选中某一列,动态扫描显示 

sbit SRCLK=P3^6;				  //移位寄存器时钟输入
sbit _RCLK=P3^5;				  //储存寄存器时钟输入,因为reg52头文件定义了RCLK因此只能换一个名字_RCLK 
sbit SER=P3^4;					  //串行输入


void delay(u16 s);				  //延时函数 
void transform(u8 num);			  //把数值用74HC595转化出来,因为led点阵的阳极通过74HC595连接
void LED1(u8 num_line);		  	  //把数据传递给P0口 

void main()
{  
   int i=0;

   while(1)
   {
   		for(i=0;i<8;i++)		  //动态扫描显示, 
		{
			transform(led_row[i]);//行数据 ,先选中哪几行显示 
			LED1(led_line[i]);	  //列数据 ,选中哪一列显示 
			delay(100);			  //延时 

		}
   }
}

void delay(u16 s)
{
	while(s--);
}

void transform(u8 num)
{
	u8 a;
	
	SRCLK=1;
	RCLK=1;
	//移位寄存器工作 
	for(a=0;a<8;a++)		//本循环块功能为:把num的位从高到低依次传输到QH到QA 
	{
		SER=num>>7;			//8位二进制数右移7位,即把最高位的数放在最低位,其余地方补零,从而实现把最高位取出来,例如1001 0010》0000 0001 
		num=num<<1;			//把num左移一位,把次高位的值换到最高位,最低位补0,从而更换最高位的值,为下一次SER取值做准备 
					   
		SRCLK=0;			//令电瓶为0 
		_nop_();			//延时1us 
		_nop_();
		SRCLK=1;			//令电瓶为1,实现跳转,产生上升沿,把SER的值读进储存寄存器 
	}
	//储存寄存器工作 
	_RCLK=0;
	_nop_();
	_nop_();
	_RCLK=1;				//产生上升沿,把值送到QA到QH 
}

void LED1(u8 num_line)
{
	P0=num_line;			//把数据传给P0口 
}

? ? ? ? 结果如下:

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:38:55  更:2022-01-17 11:39:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:49:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码