嵌入式外设 -- 16X16点阵显示器

avatar
作者
猴君
阅读量:0

目录

一、模块介绍

二、资料获取

关注微信公众号--星之援工作室 发送关键字(16X16点阵)

效果展示  

接线规则(可在lcd.h中自行修改)

三、代码编写

main

lcd.h

lcd.c


一、模块介绍

16X16点阵显示器是一种采用LED点阵组成的显示设备,

它由16行16列的LED点组成,用于显示字符、图形等信息。每个LED点可以独立控制亮灭,通过控制每个点的亮度,可以组合成不同的字符和图形,实现信息的显示。 16X16点阵显示器通常用于户外广告、公交车站信息显示、商场信息公告、停车场引导等领域,具有显示效果好、可视距离远、使用寿命长等特点。

16X16点阵显示器的工作原理是通过控制器发送指令,控制每个LED点的亮灭,形成所需的字符和图形。控制器可以通过串口、并口、网络等方式与计算机或其他设备连接,实现信息的传输和显示。

16X16点阵显示器的优点包括:

1. 显示效果好:采用LED点阵显示,字符和图形清晰,可视距离远。

2. 使用寿命长:LED灯具有很长的使用寿命,一般可以达到10万小时以上。

3. 低功耗:LED灯具有较低的功耗,有利于节能降耗。

4. 安装方便:可以根据需要进行悬挂、固定等方式安装。

5. 维护简单:LED点阵显示器采用模块化设计,维护方便。

6. 广泛应用:适用于各种场合的信息显示,如户外广告、公交车站、商场、停车场等。 总之,16X16点阵显示器是一种性能优良、应用广泛的显示设备,具有很高的实用价值。

二、资料获取

关注微信公众号--星之援工作室 发送关键字(16X16点阵

➡️🫡🫡🫡🫡🫡🫡🫡🫡➡️

效果展示  

接线规则(可在lcd.h中自行修改)

 

三、代码编写

main

/*--------------------------------------------------------*  *                                       								  *  *   星之援网络科技工作室学习资料v1.0    									*  *		              																			*  *		 程序介绍:16*16实验               								  *  *		 实现效果:显示汉字何   								 						 *  *                                      							    *  *--------------------------------------------------------* */  #include "stm32f10x.h" #include "delay.h" #include "led.h" #include "key.h" #include "usart.h" #include "lcd.h"  const unsigned char  Word1[1][32] =  {  0xF7,0xF7,0xF0,0xEF,0xEF,0xCC,0xCD,0xAD,0x6D,0xED,0xEC,0xED,0xEF,0xEF,0xEF,0xEF, 0xFF,0xFF,0x01,0xF7,0xF7,0x37,0xB7,0xB7,0xB7,0xB7,0x37,0xB7,0xF7,0xF7,0xD7,0xEF,/*"何",0*/  };  int main(void) { 	char str[50]; 	u8 key=0; 	delay_init(); 	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 	// LED 端口初始化  	LED_GPIO_Config(); 	// 串口初始化 	uart_init(115200); 	 	System_PB34_setIO(); 	lcd_GPIO_init();  	printf("init ok\n"); 				   while(1) 	{ 		Display(Word1);   }    } 

lcd.h

可以自行修改定义的io口

#ifndef __lcd12864_H_ #define __lcd12864_H_  #include "sys.h" //  引脚定义 #define D_GPIO_CLK RCC_APB2Periph_GPIOB #define D_GPIO_PORT GPIOB #define D_GPIO_PIN GPIO_Pin_0  #define C_GPIO_CLK RCC_APB2Periph_GPIOB #define C_GPIO_PORT GPIOB #define C_GPIO_PIN GPIO_Pin_9  #define B_GPIO_CLK RCC_APB2Periph_GPIOB #define B_GPIO_PORT GPIOB #define B_GPIO_PIN GPIO_Pin_8  #define A_GPIO_CLK RCC_APB2Periph_GPIOB #define A_GPIO_PORT GPIOB #define A_GPIO_PIN GPIO_Pin_7  #define G_GPIO_CLK RCC_APB2Periph_GPIOB #define G_GPIO_PORT GPIOB #define G_GPIO_PIN GPIO_Pin_6  #define DI_GPIO_CLK RCC_APB2Periph_GPIOB #define DI_GPIO_PORT GPIOB #define DI_GPIO_PIN GPIO_Pin_5  #define CLK_GPIO_CLK RCC_APB2Periph_GPIOB #define CLK_GPIO_PORT GPIOB #define CLK_GPIO_PIN GPIO_Pin_4  #define LAT_GPIO_CLK RCC_APB2Periph_GPIOB #define LAT_GPIO_PORT GPIOB #define LAT_GPIO_PIN GPIO_Pin_3 // 状态 #define D_ON digitalHi(D_GPIO_PORT, D_GPIO_PIN) #define D_OFF digitalLo(D_GPIO_PORT, D_GPIO_PIN)  #define C_ON digitalHi(C_GPIO_PORT, C_GPIO_PIN) #define C_OFF digitalLo(C_GPIO_PORT, C_GPIO_PIN)  #define B_ON digitalHi(B_GPIO_PORT, B_GPIO_PIN) #define B_OFF digitalLo(B_GPIO_PORT, B_GPIO_PIN)  #define A_ON digitalHi(A_GPIO_PORT, A_GPIO_PIN) #define A_OFF digitalLo(A_GPIO_PORT, A_GPIO_PIN)  #define G_ON digitalHi(G_GPIO_PORT, G_GPIO_PIN) #define G_OFF digitalLo(G_GPIO_PORT, G_GPIO_PIN)  #define DI_ON digitalHi(DI_GPIO_PORT, DI_GPIO_PIN) #define DI_OFF digitalLo(DI_GPIO_PORT, DI_GPIO_PIN)  #define CLK_ON digitalHi(CLK_GPIO_PORT, CLK_GPIO_PIN) #define CLK_OFF digitalLo(CLK_GPIO_PORT, CLK_GPIO_PIN)  #define LAT_ON digitalHi(LAT_GPIO_PORT, LAT_GPIO_PIN) #define LAT_OFF digitalLo(LAT_GPIO_PORT, LAT_GPIO_PIN)    void lcd_GPIO_init(void);   void Scan_Line(unsigned char Dbyte); void Send( unsigned char dat); void Display(const unsigned char dat[][32]);		  /*********************************************************************************  * @Function	:	系统设置PB3和PB4为普通IO口  * @Input		:	deviceSta,设备状态  * @Output		: 	None  * @Return		: 	None  * @Others		: 	JTAG调试方式会受影响  * @Date			:  2020-04-22  **********************************************************************************/ void System_PB34_setIO(void); 	 #endif 

lcd.c

#include "lcd.H" #include "delay.h"   unsigned char Display_Buffer[2];  /*!  *  @brief      GPIO_init  *  @since      v1.0  *  @param  None  */ void lcd_GPIO_init() {  	GPIO_InitTypeDef GPIO_InitStructure; 	RCC_APB2PeriphClockCmd(D_GPIO_CLK, ENABLE); // 使能PB,PE端口时钟  	GPIO_InitStructure.GPIO_Pin = D_GPIO_PIN|C_GPIO_PIN |B_GPIO_PIN|A_GPIO_PIN|G_GPIO_PIN|DI_GPIO_PIN|CLK_GPIO_PIN|LAT_GPIO_PIN; // 端口配置 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	   // 推挽输出 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	   // IO口速度为50MHz  	GPIO_Init(GPIOB, &GPIO_InitStructure); // 根据设定参数初始化GPIOB.5  } /*!  *  @brief     扫描行  *  @since      v1.0  *  @param   *  @author     hr  */ void Scan_Line( unsigned char Dbyte) {	 	switch(Dbyte) 	{ 		case 0:			 			D_OFF;C_OFF;B_OFF;A_OFF; 					 			break; 		case 1:					 			D_OFF;C_OFF;B_OFF;A_ON; 		 			break; 		case 2:					 			D_OFF;C_OFF;B_ON;A_OFF; 		 			break; 		case 3:					 			D_OFF;C_OFF;B_ON;A_ON; 		 			break; 		case 4: 			D_OFF;C_ON;B_OFF;A_OFF; 		 			break; 		case 5: 			D_OFF;C_ON;B_OFF;A_ON; 		 			break; 		case 6: 			D_OFF;C_ON;B_ON;A_OFF; 		 			break; 		case 7: 			D_OFF;C_ON;B_ON;A_ON; 		 			break; 		case 8: 			D_ON;C_OFF;B_OFF;A_OFF; 		 			break; 		case 9: 			D_ON;C_OFF;B_OFF;A_ON; 		 			break;	 		case 10: 			D_ON;C_OFF;B_ON;A_OFF; 		 			break; 		case 11: 			D_ON;C_OFF;B_ON;A_ON; 		 			break; 		case 12: 			D_ON;C_ON;B_OFF;A_OFF; 		 			break; 		case 13: 			D_ON;C_ON;B_OFF;A_ON; 		 			break; 		case 14: 			D_ON;C_ON;B_ON;A_OFF; 		 			break; 		case 15: 			D_ON;C_ON;B_ON;A_ON; 		 			break; 		default : break;	 	} } /*!  *  @brief     发送数据  *  @since      v1.0  *  @param   *  @author     hr  */ void Send( unsigned char dat) { 	unsigned char i; 	CLK_OFF; 	delay_us(1);;	 	LAT_OFF; 	delay_us(1);;  	for( i = 0 ; i < 8 ; i++ ) 	{ 		if( dat&0x01 ) 		{ 			DI_ON;	 		} 		else 		{ 			DI_OFF; 		}  		delay_us(1); 		CLK_ON;				//上升沿发送数据    		delay_us(1); 		CLK_OFF; 		delay_us(1);		 		dat >>= 1; 			 	}			 } /*!  *  @brief     num为字数  dat[][32]为字模的名称  *  @since      v1.0  *  @param   *  @author     hr  */ void Display(const unsigned char dat[][32])					 { 	unsigned char i;  	for( i = 0 ; i < 16 ; i++ ) 	{ 		G_ON;		//更新数据时候关闭显示。等更新完数据,打开138显示行。防止重影。 		 		Display_Buffer[0] = dat[0][i];		 		Display_Buffer[1] = dat[0][i+16];  		Send(Display_Buffer[1]); 		Send(Display_Buffer[0]);  		LAT_ON;					//锁存数据    		delay_us(1); 		LAT_OFF; 		delay_us(1); 		Scan_Line(i);							//选择第i行 		G_OFF; 		delay_us(100);;			//延时一段时间,让LED亮起来。    				 	}	 }  /*********************************************************************************  * @Function	:	系统设置PB3和PB4为普通IO口  * @Input		:	deviceSta,设备状态  * @Output		: 	None  * @Return		: 	None  * @Others		: 	JTAG调试方式会受影响  * @Date			:  2020-04-22  **********************************************************************************/ void System_PB34_setIO(void) { 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 打开AFIO时钟 	GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); 	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); } 

四、参考

单片机 LED点阵_单片机点阵-CSDN博客文章浏览阅读1.3w次,点赞44次,收藏156次。单片机 LED点阵一、简述 使用8×8LED点阵显示汉字。向上滚动"中华"两个汉字。 文件打包:链接: https://pan.baidu.com/s/1oHSAIY6qVA7qFFWUvMvJEA 密码: snyg二、效果三、工程文件结构1、Keil工程2、仿真电路图四、代码88led.c文件#include<reg51.h>#define uint unsigne..._单片机点阵https://blog.csdn.net/nanfeibuyi/article/details/80539461?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171438431616800222828963%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171438431616800222828963&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-17-80539461-null-null.nonecase&utm_term=%E7%82%B9%E9%98%B5&spm=1018.2226.3001.445051单片机入门——8X8点阵LED_单片机8×8led点阵-CSDN博客文章浏览阅读2.7w次,点赞47次,收藏369次。文章目录1.初识点阵LED1.1.什么是点阵LED1.2.点亮LED点阵1.3.点阵显示图案2.点阵的动画显示2.1.点阵的纵向移动2.2.点阵的横向移动1.初识点阵LED1.1.什么是点阵LEDLED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。点阵LED显示屏作为一种现代电子媒体设备,具有灵活的的显_单片机8×8led点阵https://blog.csdn.net/m0_56646606/article/details/122980667?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171438431616800222828963%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171438431616800222828963&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-19-122980667-null-null.nonecase&utm_term=%E7%82%B9%E9%98%B5&spm=1018.2226.3001.4450


广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!