基于ARM单片机的小车显示系统设计

时间:2022-02-07 02:15:10

基于ARM单片机的小车显示系统设计

摘要:为完成小车显示系统的设计方案,根据LM3S811微处理器和TH12864液晶显示模块的主要功能及特点,设计出了小车显示系统的软硬件实现方法,经过实际系统的测试和验证,驱动程序功能正常,可供参考,且LM3S811硬件资源丰富,软件易于编程开发,开发的显示系统可方便移植应用到其他领域。

关键词:ARM; LM3S811; 微控制器; TH12864; 液晶显示; 驱动程序

中图分类号:TN873.93; TP271文献标识码:A文章编号:1004373X(2011)22006503

Design of Car Display System Based on ARM MCU

ZHANG Dong, QIN Changli, XIE Dadi, WU Xiaoru

(Collage of Physics and Electronic Information , Yan’an University, Yan’an 716000, China)

Abstract: In order to accomplish a design scheme of car display system, an implementation method of hardware and software is designed according to the main functions and characteristics of LCD module TH12864 and microprocessor LM3S811 in the series of ARMsR CortexTMM3 based 32bit microcontroller. The basic driver program are conveniently designed by using the Stellaris peripheral driver library function. The testing and verification results show that the functions of the driver program and display program are ideal. The hardware resources of microprocessor LM3S811 is rich and its software is easy to develop program. The developed display system can be conveniently transplant into other system.

Keywords: ARM; LM3S811; microcontroller; TH12864; LCD; driver program

收稿日期:201106160引言

8位的51单片机长期占据着微控制器(MCU)的主流市场,但随着技术与需求的发展,32位微控制器应用增长率也在不断攀升。目前,基于ARM内核的32位微处理器在市场上处于领导地位[12]。

基于ARM嵌入式处理器的片上系统解决方案可应用于企业应用、汽车系统,家庭网络和无线技术等市场领域。ARM CortexTM系列提供了一个标准的体系结构来满足以上各种技术的不同性能要求,基于ARM架构有3个分工明确的系列:A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列针对实时系统;M系列专为低成本控制和微控制器应用开发。CortexM3是基于ARM架构的处理器,是专门为了在微控制器等对功耗和成本敏感的应用领域实现高系统性能而设计的,它简化了可编程的复杂性,使ARM架构成为各种应用方案的良好选择[3]。

Luminary Micro公司(已被TI公司收购) Stellaris提供一系列的微控制器是首款基于ARMsR CortexTMM3的控制器,它们为对成本尤其敏感的嵌入式微控制器应用方案带来了高性能的32位运算能力。 这些具备领先技术的芯片使用户能够以传统的8位和16位器件的价位来享受32位的性能。其中,LM3S811 微控制器正是针对工业应用方案而设计的,包括测试和测量设备、工厂自动化、建筑控制、运动控制、医疗器械、火警安防以及电力能源等[4]。

TH12864等图形点阵液晶显示器以其工作电压低、功耗低、寿命长、不产生电磁辐射污染、可以显示复杂的文字及图形等优点, 已被广泛应用在各种仪器仪表、电子设备和家用电器等领域[57]。

本文尝试将基于ARM的LM3S811 微控制器与TH12864显示模块相结合的技术应用。

1系统硬件设计

1.1LM3S811主控芯片

本次系统硬件设计的主控芯片选择TI公司LM3S811芯片[89],其电源电压为3.3 V,最高时钟频率50 MHz,64 kHz的单周期FLASH;3个32位通用定时器,可分成6个16位定时器使用;一组同步串行接口(SSI),2个异步串行接口(UART);4通道模数转换器(ADC),1组模拟比较器和I2C接口;3个脉宽调制信号(PWM)模块,32个通用输入输出管脚(GPIO)及硬件看门狗等。LM3S811系统方框图如图1所示。

图1LM3s811系统方框图1.2TH12864显示模块

本次系统设计的显示模块选择带中文字库的TH12864,其电源电压为3.3 V。TH12864液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312码简体中文字库(16×16点阵)、128个字符(8×16点阵)及64×256点阵显示RAM(GDRAM)。可提供8位并行及串行2种连接方式,具有多种功能:光标显示、画面移位、睡眠模式等。 其中TH12864的管脚功能如下:

1:VSS,地(GND);2:VDD,电源;3:V0,背光调节;4:CS,片选信号;5:STD,串行数据;6:SCLK,串行时钟;14: DB0DB7,并行数据;15:PSB,串并口选择,串行模式为低电平有效;17:/RST,复位;19:LEDA,背光正极;20:LEDK,背光负极[10]。

1.3LM3S811主控芯片与TH12864显示模块的连接

为节约系统硬件资源以便其他用途,故选择TH12864显示模块为串行模式。则主控芯片LM3S811只需要占用3个GPIO管脚即可,保留PWM等用于小车驱动等,选择与比较器和I2C复用的PB2,PB4和PB6,如图2所示。

图2LM3S811主控芯片与TH12864

显示模块的原理图2系统软件设计

系统软件设计分为底层驱动程序、中层实现程序和上层应用程序。软件以IAR集成开发环境为开发平台,用C语言编写,便于维护和移植[1112]。下面是部分源程序。

2.1 底层驱动部分

底层驱动程序完成的功能是实现TH12864的硬件时序[10]。

图3TH12864硬件串行时序图程序如下:

void Send(uchar type,uchar transdata)

{

Pretreatment(type,transdata);

GPIOPinWrite(LCD_12864_PORT, LCD_12864_CS, 0xFF);

GPIOPinWrite(LCD_12864_PORT, LCD_12864_SCLK, 0x00);

for(j=3;j > 0;j勃)

{

for(i = 8;i > 0;i勃)

{

if(ucSndtmp[j] & 0x80)

{GPIOPinWrite(LCD_12864_PORT, LCD_12864_SID, 0xFF); }

else

{GPIOPinWrite(LCD_12864_PORT, LCD_12864_SID, 0x00); }

GPIOPinWrite(LCD_12864_PORT, LCD_12864_SCLK, 0xFF);

ucSndtmp [j]

GPIOPinWrite(LCD_12864_PORT, LCD_12864_SCLK, 0x00);

}

SysCtlDelay(600 * (TheSysClock/ 3000000));

}

GPIOPinWrite(LCD_12864_PORT, LCD_12864_SID, 0x00);

GPIOPinWrite(LCD_12864_PORT, LCD_12864_CS, 0x00);

}

驱动程序先预处理3个字节要发送数据的具体内容,片选后,依次循环,按时钟信号发送每个字节的每一位,其中延时不能省略。

2.2中层实现程序

中层实现程序完成主要功能是,按照TH12864的用户指令集,用底层驱动程序发送指令,完成初始化、显示、清除、设定等功能。例如初始化程序:

void Ini_Lcd(void)

{

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

GPIOPinTypeOut(LCD_12864_PORT ,

LCD_12864_CS|LCD_12864_SID|LCD_12864_SCLK );

SysCtlDelay(100 * (TheSysClock/ 3000)); //延时约100 ms

Send(0,0x30);/*功能设置:一次送8位数据,基本指令集*/

SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs

Send(0,0x02);/*DDRAM地址归位*/

SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs

Send(0,0x0c);/*显示设定:开显示,不显示光标,不

做当前显示位反白闪动*/

SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs

Send(0,0x01);/*清屏,将DDRAM的位址计数器调

整为“00H”*/

SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs

Send(0,0x06);/*功能设置,点设定:显示字符/光标

从左到右移位,DDRAM地址加1*/

SysCtlDelay(72 * (TheSysClock/ 3000000));//延时约72 μs

}

从前两句可以看出LM3S811在设置GPIO时,比普通51单片机设置要简单许多,无需记忆众多的寄存器,由于厂家提供了Stellaris外设驱动库函数,只要调用相应API接口函数即可,简化了编程的复杂性,对于新学者也可以迅速上手编程工作。

2.3上层应用程序

在底层驱动程序和中层实现程序的基础上,程序移植方便。可以根据系统需求完成字符、汉字和图片等实际显示内容。

图4实际显示效果图此次系统实现了开机图片显示,欢迎词和小车状态的循环动态显示,速度显示及电子秒表等功能。

3结语

通过本次系统集成的设计、制作、调试和验证,完成并实现了基于ARM单片机的小车显示系统功能。实现了LM3S811对于TH12864显示模块的控制,其底层驱动程序可以供大家参考。在实现过程中发现,在硬件方面,LM3S811的主频较高,运算能力较强,外设资源丰富。在软件方面,由于厂家提供了Stellaris外设驱动库函数,降低了编程的难度,可以快速上手工作。此外,本系统也可以推广应用到其他小型仪表或设备显示系统。

参考文献

[1]宁殿燕,张仲礼,王继矿,等.基于ARM Cortex M3内核矿井直流电法仪的研制[J].西安科技大学学报,2011(1):1115.

[2]崔琪琳,吴晓凤.基于ARM的光源跟踪系统的设计[J].电子测试,2011(2):6164.

[3]YIU Joseph.Cortex M3权威指南[M].北京:北京航空航天大学出版社,2010.

[4]Texas Instruments. StellarissR LM3S811 Microcontroller [EB/OL]. [20110109]. /stellaris.

[5]倪景峰,周腾,马恒.SMC12864液晶显示器在密闭监测系统中的应用[J].测控技术,2011,30(1):9799.

[6]辛阿阿,厉善亨.基于12864液晶模块的动态波形显示实现方法[J].仪器仪表用户,2010,17(3):5657.

[7]宋稳力,陈昌旺,黄文婷.液晶显示模块YG12864A的接口设计[J].现代显示,2005(6):3537.

[8]黄争.德州仪器高性能模拟器件在高校中的应用及选型指南[M].上海:德州仪器半导体技术(上海)有限公司大学计划部,2010.

[9]周立功.Cortex M3开发指南[M].广州:广州致远电子有限公司,2008.

[10]深圳彩晶科技.12864中文字库液晶显示模块使用手册[EB/OL].[20090815]..

[11]王道新,熊祖彪,陈竞,等.基于IAR集成开发平台的ARM程序设计方法[J].电子设计应用,2005(10):102104.

[12]徐爱钧.用IAREWARM开发嵌入式系统时目标代码的链接与定位[J].单片机与嵌入式系统应用,2007(4):7981.

作者简介: 张栋男,1973年出生,陕西绥德人,硕士,工程师。主要从事自动控制系统等方面的教学和研究。

上一篇:上行信道估计在TDLTE系统中的研究 下一篇:Multisim 10在模电教学中的应用