基于单片机的LED数字大屏幕显示系统

最新更新时间:2011-10-03来源: chinaaet关键字:74HC595  控制寄存器  串口 手机看文章 扫描二维码
随时随地手机看文章
  1  引言

  LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,应用越来越广泛。ATMEGA16L单片机是一款基于AVRRISC的、低功耗CMOS8位单片机,具有16K字节的自编程FLASH,512字节的EEPROM,1K字节的SRAM,通过AVR单片机来控制LED的显示,结构简单,应用灵活,并且易于扩展。

  2  系统设计原理

  2.1 编码设计

  编码设计有两个过程:字库提取以及字模编码转换。字库的提取涉及到的两个字库文件,一个为ASC16,专门存放ASCII编码;另一个为HZK16,专门存放汉字字库编码。要提取字库,首先要对它进行初始化,即打开字库。然后根据一个字符提取它相应的编码。首先取出字符的内码后(注意区分单字节和双字节的内码),接着通过内码得到该字符对应的字模的编码在ASCII或HZK16内的偏移量,最后就可以根据这个地址在文件中的偏移位置找到相应的字模编码,我们可以通过这个公式来计算:

  在ASCII中,偏移量=(内码的低地址)*16,

      在HZK16中,偏移量=((内码的高地址-161)*94+(内码的低地址-161))*32。

  此时得到的字模编码不是最终所要的编码(单字节数据如英文是按8*16点阵来显示,而双字节数据时如汉字是按16*16点阵来显示的)。这里统一使用8*16点阵,这就需要对其转换。下图左表格表示的是汉字编码在字库内存放顺序,右表格表示的是经过转换过后的编码存放顺序。编码转换过程如图1所示:

  2.2 矩阵转换移位算法

  矩阵转换移位算法目的就是如何把这些原始的数据转换成串行的数据,以便把数据正确的输入到74HC595。原始的数据必须要对其转换。下面为它的算法实现。

  2.3 上位机和下位机的通信

  上位机和下位机的通信主要是通过RS232接口进行的,对于上位机的数据传输的速率为9600bps。为了便于数据的传输和接收,可以给要传输数据的前后加上标志位。如果数据发送量大,在发送数据时还可采用线程的方式来发送。而下位机接收数据则可采用单片机内全双工的通用异步收发器(UART)来进行。

  UART有中断和查询两种工作方式,UART初始化需要设置相关几个控制寄存器,我们可以把UART几个控制寄存器的初始化情况表示出来:

  UCR=0x00设置波特率时要先关闭UARTUBRR=0x33设置波特率为9600bpsUCR=0xD8打开串口:

  8位数据UART如何接收和发送数据通过数据寄存器UDR完成。UDR虽然只有一个地址,但是在物理上分离了二个寄存器,一个用于发送,一个用于接收。对于数据的接收和发送采用中断的方式,其中断向量为12,即是interrupthandleruart0_rx_isr:12。接收和发送方式如下:

  2.4 显示原理

  要想点亮LED,必须把LED的位选数据信号置成低电平。显示的过程如下:首先是将74HC595的RCK置0,再从相应数组中取出要显示的数据和位选信号,通过SCK的一个上升沿脉冲,就可以将这个数据输入74HC595,等所有的数据打入相应的芯片后最后再把RCK置1,这些数据就可以通过74HC595并行的传输出去。

  3  系统的设计方案

  硬件总体框架的设计是根据上位机与下位机通信原理以及LED点阵显示原理和74HC595的特性所构成的。下面的图2说明的是LED点阵显示驱动原理图及其连线方式。

  PA、PB口将作为数据输出口,一共连接16个8*8的LED。端口的每一个引脚将作为74HC595的数据输入端。RCK、SCK的并联的使用的目的是为了实现LED字符的同步显示。在线路连接中Q`H必须连接SI,因为根据74HC595的特性,如果输入的数据数大于8,那么前面的数据将会被自动溢出,根据这一思想就将两个芯片连接起来,按照先输入8位数据信号,再输入8位位选信号的顺序,那么正好前一个74HC595存放位选信息,后一个74HC595存放数据信息。

  根据系统的设计原理,得出如下图3的软件流程框架:

  4  结论

  对于目前这个显示系统,优点在于电路实现简单,成本较低。如果系统需要更大的字符显示库,只需要扩展AVR的RAM或EEPROM,并且用多个AVR单片机进行的通讯即可。当然,这时需要注意数据写入时间问题,以免造成显示的不同步。

关键字:74HC595  控制寄存器  串口 编辑:探路者 引用地址:基于单片机的LED数字大屏幕显示系统

上一篇:全面解析LED照明灯具设计思路
下一篇:OLED面板要发展需突破价格瓶颈

推荐阅读最新更新时间:2023-10-18 15:50

74HC595 for STM32 源代码【worldsing笔记】
74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SHcp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在STcp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。 8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。 将
[单片机]
<font color='red'>74HC595</font> for STM32 源代码【worldsing笔记】
stm32 串口接收不定长数据 亲测可行
/**************** USART1中断处理函数******************/ void USART1_IRQHandler(void) { if(USART_GetITStatus(USART1, USART_IT_RXNE)!= RESET) { if(Rx_Counter 64) { Rx_buffer =USART_ReceiveData(USART1); //接收一字节数据存入数组中 } } else if(USART_GetITStatus(USART1,USART_IT_IDLE)!= RESET) {
[单片机]
【STM32CubeMX】 串口通信(USART) Printf重定向
STM32CubeMX: Version 4.26.1 MDK-ARM: Version 5.24.2 开发板: 中移onenet 麒麟座MINI板 芯片: STM32F103CBT6 1.STM32CubeMX设置 设置外部时钟源 设置Debug 设置串口 使用USART1 PA9,PA10 设置时钟频率 设置USART1详细参数 生成MDK-ARM工程 2.重定向Printf 及 Scanf 主要用到两个函数 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size,
[单片机]
【STM32CubeMX】 <font color='red'>串口</font>通信(USART) Printf重定向
51单片机的串口收发C51程序
//晶振11.0592Mhz //2010年10月9日给网友改,在硬件上调试通过 #include reg52.h unsigned char a1; bit flag; void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) { if(flag==1) { ES=0; flag=0; SBUF=a1; while(!TI); TI=0;
[单片机]
Connective Peripherals USB Type-C串口适配器电缆问市
Connective Peripherals现在可以向全球市场提供配备USB - C型终端的转换器电缆解决方案。这些来自FTDI批准的模块/电缆分包商的新电缆将对工程师具有相当大的价值,有助于促进现代电子硬件与传统设备和外设的互连。覆盖USB-to-RS232, USB-to-TTL和USB-to-MPSSE数据接口,它们可以提供在全速或高速版本。 Connective Peripherals是目前市场上唯一一家提供C型终端高速成型电缆的供应商。这些电缆重量轻,但结构坚固可靠,长度多种多样,包括0.1米、0.5米、1.0米和1.8米(取决于特定型号指定)。 这些符合FCC和CE标准的电缆的关键用途与嵌入式系统开发和评估活
[网络通信]
Connective Peripherals USB Type-C<font color='red'>串口</font>适配器电缆问市
一个通用MCU-51串口通信程序
一个通用MCU-51串口通信程序,以后每次复 制粘贴,程序中调用相应函数既可. #include reg51.h #include string.h unsigned char ch; bit read_flag= 0 ; //初始化串口 void init_serialcom( void ) { SCON = 0 50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr //UART为模式1,8位数据,允许接收 TMOD |= 0 20 ; //TMOD: timer 1, mode 2, 8-
[单片机]
单片机与单片机串口通讯程序
单片机 与单片机串口通讯程序 #include reg51.h #define uchar unsigned char #define SLAVE 0x00 #define BN 16 uchar idata tdata ; uchar idata rdata ; bit trdy; bit rrdy; void main(void) { TMOD=0x20; //定时器T1为模式2 TL1=0xfd; //定时器初值 TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf0; //串行口方式3 ES=1;EA=1;
[单片机]
STM32F407 纯寄存器操作GPIO,串口,中断(专治花里胡哨)
配置时钟,延时函数,均使用正点原子的SYSTEM文件 硬件:正点原子探索者,STLINK调试 系统时钟配置步骤 正点原子,时钟配置函数(我都是直接把sys.c和sys.h拷贝过来,直接使用) //设置向量表偏移地址 //NVIC_VectTab:基址 //Offset:偏移量 void MY_NVIC_SetVectorTable(u32 NVIC_VectTab,u32 Offset) { SCB- VTOR=NVIC_VectTab|(Offset&(u32)0xFFFFFE00);//设置NVIC的向量表偏移寄存器,VTOR低9位保留,即 保留。 } //时钟设置函数 //Fvco=Fs*(
[单片机]
STM32F407 纯<font color='red'>寄存器</font>操作GPIO,<font color='red'>串口</font>,中断(专治花里胡哨)
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved