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

目录前言------------------------------------------------------------------------------------------------------------------ - 1 -1.1嵌入式系统简介.............................................................................................................- 2 -1.2认识博创经典实验箱.....................................................................................................- 2 -1.3建立开发环境.................................................................................................................- 3 -1.4给下位机烧写软件系统.................................................................................................- 3 -二.基本原理--------------------------------------------------------------------------------------------------------- - 4 -2.1LED显示控制原理 .........................................................................................................- 4 -2.1.17段(或8段)LED ............................................................................................- 5 -2.1.2点阵式LED ..........................................................................................................- 6 -2.274HC273在开发板上的连接.........................................................................................- 6 -2.2.17段(或8段)LED的连接 ...............................................................................- 6 -2.2.2点阵式LED的连接..............................................................................................- 7 -2.3LED编程 .........................................................................................................................- 8 -2.3.17段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灯驱动程序主要是为了完成在Linux下设计LED灯驱动程序并成功驱动LED显示相应的图案。

关键词:嵌入式makefile 点阵LED前言嵌入式系统一般由嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序4个部分组成。

用于实现对其他设备的控制,监视或管理等功能。

嵌入式系统已经广泛应用于科学研究,工业控制,军事技术,交通通信,医疗卫生,消费娱乐等领域,人们常用的手机,PDA,汽车,智能家电,GPS等均是嵌入式系统的典型代表。

本课程设计要求利用实验室提供的ARM2410实验箱进行相应的设计,主要包括理解LED原理,掌握在LINUX下常用编辑器的使用,掌握MAKEFILE的编写和使用,掌握LINUX下的程序编译与交叉编译过程,有一定的数字电路的知识,能够设计出新颖的显示图样,最后通过上下位机实现结果的显示一.实验平台1.1嵌入式系统简介嵌入式系统是基于单片机的一种升级版,它是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

我们可从几方面来理解嵌入式系统:1、嵌入式系统是面向用户、面向产品、面向应用的,嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。

嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。

2、嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物。

这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

3、嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。

为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。

4、嵌入式系统本身不具备自主开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。

实际上,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统。

现在人们讲嵌入式系统时,某种程度上指近些年比较热的具有操作系统的嵌入式系统。

1.2认识博创经典实验箱博创经典UP-TECH-S2410/P270-DVP实验箱是由北京博创兴业科技有限公司推出的一款嵌入式实验箱。

它的核心模块为S2410或P270,当它安装S2410核心模块时为S2410实验箱,安装P270核心模块时为P270实验箱。

1.3建立开发环境1.在下位机断电的情况下,利用实验箱中自带的串口线将上位机的com1口与下位机的RS232-0口进行连接。

2.利用实验箱中自带的直连网线将上位机与下位机进行连接。

3.根据下位机中安装的核心模块,选择相应的嵌入式系统开发软件光盘。

4.将选择好的嵌入式系统开发软件光盘放入上位机的光驱中,在终端命令窗口中挂载该光盘。

mount –o iocharset=gb2312 /dev/cdrom /mnt5.进入光盘的Linux工具软件目录。

执行该目录下的shell文件“install.sh”,Linux工具软件会自动安装完成。

对于S2410,会将程序安装在目录“arm2410cl”下,交叉编译器安装在目录“/opt/host”下。

用户可以通过使用命令“armv41-unknown-linux-gcc”运行交叉编译器。

合集下载

led显示的课程设计

led显示的课程设计

led显示的课程设计一、课程目标知识目标:1. 学生能够理解LED的基本概念、工作原理及应用领域。

2. 学生掌握LED显示系统的组成、功能及工作流程。

3. 学生了解我国LED产业发展现状及趋势。

技能目标:1. 学生能够运用所学知识,设计简单的LED显示电路。

2. 学生掌握LED显示编程的基本方法,能够实现简单图形和文字的显示。

3. 学生具备分析LED显示故障的能力,并能提出合理的解决方案。

情感态度价值观目标:1. 学生培养对LED技术及应用的兴趣,激发创新精神。

2. 学生树立节能减排、绿色环保意识,认识到LED技术在节能降耗方面的重要作用。

3. 学生通过团队协作,培养沟通、合作能力,增强集体荣誉感。

本课程针对初中年级学生,结合电子技术、计算机编程等学科知识,以实用性为导向,旨在让学生在掌握LED显示技术的基础上,提高实践操作能力和创新能力。

课程目标具体、可衡量,以便教师和学生能够清晰地了解课程预期成果,为后续的教学设计和评估奠定基础。

二、教学内容1. LED基本概念:介绍LED的起源、发展历程、种类及特点。

- 教材章节:第一章第一节2. LED工作原理:讲解LED的发光原理、电路组成及关键参数。

- 教材章节:第一章第二节3. LED显示系统:分析LED显示系统的结构、功能、分类及性能指标。

- 教材章节:第二章4. LED显示编程:学习LED显示编程的基本方法,包括硬件编程和软件编程。

- 教材章节:第三章5. LED显示应用案例:分析典型LED显示应用案例,如户外广告、舞台背景、交通指示牌等。

- 教材章节:第四章6. LED产业发展现状及趋势:介绍我国LED产业发展现状、政策支持及未来发展趋势。

- 教材章节:第五章7. 实践操作:设计并完成LED显示电路搭建、编程及调试。

- 教材章节:第六章教学内容按照课程目标进行选择和组织,确保科学性和系统性。

教学大纲明确教学内容安排和进度,与教材章节相对应,便于教师教学和学生自主学习。

《嵌入式技术应用开发项目教程》项目10 16x16的LED点阵显示设计

《嵌入式技术应用开发项目教程》项目10 16x16的LED点阵显示设计
8×8 LED点阵汉字显示采用 8×8点阵、宋体、纵向取模、字节倒 序、十六进制数等方式,使用字模提 取V2.1 CopyLeft By Horse2000软 件来获取数字“0”的字模
任务25 8×8的LED点阵显示设计
3.8×8的LED点阵显示设计与实现
3) 移植任务9工程
移植工程模板
(1)复制“任务9 OLED显示设计”文件夹。 (2)修改文件夹名为“任务25 8×8的LED点阵显示设计。 (3)USER文件夹下的“M0_ OLED.uvprojx”工程名修改为 “8×8LED0.uvprojx。
2.移植任务25工程
(1)复制“任务25 8×8的LED点阵显示设计”文件夹。 (2)修改文件夹名为“【技能训练10-1】8×8LED点阵循环显示0~9”。 (3)USER文件夹下的“8×8LED0.uvprojx”工程名修改为“8×8LED.uvprojx”。
【技能训练10-1】8×8LED点阵循环显示0~9
4) 程序设计
字形库代码
任务26 16×16的LED点阵显示设计
3.16×16的LED点阵显示设计与实现
5) 硬件和软件联调
(1)编写好C语言程序后,我们就可以直接对工程进行编译了,生成相 应的hex文件,即目标代码文件。若编译发生错误,要进行分析检查,直到编 译正确。
1)静态显示方式
同时控制各个LED亮灭的方式称为静态显示方式。8×8LED点阵共有64个LED,这就需要64 个单片机I/O引脚。而实际应用中的显示屏往往要比8×8点阵大得多,如果采用静态显示方式,则 需要更多的单片机I/O引脚,这显然是不现实的,所以在实际中大多采用动态显示方式。
认识LED点阵显示模块
1.LED点阵显示模块结构

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

基于嵌入式LED显示课程设计报告书
口与下位机的RS232-0口进行连接。
2.利用实验箱中自带的直连网线将上位机与下位机进行连接。
3.根据下位机中安装的核心模块,选择相应的嵌入式系统开发软件光盘。
4.将选择好的嵌入式系统开发软件光盘放入上位机的光驱中,在终端命令 窗口中挂载该光盘。
mount-o iocharset=gb2312 /dev/cdrom /mnt
8.将上位机配置为NFS服务器,设置共享目录为“/arm2410cl”。
9.在上位机中启动NFS服务,下位机使用命令mount挂载上位机的共享目 录。
mount-t nfs 192.168.0.252:arm2410cl /mnt/nfs
1.4
下位机的软件系统由Bootloader、系统核、根文件系统和应用程序四部分
组成
Bootloader相当于PC机上的BIOS,在下位机加电时自动运行,执行硬件初 始化和调用系统核的功能。Bootloader分为U-boot、Vivi、Blob、ARMBoot RedBoot等多种,本实验使用实验箱自带光盘中的vivi。
本课程设计要求利用实验室提供的ARM241C实验箱进行相应的设计,主要包 括理解LED原理,掌握在LINUX下常用编辑器的使用,掌握MAKEFILE勺编写和使 用,掌握LINUX下的程序编译与交叉编译过程,有一定的数字电路的知识,能够设 计出新颖的显示图样,最后通过上下位机实现结果的显示
1.1
嵌入式系统是基于单片机的一种升级版,它是以应用为中心、以计算机技术 为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严 格要求的专用计算机系统。我们可从几方面来理解嵌入式系统:
6.启动minicom超级终端程序,选择“Serial port setup”进入串口配置 界面进行串口配置。然后可以打开下位机的电源,通过mini com对下位机进行操 作。

基于嵌入式的课程设计

基于嵌入式的课程设计

基于嵌入式的课程设计一、课程目标知识目标:1. 学生能理解嵌入式的概念及其在现实生活中的应用。

2. 学生能掌握嵌入式系统的基本组成部分及工作原理。

3. 学生能了解嵌入式编程的基本方法和技巧。

技能目标:1. 学生能运用所学知识,设计简单的嵌入式系统电路。

2. 学生能编写简单的嵌入式程序,实现特定功能。

3. 学生能通过实际操作,培养动手能力和团队协作能力。

情感态度价值观目标:1. 学生对嵌入式技术产生浓厚的兴趣,提高学习的积极性和主动性。

2. 学生在课程学习中,培养良好的学习习惯和探究精神。

3. 学生通过嵌入式课程的学习,认识到科技对社会发展的推动作用,增强社会责任感和创新意识。

课程性质:本课程为实践性较强的学科,旨在让学生在实际操作中掌握嵌入式技术的基本知识和技能。

学生特点:六年级学生具备一定的逻辑思维能力和动手操作能力,对新鲜事物充满好奇心。

教学要求:结合学生特点,采用项目驱动的教学方法,引导学生主动探究,注重培养学生的实践能力和团队协作精神。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的定义、发展历程和应用领域,结合课本第一章内容,让学生对嵌入式系统有一个全面的认识。

2. 嵌入式系统硬件:讲解嵌入式系统的基本硬件组成,如微控制器、传感器、执行器等,结合课本第二章,分析各部分功能及相互关系。

3. 嵌入式系统软件:介绍嵌入式编程的基本知识,如C语言编程、汇编语言编程等,依据课本第三章,让学生掌握嵌入式程序设计的方法。

4. 嵌入式系统设计与实践:结合项目案例,引导学生进行嵌入式系统电路设计、编程和调试,参考课本第四章,培养学生动手能力和实际问题解决能力。

5. 嵌入式系统应用:分析嵌入式系统在实际应用中的案例,如智能家居、物联网等,结合课本第五章,让学生了解嵌入式技术的广泛应用。

教学安排和进度:第一周:嵌入式系统概述第二周:嵌入式系统硬件第三周:嵌入式系统软件第四周:嵌入式系统设计与实践第五周:嵌入式系统应用教学内容与课本紧密关联,确保科学性和系统性。

《嵌入式接口技术》实验报告4-LED点阵显示

《嵌入式接口技术》实验报告4-LED点阵显示
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复习一下实验二就能够做出来。
六、教师评语
签名:
日期:
日期:
成绩
PINSEL0=0x00000000;
IO0DIR=0x3f;
while(1)
{
screen();
}
return 0;
}
效果图:
五、分析与讨论
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复一下实验二就能够做出来。
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复习一下实验二就能够做出来。
Senddata_Row(ROW[j+1]);
Senddata_Line(LINE[j+1]);
Delay(50);
Senddata_Row(0xff);
Senddata_Line(0x00);
j=j+2;
Delay(1000);
}
}
int main (void)
{// add user source code
#define DS2 0x08
#define SH_CP1 0x02
#define ST_CP1 0x04
#define SH_CP2 0x10
#define ST_CP2 0x20
uint32 const ROW[]={0xc3,0xdb,0x87,0xb7,0x0f,0x6f,0x87,0xb7,0xc3,0xdb,0xe1,0xed,0xf0,0xf6,0xe1,0xed};
else
IO0SET=DS1;

基于LINUX系统的嵌入式LED显示的设计

基于LINUX系统的嵌入式LED显示的设计

嵌入式系统是先进的计算机技术、半导体技术、电子技术以及各种具体应用相结合的产物,是技术密集、资金密集、高度分散、不断创新的新型集成知识系统。

本次课程设计的目的是在有C语言基础,掌握在Linux下常用编辑器的使用Makefile 的编写和使用以及Linux下的程序编译与交叉编译过程需要部分数字电路的知识的基础上。

学习LED的相关知识, 掌握74HC273芯片的工作原理以及了解SPI接口的相关知识。

主要内容是学习LED相关知识,了解74HC273芯片对LED点亮的工作机制,熟练阅读74HC273芯片资料,掌握对它的使用。

关键词:嵌入式系统、LED、点阵一、引言 (1)二、嵌入式系统的特点 (2)1、概念 (2)2、8段LED原理 (3)3、点阵式LED原理 (3)4、LED数码管电路图 (4)5、74HC273在开发板上的连接 (5)四、实验部分 (6)1、实验设备及工具 (6)2、实验基础 (6)3、实验环境连接 (7)五、实验步骤 (12)1、阅读理解源码 (12)2、编译应用程序 (12)3、下载调试 (13)六、心得体会 (15)七、参考文献 (16)附录: (17)一、引言目前,嵌入式技术已成为通信和消费类产品的共同发展方向。

嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。

嵌入式系统是先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合的产物,这就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

嵌入式系统一般指非PC系统。

它是以应用为中心、软硬件可裁减的、能适应应用系统对功能、可靠性、成本、体积、功耗等综合性要求的专用计算机系统。

简单地说,嵌入式系统是集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,因此特别适合于要求实时和多任务的系统。

嵌入式特定功能的led呼吸灯课程设计motor模块al298

嵌入式特定功能的LED呼吸灯课程设计一、引言1.1 课程设计的目的本课程设计旨在通过使用嵌入式设备和AL298电机模块,设计一个特定功能的LED 呼吸灯。

通过学习此课程设计,学生可以理解嵌入式系统的基本原理和操作方法,掌握使用AL298电机模块控制LED呼吸灯的技术。

1.2 课程设计的背景随着嵌入式技术的发展,越来越多的电子设备开始引入嵌入式系统。

LED呼吸灯作为一种常见的特效灯光,被广泛应用于各种场合中,如节日装饰、舞台演出等。

本课程设计结合了LED呼吸灯和AL298电机模块,旨在培养学生的嵌入式系统设计能力。

二、课程设计的理论基础2.1 嵌入式系统的概念嵌入式系统是一种专门用于特定应用的计算机系统,通常嵌入在其他设备中,具有特定的功能和性能要求。

嵌入式系统通常包括硬件和软件两个部分,其硬件部分主要由处理器、存储器、输入输出设备等组成,而软件部分则包括操作系统、应用程序、驱动程序等。

2.2 AL298电机模块的介绍AL298电机模块是一种常用的直流电机驱动模块,可以通过控制信号控制电机的转向和转速。

该模块具有高性能、高稳定性和低功耗的特点,被广泛应用于各种嵌入式系统中。

三、课程设计的实施步骤3.1 硬件准备首先,我们需要准备以下硬件设备: - 嵌入式开发板(例如Arduino Uno) - LED模块 - AL298电机模块 - 连接线等3.2 硬件连接根据AL298电机模块的引脚定义,将AL298电机模块连接至嵌入式开发板。

使用连接线将AL298电机模块的输入引脚连接至嵌入式开发板的数字输出引脚和电源引脚,将LED模块连接至AL298电机模块的输出引脚。

3.3 软件编程使用Arduino开发环境进行软件编程,将嵌入式开发板与AL298电机模块进行通信。

通过编写相应的程序代码,控制AL298电机模块的输出信号,以实现LED呼吸灯的特效。

1.导入相应的库#include <AFMotor.h>2.定义引脚AF_DCMotor motor(1); // AL298电机模块连接到1号电机接口int ledPin = 13; // LED模块连接到数字引脚133.设置初始化void setup(){pinMode(ledPin, OUTPUT);}4.主函数中的循环控制void loop(){// LED呼吸灯效果for (int brightness = 0; brightness <= 255; brightness += 5){analogWrite(ledPin, brightness);motor.setSpeed(brightness); // 控制AL298电机模块的转速delay(15);}for (int brightness = 255; brightness >= 0; brightness -= 5){analogWrite(ledPin, brightness);motor.setSpeed(brightness); // 控制AL298电机模块的转速delay(15);}}3.4 程序烧录和测试将编写好的程序烧录到嵌入式开发板中,并将硬件连接正确。

基于嵌入式平台的无线LED信息发布系统的设计与实现的开题报告

基于嵌入式平台的无线LED信息发布系统的设计与实现的开题报告一、选题背景和意义随着信息技术的不断发展,LED信息发布系统已经逐渐成为一种常见的信息发布方式。

基于嵌入式平台的无线LED信息发布系统是一种新型的信息发布方式,该系统通过嵌入式平台控制LED显示屏,实现信息内容的无线传输和显示,具有信息发布速度快、可视性强、操作简便等特点,能够满足各类场景的信息发布需求。

本课题旨在设计和实现一套基于嵌入式平台的无线LED信息发布系统,通过对现有系统的研究,进一步提高该系统的性能和稳定性,满足用户多样化的信息发布需求,为现代化城市信息化建设提供支持。

二、研究内容本课题的研究内容主要包括以下几个方面:1.系统架构设计:根据无线LED信息发布系统的需求,设计系统的硬件和软件架构,包括选择合适的嵌入式平台、LED显示屏和无线传输模块等。

2.系统通信协议设计:设计系统的通信协议,实现信息内容的无线传输和显示,包括确定通信协议格式、数据传输速率、信息安全等。

3.系统软件设计:编写控制LED显示屏的应用软件,实现信息发布的各种功能,包括信息编辑、存储和发送等。

4.系统测试和优化:对整个系统进行严格的测试和优化,解决系统中存在的问题,提高系统的性能和稳定性。

三、研究方法本课题采用实验研究的方法进行研究:1.搜集相关文献,了解现有的无线LED信息发布系统的设计和实现方案。

2.根据需求设计系统的硬件和软件架构,并进行实际搭建和测试。

3.通过设计系统的通信协议和应用软件实现信息发布功能。

4.针对系统中出现的问题进行分析和优化处理,确保系统功能的完善和稳定性。

四、预期成果本课题预期实现如下成果:1.设计和实现一套基于嵌入式平台的无线LED信息发布系统,实现信息内容无线传输和显示。

2.提出一种高效的通信协议,解决信息传输和存储的问题。

3.设计一套用户友好的应用软件,实现信息编辑、存储和发送等功能。

4.实现系统的各项功能,测试系统的性能和稳定性,为现代化城市信息化建设提供一种新型的信息发布方式。

嵌入式led设计报告

嵌入式led设计报告1. 引言嵌入式LED(Light Emitting Diode)是一种常用于指示灯、显示屏等场景中的电子元件。

在这个设计报告中,我们将介绍一个由嵌入式技术驱动的LED灯设计方案。

我们将详细讨论此设计的目的、方法、技术参数以及预期结果。

2. 设计目的本设计旨在开发一种高效、低功耗、易于集成和控制的嵌入式LED灯。

该嵌入式LED灯将用于显示不同类型的信息,如文字、图标和动画。

为了实现这个目标,我们将借助嵌入式系统的能力来控制LED的亮灭、颜色和亮度。

3. 设计方法3.1 系统框架该嵌入式LED灯系统由以下主要组件构成:1. LED灯板:包含多个RGB LED灯和相应的控制电路。

2. 控制器芯片:用于控制LED灯板中的LED灯的亮度、颜色和亮灭。

3. 嵌入式系统:负责接收外部指令并将其转换为对控制器芯片的控制信号。

系统的工作流程如下:1. 外部指令通过接口传递给嵌入式系统。

2. 嵌入式系统接收指令并解析。

3. 解析后的指令转换为控制信号发送给控制器芯片。

4. 控制器芯片根据接收到的控制信号调整LED灯板中LED灯的亮度、颜色和亮灭。

3.2 技术参数以下是该嵌入式LED灯的主要技术参数:1. 亮度范围:0-255级(0表示最暗,255表示最亮)。

2. 颜色范围:支持RGB色彩模式。

3. 灯板尺寸:10cm x 10cm。

4. 控制器芯片:采用ARM Cortex-M4架构,主频100MHz。

5. 通信接口:采用UART和SPI接口。

4. 设计实现该嵌入式LED灯的设计实现步骤如下:1. 硬件设计:设计LED灯板,将LED灯和控制电路集成在一起,并确定适当的电源电压和电流。

2. 控制器设计:根据系统需求选择适当的控制器芯片,并设计控制电路以实现对LED灯的亮度、颜色和亮灭的控制。

3. 软件开发:编写嵌入式系统软件,实现外部指令解析和控制信号的生成,以及与控制器芯片的通信。

4. 集成测试:将硬件和软件组件集成在一起,并进行功能测试和性能测试。

嵌入式LED灯显示

【设计题目】矩阵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;}}【设计总结】通过这次嵌入式课程设计,我对嵌入式有了更深一层的理解。

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