• 方案介紹
  • 附件下載
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

嵌入式外設-16X16點陣顯示器

2024/04/30
4990
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

聯(lián)系方式.docx

共1個文件

一、模塊介紹

16X16點陣顯示器是一種采用LED點陣組成的顯示設備,

它由16行16列的LED點組成,用于顯示字符、圖形等信息。每個LED點可以獨立控制亮滅,通過控制每個點的亮度,可以組合成不同的字符和圖形,實現(xiàn)信息的顯示。 16X16點陣顯示器通常用于戶外廣告、公交車站信息顯示、商場信息公告、停車場引導等領域,具有顯示效果好、可視距離遠、使用壽命長等特點。

16X16點陣顯示器的工作原理是通過控制器發(fā)送指令,控制每個LED點的亮滅,形成所需的字符和圖形。控制器可以通過串口、并口、網(wǎng)絡等方式與計算機或其他設備連接,實現(xiàn)信息的傳輸和顯示。

16X16點陣顯示器的優(yōu)點包括:

1. 顯示效果好:采用LED點陣顯示,字符和圖形清晰,可視距離遠。

2. 使用壽命長:LED燈具有很長的使用壽命,一般可以達到10萬小時以上。

3. 低功耗:LED燈具有較低的功耗,有利于節(jié)能降耗。

4. 安裝方便:可以根據(jù)需要進行懸掛、固定等方式安裝。

5. 維護簡單:LED點陣顯示器采用模塊化設計,維護方便。

6. 廣泛應用:適用于各種場合的信息顯示,如戶外廣告、公交車站、商場、停車場等。 總之,16X16點陣顯示器是一種性能優(yōu)良、應用廣泛的顯示設備,具有很高的實用價值。

二、資料獲取

關注微信公眾號--星之援工作室 發(fā)送關鍵字(16X16點陣

????

效果展示

接線規(guī)則(可在lcd.h中自行修改)

三、代碼編寫

main

/*--------------------------------------------------------*
 *                                       								  *
 *   星之援網(wǎng)絡科技工作室學習資料v1.0    									*
 *		              																			*
 *		 程序介紹:16*16實驗               								  *
 *		 實現(xiàn)效果:顯示漢字何   								 						 *
 *                                      							    *
 *--------------------------------------------------------*
*/

#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位搶占優(yōu)先級,2位響應優(yōu)先級
	// LED 端口初始化 
	LED_GPIO_Config();
	// 串口初始化
	uart_init(115200);
	
	System_PB34_setIO();
	lcd_GPIO_init();

	printf("init okn");
				
  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
// 狀態(tài)
#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	:	系統(tǒng)設置PB3和PB4為普通IO口
 * @Input		:	deviceSta,設備狀態(tài)
 * @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); // 根據(jù)設定參數(shù)初始化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     發(fā)送數(shù)據(jù)
 *  @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;				//上升沿發(fā)送數(shù)據(jù)   
		delay_us(1);
		CLK_OFF;
		delay_us(1);		
		dat >>= 1;
			
	}			
}
/*!
 *  @brief     num為字數(shù)  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;		//更新數(shù)據(jù)時候關閉顯示。等更新完數(shù)據(jù),打開138顯示行。防止重影。
		
		Display_Buffer[0] = dat[0][i];		
		Display_Buffer[1] = dat[0][i+16];

		Send(Display_Buffer[1]);
		Send(Display_Buffer[0]);

		LAT_ON;					//鎖存數(shù)據(jù)   
		delay_us(1);
		LAT_OFF;
		delay_us(1);
		Scan_Line(i);							//選擇第i行
		G_OFF;
		delay_us(100);;			//延時一段時間,讓LED亮起來。    				
	}	
}

/*********************************************************************************
 * @Function	:	系統(tǒng)設置PB3和PB4為普通IO口
 * @Input		:	deviceSta,設備狀態(tài)
 * @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);
}

四、參考

 

聯(lián)系方式 微信號:13648103287

  • 聯(lián)系方式.docx
    下載

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
STM32F205RCT6 1 STMicroelectronics High-performance Arm Cortex-M3 MCU with 256 Kbytes of Flash memory, 120 MHz CPU, ART Accelerator

ECAD模型

下載ECAD模型
$27.28 查看
ATXMEGA128A1-CUR 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PBGA100, 9 X 9 MM, 1.20 MM HEIGHT, 0.80 MM PITCH, GREEN, CBGA-100
$10.58 查看
ATXMEGA256A3U-AUR 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQFP64, 14 X 14 MM, 1 MM THICKNESS, 0.80 MM PITCH, GREEN, PLASTIC, MS-026AEB, TQFP-64
$7.71 查看

相關推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時響應!

方案定制,程序設計方案、單片機程序設計與講解、APP定制開發(fā)。本公眾號致力于向讀者傳遞關于程序設計和開發(fā)的相關知識,并分享一些關于軟件開發(fā)的最佳實踐。如果您有什么問題或建議,請隨時聯(lián)系我們。我們將竭誠為您服務