基于ARM的LCD触摸屏系统设计.
- 格式:doc
- 大小:26.00 KB
- 文档页数:2
基于STM32单片机FSMC接口驱动LCD的配置与分析概述:STM32单片机是一款高性能、低功耗的32位ARM Cortex-M系列微控制器。
它具有丰富的外设接口,其中包括FSMC(Flexible Static Memory Controller)接口,用于连接外部存储器,例如LCD显示器。
本文将详细介绍如何配置和驱动LCD显示器,以及分析FSMC接口的工作原理。
一、LCD驱动接口配置1. 在STM32的标准外设库中,FSMC的配置函数位于STM32F10x_stdperiph_driver库的stm32f10x_fsmc.c和stm32f10x_fsmc.h文件中。
通过这些函数,可以配置FSMC接口的参数,以使它能够连接和驱动LCD。
2.首先,需要配置FSMC的时钟预分频值。
根据LCD的要求以及系统时钟频率,选择适当的预分频值。
这可以通过设置FSMC_BCRx寄存器中的MBKEN和PS字段来实现。
3.然后,需要配置FSMC的存储芯片选择使能信号(CSEN)和片选信号(ALE)。
这可以通过设置FSMC_BCRx寄存器中的CSEN和ALEN字段来实现。
4.接下来,需要配置FSMC的读写延迟、数据宽度、存储器类型等参数。
这可以通过设置FSMC_BTRx和FSMC_BWTRx寄存器来实现。
5.最后,需要配置FSMC的地址线、数据线和控制线的映射关系。
这可以通过设置FSMC_BCRx寄存器中的MWID、MTYP、MUXEN、MWID和NWID 字段来实现。
二、FSMC接口工作原理1.FSMC接口是一种高速并行接口,它通过多路复用来连接不同的外部存储器。
它具有独立的读/写数据线和地址线,以及控制线,用于选择读/写操作和片选信号。
2. FSMC接口支持不同类型的存储器,例如SRAM、NOR Flash、NAND Flash和LCD。
每种存储器都有不同的时序和接口要求。
3.FSMC接口的时序参数主要包括时钟预分频值、读/写延迟、数据宽度和地址线宽度等。
嵌入式系统设计报告题目:触摸式计算器设计姓名:姜涛学号:x05610117班级:05电子(11)班指导老师:沈军民一、课程任务本电子系统的功能是借助ARM 7教学实验箱,使用S3C44B0三星处理器能及触摸屏及LCD显示屏等硬件编写程序来实现计算器的设计。
实验要求:1、要用触摸屏来实现2、能够具有触摸按键选择功能,并且具有显示数字功能3、可以实现四则运算功能二、软件实现流程图三、主程序:#include "44b.h"#include"uhal.h"#include "option.h"#include"def.h"#include "tchScr.h"#include"myuart.h"#include "tchScr.h"#include "maro.h"#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihostingextern U32 LCDBuffer[240][320];U32 jcolor;int number =0;//记录数字int number1=0;char signal;int main(void){int i,j,k;int m,n;ARMTargetInit(); //开发版初始化LCD_Init(); //LCD初始化/* for (i=0;i<9;i++){ switch (i){ case 0: jcolor=0x00000000; //RGB均为0 黑色break;case 1: jcolor=0x000000e0; //R 红色break;case 2: jcolor=0x0000d0e0; //R and G 橙色break;case 3: jcolor=0x0000e0e0; //R and G 黄break;case 4: jcolor=0x0000e000; //G 绿色break;case 5: jcolor=0x00e0e000; //G B 青色break;case 6: jcolor=0x00e00000; //B 蓝色break;case 7: jcolor=0x00e000e0; //R and B 紫色break;case 8: jcolor=0x00e0e0e0; //RGB 白色break;}*/jsqInit();getNum(235,7,0);LCD_Refresh() ;while(1){TchScr_Test();Delay(1000);}return 0;}getNum(int x,int y,int num){int i,j;for(i=x;i<=x+8;i++)for(j=y;j<=y+14;j++){LCDBuffer[j][i]=0x00000000;switch(num){case 0:if(i==x||i==x+8) LCDBuffer[j][i]=0x0000e000;if(j==y||j==y+14) LCDBuffer[j][i]=0x0000e000;break;case 1:if(i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 2:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if((i==x&&j>=y+7)||(i==x+8&&j<=y+7))LCDBuffer[j][i]=0x0000e000;break;case 3:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if(i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 4: if(j==y+7) LCDBuffer[j][i]=0x0000e000;if(i==x&&j<=y+7) LCDBuffer[j][i]=0x0000e000;if(i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 5:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if((i==x&&j<=y+7)||(i==x+8&&j>=y+7))LCDBuffer[j][i]=0x0000e000;break;case 6:if(j==y||j==y+7||j==y+14)LCDBuffer[j][i]=0x0000e000;if(i==x||(i==x+8&&j>=y+7))LCDBuffer[j][i]=0x0000e000;break;case 7:if(i==x+8) LCDBuffer[j][i]=0x0000e000;if(j==y) LCDBuffer[j][i]=0x0000e000;break;case 8:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if(i==x||i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 9:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if((i==x&&j<=y+7)||i==x+8)LCDBuffer[j][i]=0x0000e000;break;}}}getOp(){int i,j;for(i=235;i<=243;i++)for(j=7;j<21;j++){switch(signal){case '+':if(j==14||i==239) LCDBuffer[j][i]=0x00e00000;break;case '-':if(j==14) LCDBuffer[j][i]=0x00e00000;break;case'*':if(j+i==245||j-i==221)LCDBuffer[j][i]=0x00e00000;break;case '/':if(j-i==221)LCDBuffer[j][i]=0x00e00000;break;}}}jsqInit(){int k,i,j;for (k=0;k<260;k++)for (j=i*32;j<i*32+32;j++){LCDBuffer[2][k+10]= 0x00e00000;LCDBuffer[42][k+10]= 0x00e00000;LCDBuffer[215][105]= 0x00e00000;//'.'LCDBuffer[107][235]= 0x00e00000;//'/'LCDBuffer[117][235]= 0x00e00000;//'/'}for (k=0;k<10;k++)for (j=i*32;j<i*32+32;j++){LCDBuffer[57][k+100]= 0x00e00000;//‘2’的位置 LCDBuffer[67][k+100]= 0x00e00000;LCDBuffer[77][k+100]= 0x00e00000;LCDBuffer[57][k+165]= 0x00e00000;//‘3’的位置 LCDBuffer[67][k+165]= 0x00e00000;LCDBuffer[77][k+165]= 0x00e00000;LCDBuffer[112][k+35]= 0x00e00000;//‘4’的位置LCDBuffer[102][k+100]= 0x00e00000;//‘5’的位置 LCDBuffer[112][k+100]= 0x00e00000;LCDBuffer[122][k+100]= 0x00e00000;LCDBuffer[102][k+165]= 0x00e00000;//‘6’的位置 LCDBuffer[112][k+165]= 0x00e00000;LCDBuffer[122][k+165]= 0x00e00000;LCDBuffer[147][k+35]= 0x00e00000;//‘7’的位置LCDBuffer[147][k+100]= 0x00e00000;//‘8’的位置 LCDBuffer[157][k+100]= 0x00e00000;LCDBuffer[167][k+100]= 0x00e00000;LCDBuffer[147][k+165]= 0x00e00000;//‘9’的位置 LCDBuffer[157][k+165]= 0x00e00000;LCDBuffer[167][k+165]= 0x00e00000;LCDBuffer[192][k+35]= 0x00e00000;//‘0’的位置 LCDBuffer[212][k+35]= 0x00e00000;LCDBuffer[157][k+230]= 0x00e00000;//‘-’的位置LCDBuffer[202][k+165]= 0x00e00000;//‘+’的位置LCDBuffer[200][k+230]= 0x00e00000;//‘=’的位置 LCDBuffer[204][k+230]= 0x00e00000;LCDBuffer[112][k+230]= 0x00e00000;//'/'}for (k=0;k<60;k++)for (j=i*32;j<i*32+32;j++){LCDBuffer[47][k+10]= 0x00e00000;LCDBuffer[87][k+10]= 0x00e00000;LCDBuffer[47][k+75]= 0x00e00000;LCDBuffer[87][k+75]= 0x00e00000;LCDBuffer[47][k+140]= 0x00e00000;LCDBuffer[87][k+140]= 0x00e00000;LCDBuffer[47][k+205]= 0x00e00000;LCDBuffer[87][k+205]= 0x00e00000;LCDBuffer[92][k+10]= 0x00e00000; LCDBuffer[132][k+10]= 0x00e00000;LCDBuffer[92][k+75]= 0x00e00000; LCDBuffer[132][k+75]= 0x00e00000;LCDBuffer[92][k+140]= 0x00e00000; LCDBuffer[132][k+140]= 0x00e00000;LCDBuffer[92][k+205]= 0x00e00000; LCDBuffer[132][k+205]= 0x00e00000;LCDBuffer[137][k+10]= 0x00e00000; LCDBuffer[177][k+10]= 0x00e00000;LCDBuffer[137][k+75]= 0x00e00000; LCDBuffer[177][k+75]= 0x00e00000;LCDBuffer[137][k+140]= 0x00e00000; LCDBuffer[177][k+140]= 0x00e00000;LCDBuffer[137][k+205]= 0x00e00000; LCDBuffer[177][k+205]= 0x00e00000;LCDBuffer[182][k+10]= 0x00e00000; LCDBuffer[222][k+10]= 0x00e00000;LCDBuffer[182][k+75]= 0x00e00000; LCDBuffer[222][k+75]= 0x00e00000;LCDBuffer[182][k+140]= 0x00e00000; LCDBuffer[222][k+140]= 0x00e00000;LCDBuffer[182][k+205]= 0x00e00000; LCDBuffer[222][k+205]= 0x00e00000;}jcolor=0x00e00000;for (i=0;i<40;i++){if (i==80||i==160)jcolor<<=8;for (j=288;j<320;j++){LCDBuffer[i+2][10]=0x00e00000; LCDBuffer[i+2][270]=0x00e00000;LCDBuffer[i+47][10]=0x00e00000;LCDBuffer[i+47][70]=0x00e00000; LCDBuffer[i+47][75]=0x00e00000; LCDBuffer[i+47][135]=0x00e00000; LCDBuffer[i+47][140]=0x00e00000; LCDBuffer[i+47][200]=0x00e00000; LCDBuffer[i+47][205]=0x00e00000; LCDBuffer[i+47][265]=0x00e00000;LCDBuffer[i+92][10]=0x00e00000; LCDBuffer[i+92][70]=0x00e00000; LCDBuffer[i+92][75]=0x00e00000; LCDBuffer[i+92][135]=0x00e00000; LCDBuffer[i+92][140]=0x00e00000; LCDBuffer[i+92][200]=0x00e00000; LCDBuffer[i+92][205]=0x00e00000; LCDBuffer[i+92][265]=0x00e00000;LCDBuffer[i+137][10]=0x00e00000;LCDBuffer[i+137][70]=0x00e00000;LCDBuffer[i+137][75]=0x00e00000;LCDBuffer[i+137][135]=0x00e00000;LCDBuffer[i+137][140]=0x00e00000;LCDBuffer[i+137][200]=0x00e00000;LCDBuffer[i+137][205]=0x00e00000;LCDBuffer[i+137][265]=0x00e00000;LCDBuffer[i+182][10]=0x00e00000;LCDBuffer[i+182][70]=0x00e00000;LCDBuffer[i+182][75]=0x00e00000;LCDBuffer[i+182][135]=0x00e00000;LCDBuffer[i+182][140]=0x00e00000;LCDBuffer[i+182][200]=0x00e00000;LCDBuffer[i+182][205]=0x00e00000;LCDBuffer[i+182][265]=0x00e00000;}}jcolor=0x00e00000;for (i=0;i<10;i++){if (i==80||i==160)jcolor<<=8;for (j=288;j<320;j++){LCDBuffer[i+67][100]=0x00e00000;// ‘2’ LCDBuffer[i+57][110]=0x00e00000;LCDBuffer[i+102][35]=0x00e00000;// ‘4’LCDBuffer[i+102][100]=0x00e00000;// ‘5’LCDBuffer[i+112][110]=0x00e00000;LCDBuffer[i+112][175]=0x00e00000;// ‘6’LCDBuffer[i+147][165]=0x00e00000; // ‘9’LCDBuffer[i+197][170]=0x00e00000; // ‘+’}}jcolor=0x00e00000;for (i=0;i<20;i++){if (i==80||i==160)jcolor<<=8;for (j=288;j<320;j++){LCDBuffer[i+62][40]=0x00e00000;//‘1’LCDBuffer[i+57][175]=0x00e00000;//‘3’LCDBuffer[i+102][40]=0x00e00000;//‘4’LCDBuffer[i+102][165]=0x00e00000;//‘6’LCDBuffer[i+147][45]=0x00e00000;//‘7’LCDBuffer[i+147][100]=0x00e00000;//‘8’ LCDBuffer[i+147][110]=0x00e00000;LCDBuffer[i+147][175]=0x00e00000;//‘9’LCDBuffer[i+192][35]=0x00e00000;//‘0’ LCDBuffer[i+192][45]=0x00e00000;}}//return;// }}tchNum(int x,int y){int i;int x1,y1;x1=(x-5)/65;y1=(y-42)/45;if(number<99999999||(x1==1&&y1==3)||(x1==2&&y1==3)||x1==3){switch(x1){case 0:switch(y1){case 0:number=number*10+1;return;case 1:number=number*10+4;return;case 2:number=number*10+7;return;case 3:number=number*10;return;}case 1:switch(y1){case 0:number=number*10+2;return;case 1:number=number*10+5;return;case 2:number=number*10+8;return;case 3:signal='*';clear();getOp();number1=number;number=0;return;}case 2:switch(y1){case 0:number=number*10+3;return;case 1:number=number*10+6;return;case 2:number=number*10+9;return;case 3:signal='+';clear();getOp();number1=number;number=0;return;}case 3:switch(y1){case 0:number=0;number1=0;clear();getNum(235,7,0);return;case 1:signal='/';clear();getOp();number1=number;number=0;return;case 2:signal='-';clear();getOp(); number1=number;number=0;return;case 3:operation();return;}}}}showNum(){//tchNum();int ws=1;int n;n=number;Uart_Printf("$$$$$$$$number=%d",n);Uart_Printf("$$$$$$$$number=%d",number);if(number<0) {isFu();n=-n;}while(n!=0||n/10!=0){switch(ws){case 1:getNum(235,7,n%10);break;case 2:getNum(220,7,n%10);break;case 3:getNum(205,7,n%10);break;case 4:getNum(190,7,n%10);break;case 5:getNum(175,7,n%10);break;case 6:getNum(160,7,n%10);break;case 7:getNum(145,7,n%10);break;case 8:getNum(130,7,n%10);break;case 9:getNum(115,7,n%10);break;}ws++;n=n/10;}}clear(){int i,j;for(i=115;i<=235;i=i+15)getNum(i,7,10);for(i=100;i<=108;i++)for(j=7;j<21;j++){if(j==14) LCDBuffer[j][i]=0x00e0e0e0;break;}}operation(){switch(signal){case '+': number = number+number1;clear();break;case '-':number = number1-number;clear();break;case '*':number = number*number1;clear();break;case '/':number = number1/number;clear();break;}}isFu(){int i,j;for(i=100;i<=108;i++)for(j=7;j<21;j++){if(j==14) LCDBuffer[j][i]=0x00e0e0e0;break;}}四、实验结果显示五、实验心得1、在做计算器时,第一步关键是要将触摸屏校准,使用触摸屏实验程序,通过超级终端将坐标打印出来,从而去调整TchScr_Xmax, TchScr_Xmin, TchScr_Ymax, TchScr_Ymin四个坐标值,使得触摸屏与LCD显示屏能够正确的对应2、在坐标对应的过程中,首先要确定实际触摸屏的X、Y坐标方向,以及程序中的X、Y坐标方向是不是已经和实际坐标对应起来,否则容易出现后面按键时出现按键错位。
ARM芯片控制LED显示屏简介本文档将介绍如何使用ARM芯片来控制LED显示屏。
我们将通过编写嵌入式C代码来实现这一功能,并使用ARM开发板上的GPIO接口来控制LED的亮灭。
硬件准备在开始之前,我们需要准备以下硬件设备:•ARM开发板:我们将使用一块支持ARM架构的开发板作为硬件平台。
常用的ARM开发板有树莓派、Arduino等。
•LED显示屏:我们需要一块支持GPIO控制的LED显示屏。
一般来说,这种显示屏会有一个或多个数据线和一个控制线。
•杜邦线:用于连接ARM开发板和LED显示屏的引脚。
在开始编写代码之前,我们需要准备以下软件环境:•ARM开发环境:根据所使用的开发板型号,安装相应的ARM开发环境。
一般来说,这些环境包括交叉编译工具链、调试软件等。
•文本编辑器:用于编写C代码的文本编辑器。
可以选择任何你熟悉和喜欢的编辑器,比如Sublime Text、VS Code等。
连接硬件首先,我们需要将ARM开发板和LED显示屏连接起来。
根据显示屏的引脚定义,将数据线和控制线连接到ARM开发板的GPIO接口上。
确保连接正确无误。
接下来,我们将编写嵌入式C代码来控制LED显示屏。
以下是一个简单的示例代码:#include <stdio.h>#include <wiringPi.h>#define LED_PIN 23int mn(){// 初始化wiringPi库wiringPiSetup();// 设置LED控制引脚为输出模式pinMode(LED_PIN, OUTPUT);while(1){// 点亮LEDdigitalWrite(LED_PIN, HIGH);// 延时1秒delay(1000);// 关闭LEDdigitalWrite(LED_PIN, LOW);// 延时1秒delay(1000);}return 0;}在这个示例代码中,我们使用了wiringPi库来控制GPIO接口。
本文由sunli19820113贡献doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
摘要:摘要:对由 S3C44B0X 控制彩色显示屏和四线电阻式触摸屏组成的人机界面控制系统作了较为深入的分析与研究。
介绍了 S3C44B0X 内置 LCD 控制器、液晶屏 LM7M632 和触摸屏控制器 ADS7843 的管脚功能和工作原理,完成了 S3C44B0X 与 LM7M632 及ADS7843 的接口设计,论述了 LCD 和触摸屏的驱动过程, 实现了彩色液晶显示及触摸屏控制功能。
实验表明本系统通用性好,可应用于其它嵌入式系统中。
关键词:关键词:ARM 处理器;S3C44B0X;LCD;ADS7843;触摸屏; 0 引言随着信息技术的不断发展,嵌入式系统正在越来越广泛的应用到航空航天、消费类电子、通信设备等领域。
而在嵌入式系统中,LCD 作为人机交互的主要设备之一,显示系统又是不可缺少的一部分。
近年来,随着微处理器性能的不断提高,特别是 ARM 处理器系列的出现,嵌入式系统的功能也变得越来越强大。
液晶显示器由于具有功耗低、外形尺寸小、价格低、驱动电压低等特点以及其优越的字符和图形的显示功能,已经成为嵌入式系统使用中的首选的输出设备。
随着多媒体技术的发展,单色的 LCD 已不能满足人们在各种多媒体应用方面的更高要求,彩色 LCD 正越来越广泛地被应用到嵌入式系统中。
触摸屏是人们获取信息的一种便利工具, 已广泛应用于工商、税务、银行等各种需要对公众提供信息服务的行业[1]。
触摸屏作为一种特殊的计算机外设,是目前最简单、方便、自然的一种人机交互方式。
它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备[2]。
S3C44B0X 是三星公司生产的基于 ARM7TDMI 内核的 RISC 微处理器,主频可达 66MHz[3]。
它集成了包括 LCD 控制器在内的等外围器件。
基于单片机的LCD点阵显示屏的设计专业名称:计算机科学与技术年级班别: 2011级二班姓名:毛西苹指导教师:苏燕2015年5月基于单片机的LCD点阵显示屏的设计摘要随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一种独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,从而得到越来越广泛的应用。
当今是一个信息化的时代,信息的重要性不言而喻,获取信息的手段显得尤其重要,人们所接受的信息有很大一部分来自于人的视觉,无论用何种方式获取的信息最终都需要有某种显示方式来表示。
在某种显示技术中,以液晶显示器LCD为代表的平板显示器发展最快、应用最广。
本设计主要采用STC89C52单片机作为LCD1602液晶显示屏的系统控制器主线。
通过控制STC89C52单片机的引脚来控制LCD1602显示给定的符号、字母、数字,显示的内容从右至左并行移动,同时设计也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,还介绍了显示原理、硬件电路和软件部分的设计原理。
着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程。
关键词STC89C52单片机;1602液晶显示器;并行通信Based on the design of the MCU LCD dot matrix displayscreenAbstract With the rapid development of computer science and technology, the application of computer has penetrated into every corner of the national economy and people's life, are increasingly changing the traditional way of human work and lifestyle, and single-chip microcomputer technology as an independent branch of computer technology, has a high cost performance, high integration, small size, high reliability, strong control function, low power consumption, low voltage, easy production, easy to carry, etc, so as to get more and more widely used.Today is an information age, the importance of the information it goes without saying that the means of access to information is especially important, accepted a good portion of the information comes from the people of vision, no matter use what means to obtain information and eventually need to have some kind of display mode.In some kind of display technology, represented by the liquid crystal display LCD flat panel display development the fastest, the most widely used.This design mainly adopts STC89C52 single-chip microcomputer as the LCD1602 LCD display system controller of the main line.STC89C52 single-chip microcomputer control through the pin to control the LCD1602 display a given symbols, letters, Numbers, and display the contents of the parallel moving from right to left, at the same time also for some chips and peripheral circuit design are introduced,and design, each accompanied by a diagram of the system structure, also introduces the display principle, design principle of hardware circuit and software part.This system are introduced the application of the hardware interface technology and the function of each interface module and working process.Key words STC89C52 microcontroller ;1602 LCD;parallel communication目录前言.................................................... 错误!未定义1 绪论................................................... 错误!未定义1.1 液晶显示屏的背景.................................... 错误!未定义1.1.1 LCD材料发展趋势............................... 错误!未定义1.1.2 LCD材料构成................................... 错误!未定义1.1.3 LCD市场分析................................... 错误!未定义1.2 液晶显示屏的意义.................................... 错误!未定义1.3 液晶显示屏的内容.................................... 错误!未定义2 单片机技术与理论....................................... 错误!未定义2.1 单片机技术 ......................................... 错误!未定义2.2 单片机的发展方向.................................... 错误!未定义2.3 MCS-51单片机内部结构.............................. 错误!未定义2.4 STC89C52单片机的介绍.............................. 错误!未定义2.4.1 STC89C52单片机各个功能模块介绍 ................ 错误!未定义2.4.2 主要特性........................................ 错误!未定义2.4.3 STC89C52RC单片机的工作模式 ................... 错误!未定义2.5 STC89C52单片机主要功能............................ 错误!未定义2.5.1 STC89C52主要功能.............................. 错误!未定义2.5.2 引脚功能........................................ 错误!未定义2.5.3 存储器结构...................................... 错误!未定义2.6 单片机最小系统...................................... 错误!未定义2.6.1 复位电路........................................ 错误!未定义3 LCD液晶显示屏的结构与原理............................. 错误!未定义3.1 液晶显示的背景...................................... 错误!未定义3.2 LCD显示屏的现状及发展趋势......................... 错误!未定义3.3 LCD显示原理....................................... 错误!未定义3.4 LCD的驱动方式..................................... 错误!未定义3.5 LCD的分类......................................... 错误!未定义3.6 1602字符型LCD简介................................ 错误!未定义3.6.1 LCD1602的基本参数及引脚功能 ................... 错误!未定义3.6.2 LCD1602主要技术参数........................... 错误!未定义3.6.3 引脚功能说明.................................... 错误!未定义3.6.4 接口信号说明.................................... 错误!未定义3.6.5 LCD1602的指令说明及时序 ....................... 错误!未定义3.6.6 LCD1602的RAM地址映射及标准字库表............ 错误!未定义3.6.7 LCD1602的一般初始化(复位)过程 ............... 错误!未定义3.6.8 LCD1602液晶显示器原理 ......................... 错误!未定义4 软件的设计与实现....................................... 错误!未定义4.1 总体设计方案 ....................................... 错误!未定义 4.1.1 设计思路 ....................................... 错误!未定义 4.1.2 设计总框图..................................... 错误!未定义 4.1.3 程序流程图..................................... 错误!未定义4.2 软件设计语言 ....................................... 错误!未定义4.3 程序调试过程与结果.................................. 错误!未定义4.3.1 Keill简介....................................... 错误!未定义4.3.2 应用Keil软件进行单片机软件调试步骤.............. 错误!未定义总结................................................................参考文献.................................................. 错误!未定义致谢.................................................... 错误!未定义附录.................................................... 错误!未定义前言从1971年开始,液晶作为一种显示媒体使用以来,随着液晶显示技术的不断完善和成熟,使其应用日趋广泛,到目前已涉及微型电视、数码照相机、数码摄像机以及显示器等多个领域,在其经历了一段稳定、漫长的发展历程后,液晶产品已摒弃了以前那种简陋的单色设备形象。
基于ARM的LCD触摸屏系统设计
内容摘要:随着嵌入式系统技术的飞速发展,工业设备产品也越来越现代化,普遍要求可视化操作。
2、操作界面的可定制性使得该软件系统广泛用于同类产品设计中,同时也方便开发人员对产品进行升级。
关键词:触摸
屏,ARM处理器,绘图模式,LCD控制器,负电压,OCMJ,同步串行接口,绘图方式,人机交互系统,界面引言随着嵌入式系统技术的飞速发展,工业设备产品也越来越现代化,普遍要求可视化操作。
LCD触摸屏低耗能.散热小,成本低,纤薄轻巧,外形尺寸小,安装容易。
使用LCD触摸屏作为工业设备的输入输出设备既能达到可视化的要求,方便现场操作,又能降低产品的成本。
而在产品的整体设计过程中,人机交互界面的设计往往占据着很大一部分工作,这样,不但极大地增加了产品的开发成本瓶且延长了产品的上市周期。
本文设计的基于
S3C44BOX的人机交互界面是一种可定制、简单易用、性能优良的通用型人机交互界面,能很好地解决上述问题。
1 系统结构系统主要包括三个部分,分别为PC机、S3C4480X微处理器和LCD触摸屏模块。
系统结构框图如图1所示。
图1 系统结构框图本系统为基于S3C44BOX的工业设备提供交互接口,通过该系统可以给工业设备提供一个可视化的人机界面。
来自PC机的定制好的界面信息存储在ARM的FLASH存储器内。
在应用当中,当微处理器接收到触摸屏按键信息时,对工业设备进行控制。
同时微处理器也对LCD进行界面的刷新,这样以完成人机交互。
2 系统硬件设计系统硬件电路原理如图2所示。
其中S3C4480X为CPU内核,320x240点阵LCD触摸屏为主要的输入输出设备。
图2 系统硬件电路原理图2.1 LCD触摸屏模块OCMJ15x20D介绍本系统显示部分采用的是OCMJ15x20D (320x240点阵)D系列中文液晶湿示模块,其中OCMJ表示奥可拉中文集成模块。
这是一个中英文文字与绘图模式的点阵液晶屁示模块,内建
512KByte的ROM字形码,可以显示中文字型、数字符号、英日欧文等字母,并且内建双图层(Two Page)的显爪内存。
在文字模式中,可接收标准中文文字内码直接显示中文,而不需要进入绘图模式以绘图方式描绘中文,提升液晶显示中文之效率。
该模块整合了多项的实用界面,包含内建的10-Bit ADC.提供触控屏接口。
OCMJ15X20D(V3.2)的触摸屏是用FM7843控制的,该控制器已集成在模块上,模块已留出FM7843的控制线供客户使用(OCMJ15X20D上的J5脚),可直接使用3V供电而不需外接负电压。
模块FM7843是四线电阻式触摸屏输入控制芯片。
它是一款具有同步串行接口的12位采样模数转换器。
在125kHz吞吐速率和2.7V电压下的功耗为750μW.而在关闭模式下的功耗仅为0.5μW。
它具有低功耗和高速等特性,因此被广泛应用。
引脚X+、Y+、X-、Y-是转换器模拟输入端,DCLK是外部时钟输入;CS是片选端:DIN是串行输入,其控制数据通过该引脚输入;DOUT是串行数据输出.用于输出转换后的触摸位置数据。
最大数为二进制的4095;IN3、IN4是辅助输入;PENIRQ是PEN中断引脚。
其中,S3C44BOX共使用6条与FM7843接口相连。
2.2 系统的工作原理
OCMJ15x20D模块内置LCD控制器,并将触摸屏安装在LCD液品屏上,设计相应的控制电路对LCD和触摸屏控制。
当用户操作触摸屏时,模块FM7843控制芯片对触摸点进行检测,并把检测到的信息送出转换为相应的坐标,以供S3C44BOX 处理器读取。
3 系统软件设计及实现3.1 系统软件介绍用户可以根据实际应用中的控制系统的需要及控制系统与人机交互界面的约定,通过PC机上的可视化人机界面定制软件,定制好整个界面信息。
然后把定制好的界面信息下载到
ARM的FLASH中,就可以轻松地实现人机界面的定制。
在应用中,ARM处理器通过直接操作I/O口与人机交互界面系统进行交互,读取触摸屏信息。
然后根据读取的信息执行相应的操作。
系统的软件部分由用户引导程序和应用程序组成。
系统运行后,由用户引导程序决定是执行界面信息的更新还是正常运行。
若执行界面信息的更新,则系统通过相关函数接收界面定制信息并保存在FLASH中,然后通过本地读取新的界面定制信息建立链表网络;若正常运行,则直接从本地渎取旧的界面定制信息建立链表网络。
应用程序实现的功能则包括触摸屏输入处理及界面的显示。
用户通过本系统可以对工业设备所有与软件相关的参数进行配置。
本篇文章共2页,此页为首页下一页。