嵌入式LED灯显示

合集下载

嵌入式led驱动电路及接口原理

嵌入式led驱动电路及接口原理

嵌入式led驱动电路及接口原理嵌入式LED驱动电路及接口原理LED灯具已成为现代照明的主流产品,而嵌入式LED驱动电路则是实现灯具控制、亮度调节和颜色渐变等功能的关键技术。

本文将介绍嵌入式LED驱动电路的基本原理和接口设计。

一、嵌入式LED驱动电路的基本原理嵌入式LED驱动电路由嵌入式系统和LED灯带组成,其功能主要包括对LED灯带的控制、亮度调节和色彩控制等。

其中,嵌入式系统负责对LED灯带进行控制,而LED灯带则负责输出可见光。

嵌入式系统通常采用单片机或FPGA等嵌入式控制器,通过GPIO或PWM等通用接口与LED灯带相连,实现对LED灯带的控制。

同时,嵌入式系统需要配备驱动程序,将控制信号翻译成实际控制命令,并将其发送到LED灯带。

LED灯带通常由发光二极管和电路板组成,可以利用串联的方式实现多个LED灯带的亮度调节和颜色控制。

在控制灯带亮度时,需要利用PWM技术进行高精度控制,而控制灯带的颜色则需要利用RGB三基色控制技术。

二、嵌入式LED驱动电路的接口设计嵌入式LED驱动电路的接口设计需要考虑多种因素,例如输出功率、通信方式、控制精度等。

以下是常见的嵌入式LED驱动电路接口设计:GPIO接口:GPIO是嵌入式系统中常用的通用输入输出接口,主要用于控制LED灯带的亮度,以及控制灯带的开关。

在控制LED灯带亮度时,通过改变GPIO输出电平的高低,可以实现LED灯带亮度的控制。

而在控制灯带开关时,通过GPIO输出低电平即可实现灯带的关闭。

PWM接口:PWM是一种针对LED灯带亮度控制的接口,主要通过改变信号的占空比来调整LED灯带的亮度。

通常,PWM信号的频率为几百Hz至几KHz,占空比可以根据需要进行精确调整,从而控制LED灯带的亮度。

RGB接口:RGB接口是一种针对LED灯带颜色控制的接口,主要通过控制RGB三基色电路的电平来控制LED灯带颜色的变化。

例如,如果需要将LED灯带设置为白色,则需要使红、绿、蓝三个基色的电平都达到最大值;而如果需要将LED灯带设置为紫色,则需要让红色和蓝色的电平都达到最大值。

基于嵌入式LED显示课程设计报告书

基于嵌入式LED显示课程设计报告书

目录前言 ------------------------------------------------------------------- - 1 -1.1嵌入式系统简介................................................... - 2 -1.2认识博创经典实验箱............................................... - 2 -1.3建立开发环境..................................................... - 3 -1.4给下位机烧写软件系统............................................. - 3 -二.基本原理-------------------------------------------------------------- - 4 -2.1 LED显示控制原理................................................. - 4 -2.1.1 7段(或8段)LED .......................................... - 5 -2.1.2点阵式LED .................................................. - 6 -2.2 74HC273在开发板上的连接......................................... - 6 -2.2.1 7段(或8段)LED的连接.................................... - 6 -2.2.2点阵式LED的连接........................................... - 7 -2.3 LED编程......................................................... - 8 -2.3.1 7段LED的段码表........................................... - 8 -2.3.2点阵式LED的显示缓冲区..................................... - 9 - 三.系统分析与设计------------------------------------------------------- - 9 -3.1设计需求......................................................... - 9 -3.2 LED点阵显示与C语言编程......................................... - 9 -3.2.1 LED点阵显示............................................... - 9 -3.2.2 C语言编程 (10)3.3 Makefile文件的编写 (12)3.4实验环境的连接 (14)四.运行结果---------------------------------------------------------------- 16 总结 ---------------------------------------------------------------------- 18 致谢 ----------------------------------------------------------------------- 19 参考文献-------------------------------------------------------------------- 20摘要由于电子技术的迅猛发展,在我们生活的到处都会发现,LED灯的广泛存在。

嵌入式系统led实验报告

嵌入式系统led实验报告

嵌入式系统led实验报告嵌入式系统是融合了计算机技术、控制技术和通信技术的复杂系统。

它的应用范围涵盖了从智能家电到工业自动化等多个领域。

在嵌入式系统中,LED的应用非常广泛,它可以用于指示灯、背光源,还可以用于制作LED屏幕等。

本报告基于STM32F103RBT6开发板,介绍了一次LED实验的过程。

一、硬件准备实验所需的硬件包括:1. STM32F103RBT6开发板;2. 顶部插座模块(用于连接LED灯);3. LED灯;4. USB线(用于连接开发板和电脑)。

1. Keil uVision5开发环境;2. STM32 CubeMX配置软件。

三、实验步骤2. 在Pinout&Configuration界面,选择将LED灯连接到开发板的哪个引脚上。

这里选择PC13引脚。

3. 在Clock Configuration界面,设置时钟源和时钟频率。

本实验中,选择HSI时钟源和72MHz的频率。

4. 在Pinout&Configuration界面的USART1选项卡中,开启USART1串口通信。

5. 在Project Manager界面,选择Generate Code,生成代码。

6. 打开Keil uVision5软件,在File菜单中选择New Project,创建新工程。

选择STM32F103C8系列,单片机型号选择STM32F103RBT6,前面板及链接器设置选择STM32F10x。

然后选择Project菜单,点击Options for Target,进入Target Options窗口,将Use MicroLIB选项打钩。

然后在Project Manager界面中找到Inc和Src文件夹,右键选择Add Files to Group并导入STM32CubeMX生成的头文件和代码文件。

```#include "stm32f1xx_hal.h"void SystemClock_Config(void);static void MX_GPIO_Init(void);while (1){HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); //LED亮灭HAL_Delay(100); //延时100ms}}void SystemClock_Config(void){RCC_OscInitTypeDef RCC_OscInitStruct;RCC_ClkInitTypeDef RCC_ClkInitStruct;__HAL_RCC_PWR_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);}__HAL_RCC_GPIOC_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_13;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);}```8. 保存代码并使用USB线将开发板和电脑连接起来。

嵌入式LED彩色异步显示屏控制系统的设计

嵌入式LED彩色异步显示屏控制系统的设计

和异步屏 的工作 方式。随后针 对现有 单 片机控 制 的 L D异步显 示屏 节 目简单 , E 附加 功能 少的缺点 , 出了基于 提
A M7 P D架构的嵌入 式 L D彩 色异步显示屏控 制 系统的设计 方案 。采用该方案控 制 的异步显 示屏节 目丰 R +C L E 富多彩 , 附加功 能强大, 性能稳 定可靠。文末对 A M9在 L D显示屏 控制 器领 域的应用进行 了展 望。 R E 关键词 : 嵌入 式系统 ; 异步显示屏 ; E L D显示屏控制 系统 ; 嵌入 式实3卷 第 5期
西 安 邮 电 学 院 学 报 J UR ALO IA NI RST O O TA E E OMMUNI A ON O N F X ’ N U VE I Y F P S ND T L C C TI S
Sp 20 e. 08 V 11 o 5 o.3N .
嵌 入 式 L D彩 色异 步 显 示 屏 控 制 系统 的设 计 E
陈 东
( 西安 邮电学院 电子 与信 息工程 系,陕 西 西安 702) 1 1 1
摘要 : 文章首先介绍 了嵌入式 系统和 A M 的相关知识 , R 然后介 绍了 L D显示屏的发展 状况 , E 并简要分析 了同步屏

类应用场合 , 主频最高可达 10 P , 3 MIS 支持大 多数 嵌入式操作系统 , R A M9和 A M9 R E在高性能和低 功耗特性方 面提供最佳 的性 能, R E还提供 了 A M9 增强的 D P运算功 能, S 适用于 中高端应用场合 , 其 主频最 高可 达 30 P 。删 1E除 了具 有 删 oMIS 0 系列 所共 有 的低 功 耗 、 性 能 的 特 点 外 , 性 能 比 高 其 A RM9系列 提高 了 近百 分 之 五 十 , 主频 最 高 可 达 其 40 P , 0MIS 主要 在一 些高端 产 品 中应 用 。 早期的 L D产品是单个的发光灯 , E 随着数字化 设 备 的 出现 ,E L D数 码管 和字 符 管 得 到 了广 泛 的应 用 ,E L D显示屏的出现 , 适应 了信息化社会发 展的 需要 , 成为大众传媒的重要工具【 。 2 J

嵌入式led控制实验报告

嵌入式led控制实验报告

嵌入式led控制实验报告嵌入式LED控制实验报告引言:嵌入式系统是一种集成了计算机硬件和软件的特殊计算机系统,广泛应用于各个领域,包括家电、汽车、医疗设备等。

而LED(Light Emitting Diode)则是一种半导体器件,可以将电能转化为光能。

在嵌入式系统中,LED的控制是一项重要的实验,本文将介绍嵌入式LED控制的实验过程和结果。

实验目的:本次实验的目的是通过嵌入式系统控制LED灯的亮灭,进一步理解嵌入式系统的工作原理以及学习如何编写相应的程序。

实验器材和方法:实验器材包括嵌入式开发板、LED灯、电源和连接线。

实验方法如下:1. 将LED灯连接到嵌入式开发板的GPIO引脚上;2. 使用开发板提供的编程软件,编写控制LED灯亮灭的程序;3. 将程序下载到开发板中;4. 运行程序,观察LED灯的亮灭情况。

实验结果:经过实验,LED灯可以根据程序的控制实现亮灭的变化。

通过改变程序中GPIO 引脚的电平状态,可以控制LED灯的亮灭。

例如,将GPIO引脚的电平设置为高电平,LED灯将亮起;将GPIO引脚的电平设置为低电平,LED灯将熄灭。

实验分析:本次实验的结果表明,嵌入式系统可以通过编写相应的程序来控制外部设备,如LED灯。

这是因为嵌入式系统中的GPIO引脚可以通过改变电平状态来控制外部设备的工作。

在本实验中,通过将GPIO引脚的电平设置为高电平或低电平,可以控制LED灯的亮灭。

嵌入式系统中的GPIO引脚是一种通用输入输出引脚,可以通过编程来控制其电平状态。

在实际应用中,可以将GPIO引脚连接到各种外部设备上,如传感器、电机等,通过改变引脚的电平状态,实现对外部设备的控制。

嵌入式系统的优势之一是其实时性和可靠性。

在本实验中,LED灯的亮灭可以实时响应程序的控制指令,没有明显的延迟。

这使得嵌入式系统在需要对外部设备进行快速响应的应用中具有优势,如工业自动化、智能家居等。

此外,嵌入式系统还具有较小的体积和低功耗的特点。

嵌入式ARM键盘控制LED灯实验报告

嵌入式ARM键盘控制LED灯实验报告

实验六键盘控制LED灯实验1实验目的(1) 通过实验掌握中断式键盘控制与设计方法;(2) 熟练编写S3C2410中断服务程序。

2 实验设备(1) S3C2410嵌入式开发板,JTAG仿真器。

(2) 软件:PC机操作系统Windows XP,ADS1.2集成开发环境,仿真器驱动程序,超级终端通讯程序。

3 实验内容编写中断处理程序,处理一个键盘中断,并在串口打印中断及按键显示信息。

4 实验步骤(1) 参照模板工程,新建一个工程keypad,添加相应的文件,并修改keypad 的工程设置;(2) 创建keypad.c并加入到工程keypad中;(3) 编写键盘中断程序;参考代码如下:①串口初始化程序void uart_init()/* UART串口初始化*/{GPHCON |= 0xa0; //GPH2,GPH3 used as TXD0,RXD0GPHUP = 0x0; //GPH2,GPH3内部上拉ULCON0 = 0x03; //8N1UCON0 = 0x05; //查询方式为轮询或中断;时钟选择为PCLKUFCON0 = 0x00; //不使用FIFOUMCON0 = 0x00; //不使用流控UBRDIV0 = 26; //波特率为57600,PCLK=12Mhz}②发送数据while( ! (UTRSTAT0 & TXD0READY) );UTXH0 = c;③接收数据while( ! (UTRSTAT0 & RXD0READY) );return URXH0;④打印数据int i = 0;while( str[i] ){putc( (unsigned char) str[i++] );}return i;⑤按键初始化int key_init()/* 按键初始化*/{GPFCON = 0x55aa;GPFUP = 0xff;printk("按键初始化OK\r\n");return 0;}⑥中断初始化void irq_init()/* 中断初始化*/{INTMSK &= ~(3<<2);printk("中断初始化OK\r\n");}(5) 编译keypad;(6) 运行超级终端,选择正确的串口号,并将串口设置位:波特率(115200)、奇偶校验(None)、数据位数(8)和停止位数(1),无流控,打开串口;(7) 运行程序,在超级终端中输入的数据将回显到超级终端上,结果如图5.4所示:图6.1 初始化运行结果图6.2 main运行结果5 实验总结通过这次实验我巩固了上次实验的串口的使用方法,串口初始化、发送数据和接收数据,同时也熟悉了中断的处理过程,即保护现场、中断处理、恢复现场并返回。

嵌入式led灯亮灭实验报告

嵌入式led灯亮灭实验报告

嵌入式led灯亮灭实验报告一、实验目的1. 学习嵌入式系统中GPIO的控制方法2. 掌握通过控制GPIO控制LED的亮灭二、实验器材1.STM32L4Discovery开发板2.LED灯3.杜邦线若干三、实验原理STM32L4Discovery开发板上集成了许多IO口,GPIO控制可使这些IO口实现不同的功能,包括输入信号的采集、输出信号的控制等。

本次实验主要通过对STM32L4Discovery开发板中硬件端口的控制,使得LED灯亮灭。

四、实验步骤1. 接线将LED灯的负极连接至GND,正极连接至开发板的一个GPIO口上,本次实验中我们选择PA5口。

2. 创建新工程首先打开STM32CubeIDE,创建新工程,选择自己所需要的板卡型号和工程名字以及存放在电脑上的路径。

完成基本的配置后,点击“Finish”按钮。

在弹出的窗口中选择“SW4STM32”作为开发环境,点击“OK”按钮。

至此,我们已经创建好了新的STM32工程。

3. 配置GPIO口在左侧的“Pinout&Configuration”中,我们可以看到PA5口是已经被配置为GPIO口了。

将其设置为输出GPIO口,在“Mode”下拉菜单中选择“GPIO Output”,“Pull”下拉菜单选择“ No Pull-up, No Pull-down ”,其他参数固定即可。

4. 编写控制程序5. 编译并下载程序点击工具栏上的“Hammer”按钮编译程序,寻找编译错误,并解决它们。

编译成功后,连接STM32L4Discovery开发板和电脑,点击工具栏上的“Play”按钮,下载程序至开发板进行运行。

五、实验结果程序运行成功后,LED灯开始绿色闪烁。

六、实验参考源码以下代码仅供参考,不可直接拷贝使用。

/* Private variables */GPIO_TypeDef* GPIO_PORT[LEDn] = {LED1_GPIO_PORT};const uint16_t GPIO_PIN[LEDn] = {LED1_PIN};const uint32_t GPIO_CLK[LEDn] = {LED1_GPIO_CLK};const uint32_t GPIO_SOURCE[LEDn] = {LED1_GPIO_AF};/* Private function prototypes */void LED_GPIO_Init(Led_TypeDef Led);/*** @brief Initialises the GPIO for the led* @param Led: Specifies the Led to be configured* @retval None*/void LED_GPIO_Init(Led_TypeDef Led){GPIO_InitTypeDef GPIO_InitStructure;/* Enable the GPIO_LED Clock */RCC_AHB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);/* Configure the GPIO_LED pin */GPIO_InitStructure.GPIO_Pin = GPIO_PIN[Led];GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure);while (1){GPIO_SetBits(GPIOA, GPIO_Pin_5);Delay(1000);GPIO_ResetBits(GPIOA, GPIO_Pin_5);Delay(1000);}}通过以上实验,我们学会了如何通过STM32L4Discovery开发板上的GPIO口来控制LED 灯的亮灭,并最终实现了LED灯的周期性亮灭。

嵌入式led控制实验报告

嵌入式led控制实验报告

嵌入式led控制实验报告嵌入式LED控制实验报告摘要:本实验旨在通过嵌入式系统控制LED灯的亮度和闪烁频率,以及实现LED的颜色变换。

通过实验,我们成功地使用嵌入式系统对LED进行了精确的控制,实现了灯光效果的多样化。

1. 实验目的本实验的主要目的是掌握嵌入式系统对LED灯的控制方法,包括亮度控制、闪烁频率控制和颜色变换。

通过实验,我们希望能够深入理解嵌入式系统的工作原理,并掌握在嵌入式系统中对外部设备进行精确控制的方法。

2. 实验原理在本实验中,我们使用了一款嵌入式系统开发板,通过该开发板的GPIO接口控制LED的亮度、闪烁频率和颜色。

具体原理是通过控制GPIO口的输出电平和频率,来控制LED的亮度和闪烁频率,同时通过PWM信号来控制LED的颜色变换。

3. 实验步骤(1)搭建实验平台:将LED连接到开发板的GPIO口,并连接电源。

(2)编写控制程序:使用嵌入式系统的开发工具编写控制LED的程序,包括控制LED亮度、闪烁频率和颜色变换的代码。

(3)下载程序:将编写好的程序下载到嵌入式系统中。

(4)运行实验:通过控制程序,实现LED的亮度、闪烁频率和颜色的变换。

4. 实验结果通过实验,我们成功地实现了对LED的亮度、闪烁频率和颜色的精确控制。

我们通过改变程序中的参数,可以实现LED灯的不同亮度、不同闪烁频率和不同颜色的变换。

实验结果表明,嵌入式系统对外部设备的控制能力非常强大,可以实现多样化的灯光效果。

5. 实验总结本实验通过对嵌入式系统控制LED的实验,深入理解了嵌入式系统的工作原理,掌握了对外部设备进行精确控制的方法。

通过实验,我们对嵌入式系统的应用有了更深入的了解,为今后的嵌入式系统开发工作奠定了基础。

结语通过本次实验,我们不仅学会了如何使用嵌入式系统控制LED灯的亮度、闪烁频率和颜色,还深入了解了嵌入式系统的工作原理和应用。

这将为我们今后的嵌入式系统开发工作提供重要的参考和指导。

希望通过不断的实践和学习,我们能够更加熟练地掌握嵌入式系统的应用,为科技创新做出更大的贡献。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【设计题目】矩阵LED字符显示控制系统设计【设计目的】1.掌握无操作系统下的硬件软件设计原理和方法;2.进一步熟悉ARM 处理器的基本结构、指令集、存储系统以及基本接口编程;3.熟悉嵌入式系统各部件的硬件初始化过程以及基本IO控制方法。

4.掌握矩阵LED 的应用原理【设计内容】1.利用sys_init初始化程序,利用串口实现PC和开发板的数据通信;2.编写S3C2410X 处理器的点阵屏驱动程序;3.编写S3C2410X 处理器的点阵屏应用程序。

4. 当程序运行等待要求从串口输入学生姓名的字符串在矩阵LED上显示出来。

【实验环境】硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机;软件:μVision IDE for ARM 集成开发环境,Windows XP。

【相关知识综述】背景知识、原理算法等一、硬件部分1.点阵屏的结构电路图1点阵屏的结构电路图上QL1-QL16为行驱动信号,每个信号控制一行, LR1~LR16 是点阵屏的列驱动信号,每一个信号控制一列。

当行信号为高电平而列信号为低电平,对应的LED 就会亮。

2,S3C2410与点阵屏的连接LL1 LL8LL7LL9图2 S3C2410ARM处理器与两片CD4094连接得到16位行选信号图以上电路可以通过S3C2410GPIO口把CPU的并行数据(16位两个字节的数据)打入到两个CD4094芯片中并锁存起来变成LL1-LL16的行选信号。

各信号的作用如下表1;3.点阵屏的保护电路图3 点阵屏的保护电路图为了保护LED 屏加了对应的电阻实现行限流作用,即LL1-LL16变为RQ1-RQ164.LED 的驱动加入行驱动电路的目的是实现LED 灯的驱动。

这样由RQ1-RQ16变为行驱动信号QL1-QL16。

Q11-QL16为图1中的行驱动信号。

图4 行驱动电路【设计思路】采用的数据结构、主要的函数说明、程序流程设计图等主要的函数说明:led_init(); :LED显示矩阵初始化static void refresh_l_display_array(u8 bits, u8 *str) :显示字符void led_logo_disp(void) :显示logostruct fonts_struct {unsigned char ascii_width;unsigned char ascii_height;unsigned char * ascii_code;unsigned char ascii_beg;unsigned char ascii_end;};【源程序清单】/******************************************************************************************** ** File:main.c* Author: embest* Desc:c main entry* History:*********************************************************************************************//*------------------------------------------------------------------------------------------*/ /* include files*//*------------------------------------------------------------------------------------------*/ #include "2410lib.h"#include "sys_init.h"#include "fonts.h"#include "led16x16.h"/******************************************************************************************** ** name: main* func: c code entry* para: none* ret: none* modify:* comment:********************************************************************************************* /int main(void){char c;sys_init(); // Initial systemwhile(1){uart_printf("\n Please Look At The 16X16 LEDS And Choose Key\n"); uart_printf("1、向左移动\n");uart_printf("2、向左闪烁移动\n");uart_printf("3、向右移动\n");uart_printf("4、向右闪烁移动\n");c=uart_getch();uart_printf("%c",c);led_init(); // Initial led diplayif(c=='1'){l_char_out(0,"^_^学号");left_out(0,"abcdef");}else if(c=='2'){l_flash_char_out(0,"^_^学号");left_out_flash(0,"abcdef");}else if(c=='3'){r_char_out(0,"^_^学号");right_out(0,"abcdef");}else if(c=='4'){r_flash_char_out(0,"^_^学号");right_out_flash(0,"abcdef");}}}/******************************************************************************************** ** File: Dotled.c* Author: embest* Desc: DotLed_Test* History:********************************************************************************************* //*------------------------------------------------------------------------------------------*/ /* include files*//*------------------------------------------------------------------------------------------*/ #include <stdio.h>#include "2410lib.h"#include "fonts.h"#include "led16x16.h"/*------------------------------------------------------------------------------------------*/ /* function declare*//*------------------------------------------------------------------------------------------*/ extern void led_char_disp(void);/*------------------------------------------------------------------------------------------*/ /* global variables*//*------------------------------------------------------------------------------------------*/ u8 l_display_array[2*16];u8 assic_buffer[3*16];/*======================================================= =====================================l_display_array:+-----+-----+| | || D | E || | |+-----+-----+A buffer data andB buffer data -->D buffer dataB buffer data andC buffer data -->E buffer dataassic_buffer:+-----+-----+-----+| | | || A | B | C |<---- update the C buffer and move the B buffer data to the A buffer | | | | and move the C buffer data to the B buffer data+-----+-----+-----+======================================================== ====================================*//******************************************************************************************** ** name: led_update* func: refresh the led display* para: none* ret: none* modify:* comment:********************************************************************************************* /static void led_update(void){int j = 20;while(j--){led_char_disp();}}/******************************************************************************************** ** name: l_display_scroll* func: shift the display* para: bits:the position str:point the buffer* ret: none* modify:* comment:********************************************************************************************* /static void refresh_l_display_array(u8 bits, u8 *str){u32 i;u32 remaining_bits = 8-bits;for(i=0;i<16;i++){l_display_array[2*i] = (*str<<bits) |(*(str+16)>>remaining_bits);l_display_array[2*(i+1)-1] = (*(str+16)<<bits) |(*(str+32)>>remaining_bits);str++;}}static void refresh_flash_display_array(u8 bits, u8 *str){u32 i;for(i=0;i<16;i++){l_display_array[2*i] = 0;l_display_array[2*(i+1)-1] =0;str++;}}/******************************************************************************************** ** name: l_display_scroll* func: scroll the display* para: str:point the buffer* ret: none* modify:* comment:********************************************************************************************* /static void l_display_scroll ( u8 *str ){int i;for(i=0;i<8;i++){refresh_l_display_array(i, str);led_update();}}static void l_flash_display_scroll ( u8 *str ){int i;for(i=0;i<8;i++){refresh_l_display_array(i, str);led_update();refresh_flash_display_array(i, str);led_update();}}static void r_display_scroll ( u8 *str ){int i;for(i=8;i>0;i--){refresh_l_display_array(i, str);led_update();}}static void r_flash_display_scroll ( u8 *str ) {int i;for(i=8;i>0;i--){refresh_l_display_array(i, str);led_update();refresh_flash_display_array(i, str);led_update();}}/******************************************************************************************** ** name: copy_data* func: copy data* para: dst:point the dest data src:points the source data* ret: none* modify:* comment:********************************************************************************************* /static void copy_data(u8 *dst, u8 *src, u32 size){while(size--)*(dst++) = *(src++);}/******************************************************************************************** ** name: refresh_assic_buffer* func: refresh buffer* para: str:points the new char* ret: none* modify:* comment:********************************************************************************************* /static void l_refresh_assic_buffer(u8 *str){copy_data(&assic_buffer[0], &assic_buffer[16],16);copy_data(&assic_buffer[16], &assic_buffer[32],16);copy_data(&assic_buffer[32], str,16);l_display_scroll(assic_buffer);}static void l_flash_refresh_assic_buffer(u8 *str){copy_data(&assic_buffer[0], &assic_buffer[16],16);copy_data(&assic_buffer[16], &assic_buffer[32],16);copy_data(&assic_buffer[32], str,16);l_flash_display_scroll(assic_buffer);}static void r_refresh_assic_buffer(u8 *str){copy_data(&assic_buffer[32], &assic_buffer[16],16);copy_data(&assic_buffer[16], &assic_buffer[0],16);copy_data(&assic_buffer[0], str,16);r_display_scroll(assic_buffer);}static void r_flash_refresh_assic_buffer(u8 *str){copy_data(&assic_buffer[32], &assic_buffer[16],16);copy_data(&assic_buffer[16], &assic_buffer[0],16);copy_data(&assic_buffer[0], str,16);r_flash_display_scroll(assic_buffer);}/******************************************************************************************** ** name: char_out* func: display the chars* para: font:0 str:points of the chars* ret: none* modify:* comment:********************************************************************************************* /void l_char_out(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) *fonts[font].ascii_height;l_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}void l_flash_char_out(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) * fonts[font].ascii_height;l_flash_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}void r_char_out(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) * fonts[font].ascii_height;r_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}void r_flash_char_out(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) * fonts[font].ascii_height;r_flash_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}void left_out(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = leftcode[font].ascii_code + ( glyph - leftcode[font].ascii_beg) * leftcode[font].ascii_height;l_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}void left_out_flash(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = leftcode[font].ascii_code + ( glyph - leftcode[font].ascii_beg) * leftcode[font].ascii_height;l_flash_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}void right_out(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = rightcode[font].ascii_code + ( glyph - rightcode[font].ascii_beg) * rightcode[font].ascii_height;r_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}void right_out_flash(u8 font, u8 *str){u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != '\0' ){str_ptr = rightcode[font].ascii_code + ( glyph - rightcode[font].ascii_beg) * rightcode[font].ascii_height;r_flash_refresh_assic_buffer(str_ptr);str++;glyph = ( u8 )*str;}}/******************************************************************************************** ** name: led_init* func: initial the led display* para: none* ret: none* modify:* comment:********************************************************************************************* /void led_init(void){rGPBCON = rGPBCON & 0xfff0ff | 0x500; // GPB4,GPB5=01:Output rGPCCON = rGPCCON & 0xffff3ffc | 0x4001; // GPC0,GPC7=01:Output rGPDCON = rGPDCON & 0xffcfffff | 0x100000; // GPD10=01:OutputrGPGCON = rGPGCON & 0xfffcffff | 0x10000; // GPG8=01:Output}/******************************************************************************************** ** File: fonts.c* Author: embest* Desc: DotLed_Test* History:********************************************************************************************* //*------------------------------------------------------------------------------------------*/ /* include files*//*------------------------------------------------------------------------------------------*/ #include "fonts.h"// ------------------ ASCII字模的数据表------------------------ //unsigned char nAsciiDot[] = // ASCII{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18, // -!-0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x24,0x00,0x00,0x00, // -"-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0x6C, // -#-0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00,0x18,0x18,0x7C,0xC6,0xC2,0xC0,0x7C,0x06, // -$-0x86,0xC6,0x7C,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC2,0xC6,0x0C,0x18, // -%- 0x30,0x60,0xC6,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x76,0xDC, // -&- 0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00, // -'- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x30,0x30,0x30,0x30, // -(- 0x30,0x30,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x0C,0x0C,0x0C,0x0C, // -)- 0x0C,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x3C,0xFF, // -*- 0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E, // -+- 0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -,- 0x00,0x18,0x18,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE, // --- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -.- 0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x0C,0x18, // -/- 0x30,0x60,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xCE,0xD6,0xD6, // -0- 0xE6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18, // -1- 0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0x06,0x0C,0x18,0x30, // -2- 0x60,0xC0,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0x06,0x06,0x3C,0x06, // -3- 0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1C,0x3C,0x6C,0xCC,0xFE, // -4- 0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xC0,0xC0,0xC0,0xFC,0x0E, // -5- 0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x60,0xC0,0xC0,0xFC,0xC6, // -6- 0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xC6,0x06,0x06,0x0C,0x18, // -7- 0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x7C,0xC6, // -8- 0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x7E,0x06, // -9- 0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00, // -:-0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00, // -;- 0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60, // -<- 0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00, // -=- 0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06, // ->- 0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0x0C,0x18,0x18, // -?- 0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xDE,0xDE, // -@- 0xDE,0xDC,0xC0,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE, // -A- 0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x66, // -B- 0x66,0x66,0x66,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0, // -C- 0xC0,0xC2,0x66,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x6C,0x66,0x66,0x66,0x66, // -D- 0x66,0x66,0x6C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x66,0x62,0x68,0x78,0x68, // -E- 0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x66,0x62,0x68,0x78,0x68, // -F- 0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xDE, // -G- 0xC6,0xC6,0x66,0x3A,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xFE,0xC6, // -H- 0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18, // -I- 0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x0C,0x0C,0x0C,0x0C,0x0C, // -J- 0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0xE6,0x66,0x6C,0x6C,0x78,0x78, // -K- 0x6C,0x66,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x60,0x60,0x60,0x60,0x60, // -L- 0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xEE,0xFE,0xFE,0xD6,0xC6, // -M- 0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xE6,0xF6,0xFE,0xDE,0xCE, // -N- 0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xC6, // -O- 0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x60, // -P-0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6, // -Q- 0xC6,0xD6,0xDE,0x7C,0x0C,0x0E,0x00,0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x6C, // -R- 0x66,0x66,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0x60,0x38,0x0C, // -S- 0x06,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7E,0x5A,0x18,0x18,0x18, // -T- 0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6, // -U- 0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6, // -V- 0xC6,0x6C,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6, // -W- 0xD6,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0x6C,0x6C,0x38,0x38, // -X- 0x6C,0x6C,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3C,0x18, // -Y- 0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xC6,0x86,0x0C,0x18,0x30, // -Z- 0x60,0xC2,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30, // -[- 0x30,0x30,0x30,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x38, // -\- 0x1C,0x0E,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C, // -]- 0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00, // -^- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -_- 0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00, // -`- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x7C, // -a- 0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x60,0x60,0x78,0x6C,0x66, // -b- 0x66,0x66,0x66,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0, // -c- 0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x0C,0x0C,0x3C,0x6C,0xCC, // -d- 0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xFE, // -e- 0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6C,0x64,0x60,0xF0,0x60, // -f-0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC, // -g- 0xCC,0xCC,0xCC,0x7C,0x0C,0xCC,0x78,0x00,0x00,0x00,0xE0,0x60,0x60,0x6C,0x76,0x66, // -h- 0x66,0x66,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18, // -i- 0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x0E,0x06,0x06, // -j- 0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0xE0,0x60,0x60,0x66,0x6C,0x78, // -k- 0x78,0x6C,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18, // -l- 0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0xFE,0xD6, // -m- 0xD6,0xD6,0xD6,0xD6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66, // -n- 0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6, // -o- 0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66, // -p- 0x66,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC, // -q- 0xCC,0xCC,0xCC,0x7C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x76,0x62, // -r- 0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0x60, // -s- 0x38,0x0C,0xC6,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x30,0xFC,0x30,0x30, // -t- 0x30,0x30,0x36,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC, // -u- 0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66, // -v- 0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6, // -w- 0xD6,0xD6,0xFE,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38, // -x- 0x38,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6, // -y- 0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xCC,0x18, // -z- 0x30,0x60,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x18,0x18,0x18,0x70,0x18, // -{- 0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18, // -|-0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x18,0x18,0x18,0x0E,0x18, // -}-0x18,0x18,0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0x00,0x00,0x00, // -~- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};unsigned char left[] = // ASCII,左移{字模软件提取即可};unsigned char right[] ={字模软件提取即可};struct fonts_struct fonts[FONT_COUNT] = {{8,16,nAsciiDot,' ','~'},};struct fonts_struct leftcode[FONT_COUNT] = {{8,16,left,'a','~'},};struct fonts_struct rightcode[FONT_COUNT] = {{8,16,right,'a','~'},};/******************************************************************************************** ** File: Dotled.c* Author: embest* Desc: DotLed_Test* History:********************************************************************************************* //*------------------------------------------------------------------------------------------*/ /* include files*//*------------------------------------------------------------------------------------------*/ #include "2410lib.h"#include "ziku.h"#include "fonts.h"#include "led16x16.h"/*------------------------------------------------------------------------------------------*/ /* constant define*//*------------------------------------------------------------------------------------------*/ #define En_Dataout rGPBDAT |= 0x20#define DisEn_Dataout rGPBDAT &= 0xFFDF#define CLK_H rGPDDAT |= 0x400#define CLK_L rGPDDAT &= 0xFBFF#define Rdata_H rGPCDAT |= 0x1#define Rdata_L rGPCDAT &= 0xFFFE#define Ldata_H rGPCDAT |= 0x1#define Ldata_L rGPCDAT &= 0xFFFE#define Lstr_H rGPBDAT |= 0x10#define Lstr_L rGPBDAT &= 0xFFEF#define Rstr_H rGPGDAT |= 0x100#define Rstr_L rGPGDAT &= 0xFEFF/*------------------------------------------------------------------------------------------*/ /* global variables*//*------------------------------------------------------------------------------------------*/ INT8T cT emp;INT8T cEnChange0,cEnChange1;UINT8T dispram[32];/******************************************************************************************** ** name: write_L4094* func: write list data* para: none* ret: none* modify:* comment:********************************************************************************************* /void write_L4094(UINT16T data){UINT8T i;Lstr_H;for(i=0;i<16;i++){CLK_L;if(data & 0x01==1)Ldata_H;elseLdata_L;data = data >> 1;CLK_H;}Lstr_L;}/******************************************************************************************** ** name: write_R4094* func: write row data* para: none* ret: none* modify:* comment:********************************************************************************************* /void write_R4094(UINT8T data){UINT8T i;Rstr_H;for(i = 0; i < 8; i++){CLK_L;if(data & 0x01==1)Rdata_H;elseRdata_L;data = data >> 1;CLK_H;}Rstr_L;}/******************************************************************************************** ** name: led_char_disp* func: led char display* para: none* ret: none* modify:* comment:********************************************************************************************* /void led_char_disp(void){UINT8T i=0;UINT8T j=2,k=0;UINT16T x;for(i = 0; i < 32; i++)dispram[i] = ~l_display_array[i];i=0;while(i < 16){Rstr_L; // Enable RSTRLstr_L; // Enable LSTRDisEn_Dataout; // lock the datado { // Write the row data j--;write_R4094(dispram[i * 2 + j]);}while(j);x=~(0x8000 >> i); // Write one list datawrite_L4094(x);En_Dataout; // Output the datafor(k = 0;k < 250; k++);i++;j = 2;}}【设计总结】通过这次嵌入式课程设计,我对嵌入式有了更深一层的理解。

相关文档
最新文档