您的位置 首页 系统

怎么运用SAM4E单片机点亮LCD并显示出文字

如何使用SAM4E单片机点亮LCD并显示出文字-在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架)。通过它提供的库,可以很快速地完成新的项目。

这次的最终目标使用ASF在LCD上显示出文字“Hello World!”,现阶段目标是点亮LCD的背光,学习目标是了解怎么样使用ASF提供的模块。

Atmel Studio 6中,集成了Atmel Software Framework(ASF结构)。经过它供给的库,能够很快速地完结新的项目。

这次的最终方针运用ASF在LCD上显示出文字“Hello World!”,现阶段方针是点亮LCD的背光,学习方针是了解怎样样运用ASF供给的模块。

一、 ASF Wizard

新建一个项目,依据所运用的开发板挑选模板。

然后能够经过ASF Wizard进行所需模块的装备。

默许情况下,现已挑选了两个模块。在之前咱们曾经运用过了其间Generic board support模块供给的头文件sam4e_ek.h了。

怎样运用SAM4E单片机点亮LCD并显示出文字

为了解模块增加的办法,先把这两个模块移除。

二、 经过ASF设置时钟

增加模块

在可用模块里找到“System Clock Control”模块,打开它。

怎样运用SAM4E单片机点亮LCD并显示出文字

能够看到它依靠的模块,以及相应的API文档等内容。

增加该模块后,它会主动地把依靠的模块增加进去。增加完结后点击Apply按钮,使改动收效。

现在在asf.h文件中,就现已导入了一系列的模块相关的头文件。如刚刚运用的体系时钟操控模块的:

12// From module: System Clock Control – SAM4E implementaTIon#include

一起,在文件夹config下,多了一个文件conf_clock.h。

怎样运用SAM4E单片机点亮LCD并显示出文字

装备

conf_clock.h里保存的便是时钟相关的装备了。这儿面的注释很清楚,装备办法也很简单。并且在该文件的结尾也阐明晰默许情况下,装备的成果:

1234567// ===== Target frequency (System clock)// – XTAL frequency: 12MHz// – System clock source: PLLA// – System clock prescaler: 2 (divided by 2)// – PLLA source: XTAL// – PLLA output: XTAL * 16 / 1// – System clock: 12 * 16 / 1 / 2 = 96MHz

为了使这个时钟的装备收效,调用sysclk_init()即可:

123456#include intmain (void){sysclk_init();while(1);}

编译

可是在编译时,发现短少头文件board.h。这阐明ASF Wizard在处理依靠时也有那么一点Bug。测验再手动增加一个模块Generic board support,再编译,发现又短少头文件ioport.h,持续增加模块IOPORT,编译经过。IOPORT模块依靠了System Clock Control模块,能够将手动增加的这个模块删去,至此,又回到了新建项目时的模块设置了。

增加不必要的模块会增加编译的时刻,也或许会增加生成的方针文件的巨细。假设了解相关头文件的效果,也能够修正asf.h中包括的头文件。

其他,也能够经过了解ASF中函数的完结,来学习相关的装备进程。

怎样运用SAM4E单片机点亮LCD并显示出文字

检查MCK的频率

如sysclk_init()相同,ASF中完结了许多常用的功用。如咱们需求检查MCK的频率的话,也很简单:

1234567891011volaTIleuint32_t freq;freq = SystemCoreClock; /* 4 000 000 *//* 这个函数是依据conf_clock.h中宏的界说来核算的。便是调用sysclk_init()后MCK的值 */freq = sysclk_get_cpu_hz(); /* 96 000 000 */sysclk_init();/* 调用sysclk_init()后会主动修正这个变量 */freq = SystemCoreClock; /* 96 000 000 */

三、 LCD背光操控器

怎样运用SAM4E单片机点亮LCD并显示出文字

开发板运用的LCD背光操控器是AAT31系列的。一起PC13衔接的是它的使能、操控引脚。

其他,假定咱们不知道这个背光操控器的亮度操控办法是向EN/SET引脚发送N个脉冲波,那该怎样运用这个操控器呢?RTFM?找它的芯片手册当然是一个能够深化了解它的办法,但假设咱们的方针仅仅是能用就好,又或是运用起来过分费事呢?

嗯,咱们这次学的便是ASF。

增加模块

在ASF Wizard中增加Display – AAT31XX Backlight Controller模块。增加后项目里多了个头文件conf_at31xx.h,这个头文件首要的效果便是在未界说EN/SET引脚的接线时,对其进行界说(在sam4e_ek.h这个文件中现已做好相关的界说了)。一起asf.h中也包括了相关的头文件了。

ASF中对组件进行初始化

运用背光操控器之前,需求进行相关装备。这个作业能够手动完结,也能够运用ASF完结。

在conf_board.h文件里,能够指定好一系列需求装备的组件。然后在履行board_init()函数时,就能够依据这些宏的界说履行相应的初始化作业。这个头文件里现现已过注释阐明晰装备USART等引脚时,宏是怎样界说的,可是却不知道怎样背光组件相关的界说。

检查board_init()的完结,能够发现以下几句:

1234#ifdef CONF_BOARD_AAT3155/* Configure Backlight control pin */ioport_set_pin_dir(BOARD_AAT31XX_SET_GPIO, IOPORT_DIR_OUTPUT);#endif

经过这儿就能够得到需求的宏的姓名,以及ASF初始化时详细的作业了。现在就在conf_board.h中,加上相应的界说就好了:

12/* Configure Backlight control pin */#define CONF_BOARD_AAT3155

其他,aat31xx.h头文件也需求这个宏的声明以判别详细的操控器的类型。

最终不要忘掉调用board_init( )函数。

API的运用

能够检查相应的API的文档,以了解ASF供给的API。

怎样运用SAM4E单片机点亮LCD并显示出文字

更直接的办法是阅览相应的头文件(aat31xx.h),这儿面或许会有一些文档中未说到的部分。如以下几个宏就未在API文档中阐明:

123#define AAT31XX_MIN_BACKLIGHT_LEVEL 1#define AAT31XX_AVG_BACKLIGHT_LEVEL 8#define AAT31XX_MAX_BACKLIGHT_LEVEL 16

现在,就能够很方便地运用背光操控器了。如以下代码将装备背光为最大亮度:

1aat31xx_set_backlight(AAT31XX_MAX_BACKLIGHT_LEVEL);

四、 LCD操控器

开发板运用的LCD操控器是ILI93xx系列的。ASF供给的模块为Display – ILI93xx LCD Controller。conf_board.h中,相应的宏声明为CONF_BOARD_ILI93XX。

board_init( )中初始化的作业仅有装备GPIO引脚的复用,可是还有其他作业需求完结。所以LCD暂时还不能用。剩余的部分鄙人一次阐明。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/346786.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部