当前位置:首页 > 单片机 > 单片机
[导读]在上个例子中,已经在ASF添加了ILI93xx模块,并做好了相关的声明。这次就做好SMC的配置,然后使用ASF提供的API在屏幕上打印出”Hello World!”字样。一、 电路图开发板的LCD连接器的接线如图所示。这些连线均按照SMC

在上个例子中,已经在ASF添加了ILI93xx模块,并做好了相关的声明。这次就做好SMC的配置,然后使用ASF提供的API在屏幕上打印出”Hello World!”字样。

一、 电路图

开发板的LCD连接器的接线如图所示。这些连线均按照SMC相应引脚的功能进行了连接,这样的意图很明显就是要让SMC来和LCD进行交互。

有两个引脚需要注意:

PD18引脚的外设A是NCS1,即让LCD连接至SMC的片选设备1中。

RS线表示“寄存器选择”,根据该引脚的不同电平,会选择访问不同的寄存器。而PC19引脚的外设A是地址线A1,这样连接的影响在后面会说明。

二、 SMC与LCD控制器的交互

在与一些存储设备进行交互时,会有一个比较复杂的时序。比如写入该LCD控制器的寄存器时:

而且,引脚间电平改变的时间差也是有一定的规定的。

若使用SMC的话,做好相应的配置后,就会自动地完成这些时序的控制。并且,芯片会对一段地址进行映射,当访问相应区间的地址时,就会交由SMC来完成实际的访问工作:

而LCD控制器为SMC的片选设备1,所以在访问地址在区间[0x6100 0000, 0x61FF FFFF]时,会实际访问到LCD控制器。而RS接的是数据线A1,所以根据访问地址的第1位(从0数起)的不同,会影响RS引脚电平的高低。如在访问地址0x6100 0000时RS为低电平,而访问0x6100 0002时其为高电平。

三、 SMC的时序设置

可以在LCD控制器的芯片手册上找到相应的时序:

MCK为96 MHz时,设置如下:

1234567891011121314151617181920212223#define ILI93XX_LCD_CS 1#define SMC_CS SMC->SMC_CS_NUMBER[ILI93XX_LCD_CS]/* 如果使用ASF的PMC模块,调用这个即可使能外设的时钟*/pmc_enable_periph_clk(ID_SMC);SMC_CS.SMC_SETUP =SMC_SETUP_NWE_SETUP(1)| SMC_SETUP_NCS_WR_SETUP(1)| SMC_SETUP_NRD_SETUP(1)| SMC_SETUP_NCS_RD_SETUP(1);SMC_CS.SMC_PULSE =SMC_PULSE_NWE_PULSE(5)| SMC_PULSE_NCS_WR_PULSE(5)| SMC_PULSE_NRD_PULSE(15)| SMC_PULSE_NCS_RD_PULSE(15);SMC_CS.SMC_CYCLE =SMC_CYCLE_NWE_CYCLE(10)| SMC_CYCLE_NRD_CYCLE(300);/* 由NRD或NWE信号控制读写 */SMC_CS.SMC_MODE =SMC_MODE_READ_MODE| SMC_MODE_WRITE_MODE;

这个设置不用太严格,如ASF示例代码中的设置就和这有点差距,但是都能够成功运行。另外,ASF中的示例代码也是很好的学习材料。在Atmel Studio的Start Page中可以打开示例项目:

四、 LCD模块的使用

在conf_board.h中,可以看到有两个配置项。一般情况下,这两个配置已经在开发板支持模块中做好定义了。但是,看完上一小节的话,也应该知道它做出如此配置的原因。

由于这个LCD控制器的使用略为复杂(它的芯片手册有100多页),而ASF也实现了相关的模块,所以这次就继续使用ASF了。

ILI93xx中,实现了许多控制与绘图模块,也包含了一个英文字库,可以很方便的进行基本图形和英文的绘制。

LCD的初时化。

12345678910structili93xx_opt_t lcd_init_opt;lcd_init_opt.ul_width = ILI93XX_LCD_WIDTH;lcd_init_opt.ul_height = ILI93XX_LCD_HEIGHT;lcd_init_opt.foreground_color = COLOR_BLACK;lcd_init_opt.background_color = COLOR_WHITE;/* 初始化 LCD */ili93xx_init(&lcd_init_opt);/* 启动LCD */ili93xx_display_on();

将屏幕填充为天蓝色。

1234/* 像素格式为aRGB-888 */constuint32_t sky_blue_rgb = 0x87CEEB;ili93xx_set_foreground_color(sky_blue_rgb);ili93xx_draw_filled_rectangle(0, 0, ILI93XX_LCD_WIDTH, ILI93XX_LCD_HEIGHT);

绘制文字。

123/* 绘制文字 */ili93xx_set_foreground_color(COLOR_BLACK);ili93xx_draw_string(50, 150, (uint8_t *)"Hello World!");

还有许多其他的API,比如控制显示方向等等,可以查看API文档或者相应的头文件。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LCD(液晶显示器)和LED(发光二极管)这两个术语通常用于描述显示技术中的不同方面。实际上,大多数液晶显示器都使用LED作为背光光源。因此,这两个术语经常一起使用,而不是相互替代。

关键字: lcd显示器 拖尾 LCD

LED(Light Emitting Diode)与LCD(Liquid Crystal Display)是当今显示技术领域的两大重要分支,各自凭借独特的优势在消费电子、广告传媒、工业控制、家用电器等多个领域占据着主导地...

关键字: LED LCD

液晶显示器(Liquid Crystal Display,简称LCD)作为一种广泛应用于电视、电脑显示器、手机以及各类电子产品的显示技术,其发展历程与科技创新紧密相连。LCD技术以其独特的构造和工作原理,在过去的几十年里...

关键字: LCD 液晶显示

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备
关闭
关闭