




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于lcd模拟三角形运动设计 第页 共17页 1 引 言通常我们常用的lcd显示模块,有两种,一是带有驱动电路的lcd显示模块,一是不带驱动电路的lcd显示屏。大部分arm处理器中都集成了lcd的控制器,所以,针对arm芯片,一般不使用带驱动电路的lcd显示模块。s3c44b0x微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案。它使用arm7tdmi核,工作在66mhz,集成了lcd控制器等外围器件。它的lcd控制器具有通用性,能与大多数lcd显示模块接口。接口设计、驱动程序开发都很简单,广泛应用于智能仪表、pda等的显示部分。本实验实现的是lcd模拟三角形的
2、运动,通过在main()函数中修改并加入相应的实现代码,绘图api函数在glib.c文件中。arm7tdmi系统扩充包括thumb协处理器、片上ice中断调试支持和32位乘法器。s3c44b0x通过在arm7tdmi内容基础上扩展一系列完整的通用外围器件。其特点如下: 采用arm7tdmi内核,i/o电压3.3v,内核电压2.5v; 内置锁相环(pll),系统工作主频66mhz; 4种工作模式(正常、慢速、闲置和停止),可以实现电源管理以降低系统功耗; 8kb的系统高速缓存(cache),极大地提高了系统的运行速度; 支持8个memory bank,最大外部存储空间达256mb,并支持sdra
3、m; 内置彩色lcd控制器; 2路异步串口(uart); 71个通用i/o口,包括8个外部中断源; 8路10位a/d转换器; 实时时钟(rtc)和看门狗电路(watchdog);1.1 课程设计目的1. 学习lcd与arm的lcd的控制器的接口原理;2. 掌握内置lcd控制器驱动编写方法;3. 学习调用简单的gui绘图。1.2 程序开发环境1. el-arm-820教学实验箱,pentiumii以上的pc机,仿真器电缆。2. pc操作系统win98或win2000或winxp,arm ads1.2集成开发环境,h-jtag调试代理软件。2 ads集成开发环境介绍ads全称为arm develo
4、per suite,是arm公司推出的新一代arm集成开发工具。现在ads的最新版本是1.2,它取代了早期的ads1.1和ads1.0。在ads工具诞生之前,一直使用的是arm sdt工具,目前arm sdt工具已经慢慢被淘汰。ads除了可以安装在windows nt4、windows 2000、windows 98和windows 95操作系统下,还支持windows xp和windows me操作系统。2.1 ads软件组成ads由命令行开发工具、gui(graphics user interface,图形用户界面)开发环境(code warrior和axd)、实用程序和支持软件组成。有了
5、这些部件,用户就可以为arm系列的risc处理器编写和调试自己的开发应用程序了。下面将分别介绍这4个组成部分。1命令行开发工具命令行开发工具在实际应用中相对比较广泛,用它最大的好处就是可以将许多编译命令写在一个脚本文件中,然后只执行该脚本文件就可以让工具自动完成所有编译的工作。2gui开发环境ads gui开发环境包含code warrior和axd两种,其中code warrior是集成开发工具,而axd是调试工具。3实用程序ads除了提供上述工具外,它还提供以下的实用工具来配合前面介绍的命令行开发工具的 使用。(1)flash downloader是用于把二进制映像文件下载到arm开发板上
6、的flash存储器的工具。(2)fromelf是arm映像文件转换工具。该命令将elf格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plain binary(bin格式映像文件)、motorola 32-bit s-record format(motorola 32位s格式映像文件)、intel hex 32 format(intel 32位格式映像文件)和verilog-like hex format(verilog 十六进制文件)。fromelf命令也能够为输入映像文件产生文本信息,例如代码和数据长度。(3)armar,arm库函数生成器将一系列elf格式的目标文件以库函数
7、的形式集合在一起,用户可以把一个库传递给一个连接器以代替几个elf文件。4支持的软件ads为用户提供armulator软件,使用户可以在软件仿真的环境下或者在基于arm的硬件环境调试用户应用程序。armulator是一个arm指令集仿真器,集成在arm的调试器axd中,它提供对arm处理器的指令集的仿真,为arm和thumb提供精确的模拟。用户可以在硬件尚未做好的情况下,开发程序代码。2.2 ads调试器调试器本身是一个软件,用户通过这个软件使用debug agent可以对包含有调试信息的,正在运行的可执行代码进行比如变量的查看,断点的控制等调试操作。ads中包含有3个调试器:axd(arm
8、extended debugger):arm扩展调试器;armsd(arm symbolic debugger):arm符号调试器;与老版本兼容的windows或unix下的arm调试工具,adw/adu(application debugger windows/unix)。下面对在调试映像文件中所涉及到的一些术语做一个简单的介绍。debug target在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发的软件是否达到了预期的效果,这可以由软件仿真来完成。即使调试器和要测试的软件运行在同一台pc上,也可以把目标当作一个独立的硬件来看待。当然,也可以搭建一个pcb板,这个板上可以包
9、含一个或多个处理器,在这个板上可以运行和调试应用软件。只有当通过硬件或者是软件仿真所得到的结果达到了预期的效果,才算是完成了应用程序的编写工作。调试器能够发送以下指令:1. 装载映像文件到目标内存;2. 启动或停止程序的执行;3. 显示内存,寄存器或变量的值;4. 允许用户改变存储的变量值。3 内置lcd控制器介绍3.1 概述s3c44b0x内置的lcd控制器的作用是将显示缓存(在系统存储器中)的lcd数据传输到外部lcd驱动器,并产生必须的lcd控制信号。它支持灰度lcd和彩色lcd。在灰度lcd上,使用基于时间抖动算法(time-basedditheringalgorithm)和frc(f
10、rameratecontrol)方法,可以支持单色、4级灰度和16级灰度模式的灰度lcd。在彩色lcd上,可以支持256种色彩。不同尺寸的lcd具有不同数量的垂直和水平象素、数据接口、数据宽度、接口时间和刷新率。lcd控制器可以进行编程控制相应的寄存器值,以适应不同的lcd显示板。3.2 lcd控制器逻辑框图 图3.1为lcd控制器的逻辑框图。从框图可以看出lcd控制器是用来实现传输显示数据及产生必要的控制信号,如vframe、vline、vclk和vm。除了控制信号,还有显示数据的数据端口vd7:0。图3.1 为lcd控制器的逻辑框图lcd控制器包括regbank、lcddma、vidprc
11、s和timegen。regbank有18个可编程寄存器,用于配置lcd控制器。lcddma为专用dma,可以自动地将显示数据从帧内存传送到lcd驱动器中。通过专用dma,可以实现在不需要cpu介入的情况下显示数据。vidprcs从lcddma接收数据,将相应格式的数据通过timegen(包含可编程逻辑),以支持常见的lcd驱动器所需要的不同接口时间和速率的要求。timegen部分产生vframe,vline,vclk和vm等信号。3.3 lcd控制器提供的外部接口信号vframe:lcd控制器和驱动器之间的帧同步信号。通知lcd屏新的一帧显示,lcd控制器在一个完整帧显示后发出vframe信号
12、。vline:lcd控制器和驱动器间同步脉冲信号。lcd驱动器通过它将水平移位寄存器的内容显示到lcd屏上。lcd控制器在一整行数据全部传输到lcd驱动器后发出vline信号。vclk:lcd控制器和驱动器之间的象素时钟信号。vm:lcd驱动器所使用的交流信号。驱动器用vm打开或关闭象素的行和列电压极性。vd3:0:lcd象素数据输出端口。vd7:4:lcd象素数据输出端口。4 lcd控制器的寄存器lcd控制器通过18个可编程寄存器来配置lcd显示模块的尺寸、显示模式、接口数据宽度等。4 .1 lcd控制寄存器一(lcdcon1)lcdcon1所在地址:0x01f00000;属性:r/w;复位
13、值:0x00000000。lcdcon1中各个位的意义见表4.1:表4.1 lcdcon1中各个位的意义4.2 lcd控制寄存器二(lcdcon2)lcdcon2的地址:0x01f00004;属性:r/w;复位值:0x00000000。lcdcon2中各个位的意义见表4.2:表4.2 lcdcon2中各个位的意义4.3 lcd控制寄存器三(lcdcon3)lcdcon3的地址:0x01f00040;属性:r/w;复位值:0x00。lcdcon3中各个位的意义见表4.3:表4.3 lcdcon3中各个位的意义4.4 帧缓冲区开始地址一(lcdsaddr1)lcdsaddr1的地址:0x01f00
14、008;属性:r/w;复位值:0x000000。lcdsaddr1中各个位的意义见表4.4:表4.4 lcdsaddr1中各个位的意义4.5 帧缓冲区开始地址二(lcdsaddr2)lcdsaddr2的地址:0x01f0000c;属性:r/w; 复位值:0x000000。lcdsaddr2中各个位的意义见表4.5:表4.5 lcdsaddr2中各个位的意义用户通过改变lcdbaseu和lcdbasel的值来滚动屏幕,但在帧结束时,不能改变lcdbaseu和lcdbasel的值,因为预取下一帧的数据优先于改变帧,如果这时改变帧,预取的数据将无效而且显示不正确。为了检查linecnt,应当屏蔽中断
15、,否则如果在读linecnt后,任意中断刚好执行,因为isr的执行,linecnt的值可能无效。 缓冲区开始地址三(lcdsaddr3)lcdsaddr3的地址:0x01f00010;属性:r/w;复位值:0x000000。lcdsaddr3中各个位的意义见表6:注:pagewidth和offsize必须在envid=0时变化。5 内置lcd控制器的应用lcd控制器能与大多数lcd显示模块接口,例如dmf50081,kcs057qv1aj等。kcs057qv1aj是由kyocera公司生产,具有320 240个象素点、带cfl背光的stn(超扭曲向列)256色lcd显示模块。它不带lcd控制器
16、,很容易与s3c44b0x内置的lcd控制器接口。本节将详述它与lcd控制器的硬件接口连线以及它的驱动程序。lcd控制器与kcs057qv1aj接口设计kcs057qv1aj提供的外部接口信号线如下:frm:驱动器扫描的同步信号线;load:数据锁存信号线;cp:数据移位时钟信号线;disp:显示控制信号线;d7:0:8根显示数据输入线。在kcs057qv1aj与lcd控制器之间接线时,kcs057qv1aj的frm、load、cp、d7:0分别和lcd控制器的vframe、vline、vclk、vd7:0相连。disp引脚与s3c44b0x的gpio的gpc15相连,通过gpc15来控制lc
17、d显示模块的打开和关闭。具体接线如图5.1。图5.1 lcd控制器与kcs057qv1aj接线图kcs057qv1aj驱动程序开发 驱动程序包括初始化s3c44b0x端口d和端口c的函数,初始化lcd控制器的函数,打开和关闭lcd显示模块的函数,在lcd显示模块上显示条纹的函数,所有的函数都有详细的注释。初始化端口d和端口c函数如下:void port_init(void)rpconc=0x5f55ffff;/gpc15为输出端口,gpc4-gpc7分配给lcd数据线vd7-vd4;rpupc=0x0;/端口c所有的引脚上拉允许;rpdatc=0x3fff; /端口c所有的引脚初始化为高电平;
18、rpcond=0xaaaa;/端口d所有的引脚分配给lcd控制器;rpupd=0x0;/端口d所有的引脚上拉允许;rpdatd=0xff;/端口d所有的引脚初始化为高电平。初始化lcd控制器函数如下:void lcd_init()int i;u32 lcdbaseu,lcdbasel,lcdbank;lcddisplayopen(false);/关闭lcd;rlcdcon1=(0);/关闭视频输出;rlcdcon2=(239) (11910) (1522;/设置显示缓冲区首地址在系统存储器中的位置;lcdbaseu=0x0;/设置缓冲区的开始地址;lcdbasel=lcdbaseu+(160)
19、 240;rlcdsaddr1=(0x327) (lcdbank21) lcdbaseu; /设置显示模块为彩色模式等;rlcdsaddr2=(029) (021) lcdbasel;rlcdsaddr3=(320/2) (09);/不使用虚屏;rredlut=0xfca86420;/设置红色查表寄存器,与特定的显示要求有关;rgreenlut=0xfca86420;/设置绿色查表寄存器,与特定的显示要求有关;rbluelut=0xfffffa50;/设置兰查表寄存器,与特定的显示要求有关;rlcdcon1=lcdcon1_envid 01 02 03 (25)17 (0x38) (0x310
20、) (clkval12);/使能视频输出,8位单扫描方式,设置wdly,wlh,clkval;for(i=0;i80*240;i+)/显示缓冲区清零。*(plcdbuffer16+i)=0x0;从图2知,gpc15用来打开关闭lcd。打开和关闭lcd显示模块的函数如下:void lcddisplayopen(u8 isopen)if(isopen)rpdatc =0x8000;/打开lcdelserpdatc&=0x7fff;/关闭lcd在lcdbank寄存器中已经定义了显示缓冲区在系统存储器的段首地址为0xc000000,要显示字符、图片只需将字符、图片取模得到的数据送到该缓冲区就可以了。但
21、是要注意,彩色lcd是8位数据表示一个象素。对缓冲区首地址进行如下定义:u32 plcdbuffer16=(u32*)0xc000000;下面举一个在整个屏上显示明暗相间的条纹的程序,显示明暗条纹函数如下:void lcdstripe ()int i,lcddata;for(i=0;i(320*240)/4;i+) lcddata0=0x0ffff0000; *(plcdbuffer16+i)=lcddata;/向帧缓冲区送数据,每次4个象素的数据。6 主要功能的设计与实现本实验主要是实现基于lcd模拟三角形的运动,通过在main()函数中修改并加入相应的实现代码,绘图api函数在glib.c
22、文件中。可以在lcd显示屏上看到一个三角形在屏幕的进行运动,具体的实现代码如下:;* 文件名称 : main.c;* 文件功能 : 所有应用程序的头文件均加在此文件中;* 补充说明 : #include .incconfig.hextern gui_font gui_font8x16;extern gui_font chinese_font12;extern gui_font chinese_font16;- 函数名称 : main(void)- 函数说明 : 系统的主程序入口- 输入参数 : 无- 输出参数 : 无void main(void) target_init(); gui_init
23、(); set_color(gui_green); fill_rect(0,0,319,239); delay(1000); set_color(gui_white); delay(1000); fill_rect(0,0,319,239); set_color(gui_black); delay(1000); fill_rect(0,0,319,239); delay(1000); set_color(gui_yellow); fill_rect(0,0,319,239); delay(1000); set_color(gui_blue); fill_rect(0,0,319,239); d
24、elay(1000); set_color(gui_red); draw_circle(100,100,50); delay(1000); draw_point (100, 200); /绘制点api delay(1000);draw_hline (100, 3, 319); /绘制水平线apidelay(1000);draw_vline (0, 150, 239); /绘制竖直线apidelay(1000);draw_line (0,0,319,239);delay(1000);draw_line (319,0,0,239);delay(1000); fill_circle (80, 180
25、, 40); delay(1000);fill_rect (280, 200, 300, 220); /填充区域api delay(1000); set_font (&gui_font8x16); /设定字体类型apiset_color(gui_white);set_bkcolor (gui_blue); /设定背景颜色apifill_rect(0,0,319,3);fill_rect(0,0,3,239);fill_rect(316,0,319,239);fill_rect(0,236,319,239); disp_string (this is a demo,130,70); set_fo
26、nt (&chinese_font12); disp_string (cn_start这是一个例程cn_end,130,90); set_font (&chinese_font16); disp_string (cn_start这是一个例程cn_end,130,110); while(1);结束语通过对嵌入式系统将近两个星期的实践学习,我对嵌入式有了进一步的了解。无论是从概念上还是内涵上都达到了一个新的高度。通过学习,我发现随着信息技术的发展,数字化产品空前繁荣。嵌入式软件已经成为数字化产品设计创新和软件增值的关键因素,是未来市场竞争力的重要体现。由于数字化产品具备硬件平台多样性和应用个性化的特点,因此嵌入式软件呈现出一种高度细分的市场格局,国外产品进入也很难垄断整个市场,这为我国的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿物加工厂安全文化建设与培训考核试卷
- 内蒙古自治区北京八中乌兰察布分校2025届高三物理试题模拟试题含解析
- 四川省绵阳市三台县2025年初三4月考语文试题文试题含解析
- 内蒙自治区乌兰察布市集宁二中2025届高三第二次高考模拟考试数学试题试卷含解析
- 山东圣翰财贸职业学院《分镜头设计》2023-2024学年第二学期期末试卷
- 苏州城市学院《科技文献阅读》2023-2024学年第二学期期末试卷
- 山东济南市市中区2025年六年级下学期模拟数学试题含解析
- 山东省沾化县重点名校2025年初三第二次模考英语试题文试题含答案
- 明达职业技术学院《社会统计学》2023-2024学年第二学期期末试卷
- 天津电子信息职业技术学院《材料组织结构的表征》2023-2024学年第二学期期末试卷
- 四大名著文学常识单选题100道及答案解析
- 航空与航天学习通超星期末考试答案章节答案2024年
- 营销策划 -2024凯乐石冲锋衣品牌小红书营销方案
- 形象艺术设计智慧树知到答案2024年西安工程大学
- 餐饮服务初级试题练习附有答案
- 2024年1月浙江省普通高校招生选考物理试题和答案
- 项目验收通知书模板
- 紧密型县域医共体总医院一体化运行工作方案
- 2025年山东省春季高考模拟考试英语试卷试题(含答案详解)
- 子宫脱垂护理
- Pep 新版小学英语六年级下册一般过去时复习课教案
评论
0/150
提交评论