收藏 分享(赏)

《汽车总线技术》实验指导书new.doc

上传人:dreamzhangning 文档编号:2332726 上传时间:2018-09-10 格式:DOC 页数:47 大小:2.68MB
下载 相关 举报
《汽车总线技术》实验指导书new.doc_第1页
第1页 / 共47页
《汽车总线技术》实验指导书new.doc_第2页
第2页 / 共47页
《汽车总线技术》实验指导书new.doc_第3页
第3页 / 共47页
《汽车总线技术》实验指导书new.doc_第4页
第4页 / 共47页
《汽车总线技术》实验指导书new.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、汽车总线技术实验指导书王思山 编梁玉红 审湖北汽车工业学院电气与信息工程学院电子信息系2010 年 05 月目录第 1 章 汽车总线实验箱开发基础知识 .11.1 汽车总线实验平台简介 11.2 实验平台硬件资源 11.3 实验平台软件资源 21.4 实验平台硬件构架 21.5 开发软件介绍 31.6 实验开发步骤介绍 3第 2 章 基础实验 .12.1 熟悉 FREESCALE CODEWARRIOR 开发环境 1一、实验目的 1二 、 预备知识 1三 、 实验设备及工具 (包括软件调试工具) 1四 、 实验原理 1五 、 实验内容 2六 、 实验步骤 2七 、 总结体会 62.2 LCD

2、驱动设计实验 1一、实验目的 1二、预备知识 1三、实验设备及工具(包括软件调试工具) 1四、实验原理 1五、实验内容 9六、实验步骤 9七、总结体会 102.3 温度采集实验 11一、实验目的 11二、预备知识 11三、实验设备及工具(包括软件调试工具) 11四、实验原理 11五、实验内容 17六、实验步骤 17七、总结体会 182.4 AD 转换采集实验 19一、实验目的 19二、预备知识 19三、实验设备及工具(包括软件调试工具) 19四、实验原理 19五、实验内容 23六、实验步骤 23七、总结体会 242.5 直流电机控制实验 251一、实验目的 25二、预备知识 25三、实验设备及

3、工具(包括软件调试工具) 25四、实验原理 25五、实验内容 30六、实验步骤 30七、总结体会 312.6 步进电机控制实验 32一、实验目的 32二、预备知识 32三、实验设备及工具(包括软件调试工具) 32四、实验原理 32五、实验内容 36六、实验步骤 37七、总结体会 38第 3 章 LIN 总线通信实验 .393.1 汽车 LIN 总线基础通信实验 39一、实验目的 39二、预备知识 39三、实验设备及工具(包括软件调试工具) 39四、实验原理 39五、实验内容 44六、实验步骤 44七、总结体会 453.2 车窗模拟控制实验 .46一、实验目的 46二、预备知识 46三、实验设备

4、及工具(包括软件调试工具) 46四、实验原理 46五、实验内容 49六、实验步骤 49七、总结体会 503.3 基于 LIN 通信的收音机控制实验 .51一、实验目的 51二、预备知识 51三、实验设备及工具(包括软件调试工具) 51四、实验原理 51五、实验内容 55六、实验步骤 56七、总结体会 56第 4 章 CAN 总线通信实验 .574.1 汽车 CAN 总线基础通信实验 .57一、实验目的 57二、预备知识 57三、实验设备及工具(包括软件调试工具) 572四、实验原理 57五、实验内容 62六、实验步骤 63七、总结体会 644.2 汽车仪表控制实验 65一、实验目的 65二、预

5、备知识 65三、实验设备及工具(包括软件调试工具) 65四、实验原理 65五、实验内容 65六、实验步骤 65七、总结体会 674.3 汽车 CAN 总线多节点通信实验 .68一、实验目的 68二、预备知识 68三、实验设备及工具(包括软件调试工具) 68四、实验原理 68五、实验内容 68六、实验步骤 69七、总结体会 71第 5 章 网关通信实验 .725.172一、实验目的 72二、预备知识 72三、实验设备及工具(包括软件调试工具) 72四、实验原理 72五、实验内容 73六、实验步骤 73七、总结体会 75附录 .761第 1 章 汽车总线实验箱开发基础知识1.1 汽车总线实验平台简

6、介汽车总线技术实验箱是具有汽车 CAN 和 LIN 双总线实验、教学和科研设备,通过汽车 CAN总线和 LIN 总线的通信模拟对汽车的车速、转速、仪表显示、灯系、收音机、车窗和网关的控制。本实验箱具有多 CPU、多节点、双总线、多种控制对象和支持高层协议等特点。汽车总线技术实验箱是面向汽车电子、车辆工程专业的实验、教学和科研平台,可用于汽车电子相关专业课程的实验教学,也可用于基于 CAN 总线和 LIN 总线的科学研究。提供多个实验例程,使用成熟总线协议栈和设备驱动库,便于熟悉和掌握汽车总线技术的原理、应用。1.2 实验平台硬件资源实验平台实物图如下图 1.1 所示。各模块的具体功能如下:图

7、1.2.1 实验平台实物图 CPU 主板: CPU 为 MC9S08DZ60,4M 晶振,复位按键,6 针 ISP 接头 发动机节点:车速直流电机、传感器及车速显示;发动机转速直流电机、传感器及发动机速度显示 仪表节点:车速、发动机转速和水温的步进电机显示;油量显示;压力显示;里程表显示;左右转向灯 传感器节点:水温传感器及显示;油量传感器及显示;压力传感器及显示;加速踏板模拟;档位模拟 车载收音机节点:搜台、存台、上步进调台、下步进调台;显示频率;搜台成功指示 灯系节点:刹车灯指示;转向左转指示;转向右转指示; 收音机、灯系控制节点:刹车控制、转向控制;搜台、存台、上步进调台、下步进调台;显

8、示相关信息车载收音机天线车载收音机节点灯系节点发动机节点仪表节点步进电机三档开关编程节点收音机灯系控制节点网关节点传感器节点档位开关2 网关节点:CAN 总线数据包指示;LIN 总线数据包指示 编程节点:主要包括温度传感器;直流电机及测速 1 个;步进电机及其驱动 2 个 RS232 模块:可以用于调试,也可以用于串口下载 CAN 接口:TJA1050 LIN 接口:TJA1020 液晶:两个电压 3.3V, 128*64 点 LCD;一个 5V 供电, 3.3VI/O,分辨率为 320*2403.5寸 TFTLCD实验箱硬件配套资源: 220V 电源线 下载器 收音机天线1.3 实验平台软件

9、资源汽车总线技术实验箱配有实验指导书方便实验教学。支持最新的 CodeWarrior for Microcontrollers v10.1 和 CodeWarrior Development Studio v6.3。汽车总线实验装置可以开设的实验项目有: 汽车 LIN 总线基础通信实验 汽车 LIN 总线模拟控制实验 汽车 CAN 总线基础通信实验 汽车 CAN 总线模拟控制实验 LIN 总线和 CAN 总线网关通信实验 基于 LIN 通信的收音机控制实验 车灯控制实验 仪表控制实验 发动机模拟控制实验 J1939 协议通信实验1.4 实验平台硬件构架实验平台的硬件框图如下图 1.4.1 所示

10、:3C A N 节点 C A N 节点C A N 节点L I N 节点L I N 节点 L I N 节点发动机节点 仪表节点传感器节点车载收音机节点 灯系节点收音机 , 灯系控制节点自由编程节点网络控制 、 监视及网关键盘及显示传感器及控制对象键盘及显示L I N 总线C A N 总线图 1.4.1 实验平台功能框图1.5 开发软件介绍CodeWarrior 是 Metrowerks 公司研发的专门面向 Freescale 所有 MCU 与 DSP 嵌入式应用开发的软件工具,是 Freescale 向用户推荐的产品。Metrowerks 公司是 Motorola 公司于 1999 年收购的、独

11、立运行的子公司。CodeWarrior 分为 3 个版本:特别版、标准版和专业版。特别版是免费的、用于教学目的,对生成的代码量有一定限制,C 代码不得超过 12KB,对工程包含的文件数目限制在 30 个以内。标准版和专业版没有这种限制。3 个版本的区别在于用户所获得的授权文件不同,特别版的授权文件随安装软件附带,不需要特殊申请,标准版和专业版授权文件需要付费,同其他商业软件一样,付费前有 1 个月的试用期。CodeWarrior 特别版、标准版和专业版的定义随所支持的微处理器的不同而不同。CodeWarrior IDE 是飞思卡尔半导体公司推出的一款支持多种硬件平台的集成开发环境,CodeWa

12、rrior for Microcontrollers v6.3,可以为 RS08、HC(S)08 以及 ColdFire V1 等微控制器的设计提供快速高效的开发工 具,实现源程序编辑、编译以及全片模拟、在线仿真等诸多功能。1.6 实验开发步骤介绍1、接通电源,打开电源开关2、连接下载器,一端通过 USB 连接线与主机 USB 接口连接,一端与实验箱 CPU 主板BDM(Background Debug Mode 后台调试模式) 口连接。3、下面以 HCS08DZ60 的 C 语言为例简单介绍在 CodeWarrior for Microcontrollers v6.3 集成开发环境中的开发过

13、程。具体可见附录中的 CodeWarrior for Microcontrollers 教程。4 运行 CodeWarrior IDE。点击桌面快捷方式图表或选择“开始程序Freescale CodeWarrior CodeWarrior for Microcontrollers v6.3CodeWarrior IDE”打开 CodeWarrior 集成开发环境。如下图1.6.1 所示。单击图 1.6.1 CodeWarrior 集成开发环境主界面 点击 Create New Project 或通过菜单选择“File New Project”进入建立微控制器新工程界面,如图 1.6.2 所示。

14、图 1.6.2 微控制器新工程建立界面 选择微控制器型号和连接方式(Connections) ,连接方式默认选择为“Full Chip Simulation”。微控制器型号和连接方式在工程建立后,也可以在工程属性栏根据需要进行修改。 单击下一步进入工程名称、存放路径、开发语言设置界面、输入工程名称、制定工程存放在库中找到MCS09DZ605路径、选择相应的开发语言,如图 1.6.3 所示。命名选择存放路径选择开发语言图 1.6.3 工程名称、存放路径、开发语言设置界面 点击下一步进入工程文件添加、移除界面,如图 1.6.4 所示。可以对新工程的文件进行添加、移除管理。图 1.6.4 工程文件添

15、加、移除界面 点击下一步进入快速应用开发设置界面,如图 1.6.5 所示,可以选择期间初始化和“Processor Expert”工具自动生成初始化代码。图中选择“None ”则不生成任何器件初始化代码,工程中只包含启动代码(Startup Code) 。6图 1.6.5 快速应用开发设置界面 点击下一步进入开发语言设置界面,出现 C/C+设置界面,如图 1.6.6 所示,可以选择启动代码的类型、使用存贮器的模式以及浮点数支持方式。图中分别选择“ANSI 启动代码(ANSI startup Code) ”“小型存贮器的模式(Small) ”和“不支持浮点数( None) ”。图 1.6.6 开

16、发语言设置界面 点击下一步进入 PC-lint(TM)设置界面,如图 1.6.7 所示。PC-lint(TM)是 Gimpel 软件公司开发的程序调试工具,图中选择“No ”。7图 1.6.7 PC-lint(TM)设置界面 点击完成系统会根据上面的设置信息创建新工程,新工程窗口如图 1.6.8 所示。图 1.6.8 工程窗口 在工程窗口中进行程序编写,编写好后进行进行编译,如图 1.6.9 所示。主机通过 USB 口与调试工具相连,调试工具通过 BDM 插头与目标板(实验箱)相连。主机、调试工具、目标板(实验箱)三者缺一不可。8单击编译图 1.6.9 程序编译 点击编译后自动弹出调试窗口,并

17、依次出现如图 1.6.10 所示对话框。单击图 1.6.10 对话框9单击运行图 1.6.11 运行图这样就可以将调试通过的程序下载到目标硬件进行在线调试运行了。1第 2 章 基础实验2.1 熟悉 Freescale CodeWarrior 开发环境一、实验目的1、认识实验箱结构,熟悉实验箱操作;2、熟悉软件开发环境 Freescale CodeWarrior;3、熟悉 MCU MC9S08DZ60 和 GPI/O 的结构及其使用。二、预备知识C 语言的基础知识、程序调试的基础知识和方法,Freescale CodeWarrior 集成开发环境的基本操作以及 MCU MC9S08DZ60 和

18、GPI/O 的结构。三、实验设备及工具硬件:汽车总线技术试验箱、DBM、PC 机 Pentumn500 以上,硬盘 10G 以上。软件:Freescale CodeWarrior for MCU v6.3 集成开发环境。四、实验原理MC9S08DZ60 系列 MCU 最多可提供 53 个通用 I/O 管脚和 1 个专用输入管脚。这些管脚和片上外围设备(定时器、串行 I/O、ADC、MSCAN 等)共享。通过端口数据寄存器执行并行输入/ 输出读取/ 写入。不管是输入还是输出方向,都由端口数据 方向寄存器控制。数据方向控制位(PTxDDn )决定是否启动相关管脚使用的输出缓冲器,同时控制端口数据寄

19、 存器读取的源。相关管脚的输入缓冲器总是处于使能状态,除非管脚用作模拟功能或输出管脚。当一个端口管脚被配置为通用输出时,或者某外围设备使用该端口管脚作为输出时,通过软件可以在两个驱动强度中选择一种并同时启用或禁用斜率控制。当一个端口管脚被配置为通用输入或 某外围设备使用该端口管脚作为输入时,软件可以选择一个上拉器件。复位完成后,所有这些管脚被立即配置为高阻抗通用输入(内部上拉器件被禁用) 。当一个片上外围系统控制管脚时,即使该外围模块通过控制该管脚的输出缓冲器的启用来控制管脚方向时,仍然由数据方向控制位决定从端口数据寄存器中读取的内容。一个不错的编程习惯是在把端口管脚方向修改为输出前就写入端口

20、数据寄存器,这确保不会用2在 端口数据寄存器内的旧数据值来临时驱动管脚。五、实验内容本次实验要求熟练使用 Freescale CodeWarrior 集成开发环境,掌握在 Freescale CodeWarrior 开发环境下进行源代码编写和编译,并通过 DBM 接口下载已经编译好的程序到汽车总线技术实验箱中的编程节点中运行。六、实验步骤1、编程实现对 LED 的控制本步骤是实现对汽车总线技术试验箱中编程节点的两个 LED(D14、D15 ) (原理图与实物图如图 2.1.1 所示)同时闪烁。图 2.1.1 LED 原理图与实物图#include void main( void )MCG_In

21、it();DZ60_GPIO_Init();EnableInterrupts;while( 1 ) LED_Trigger(2); Cpu_Delay100US(2000); 其中头文件中包含 MC9S08DZ60.H,msCANdrv.h ,dz60_libs.h,分别是用来对 MC9S08DZ60端口的定义,对 msCAN 端口的定义以及对 MC9S08DZ60 库的定义。这些头文件在之后的实验中会以模板形式给出。void MCG_Init( void) /主板的初始化,在 dz60_libs.c 中定义3SOPT1 = 0x20; MCGC2 = 0x36; while (!MCGSC_

22、OSCINIT);MCGC1 = 0xB8; while (!MCGSC_IREFST); while (MCGSC_CLKST != 0b10); MCGC2 = 0x3E;MCGC1 = 0x98;MCGC3 = 0x48;while (!MCGSC_PLLST);MCGC2 = 0x36;while (!MCGSC_LOCK);MCGC1 = 0x18;while (MCGSC_CLKST != 0b11); void DZ60_GPIO_Init( void) / MC9S08DZ60 GPIO 口初始化,在 dz60_libs.c 中定义 LED_Init();/*本步骤只涉及到两个

23、 LED 灯,故只有两个 LED 对应端口的定义以及初始化,在 dz60_libs.c 中定义*/#define LED_TOP0 PTDD_PTDD0#define LED_TOP1 PTDD_PTDD1 #define LED_Init() PTDDD|= 0x03#define EnableInterrupts _asm CLI; /设置中断void LED_Trigger( UINT8 bits) /控制 LED 闪烁,在 dz60_libs.c 中定义if(bits = 0) LED_TOP0 = 0x01; else if(bits = 1) LED_TOP1 = 0x01; el

24、se if(bits = 2) LED_TOP0 = 0x01; LED_TOP1 = 0x01; void Cpu_Delay100US(UINT32 us100) /延迟,在 dz60_libs.c 中定义asm 4loop:pshh pshx ldhx #$0061 label0:aix #-1 cphx #0 bne label0 pulx pulh nop nop nop aix #-1 cphx #0bne loop rts 连接下载器,一端通过 USB 连接线与主机 USB 接口连接,一端与实验箱编程节点的 CPU 主板的 BDM 口连接,将程序下载到编程节点的主板上。2、编程实

25、现按键控制 LED在第 2 步基础之上,在编程节点模块中,实现用按键(S15、S16)分别控制LED(D14、D15 )的亮灭。当按键 S15 按下时 LED(D15)亮,当按键 S16 按下时 LED(D14)亮。按键原理图与实物图如下图 2.1.2 所示。注意:为了避免悬空输入管脚消耗额外的电流,应用程序中的复位初始化程序应该启用片内上拉器件或将未使用或未绑定的管脚的方向设置为输出以确保他们不会悬空。按键按下时,对应的端口为零。图 2.1.2 按键原理图与实物图5以下是部分关键代码介绍,请在第 2 步源程序基础上改进完成本步骤程序。/*本步骤只涉及到两个按键,故只有两个按键对应端口的定义以

26、及初始化,在 dz60_libs.c 中定义*/#define switch_top0 PTBD_PTBD4#define switch_top1 PTBD_PTBD5#define switch_Init() PTBDD void LED_On( UINT8 bits) /LED 亮控制if(bits = 0) LED_TOP0 = 0x01; else if(bits = 1) LED_TOP1 = 0x01; else if(bits = 2) LED_TOP0 = 0x01; LED_TOP1 = 0x01; void LED_Off( UINT8 bits) /LED 灭控制if(b

27、its = 0) LED_TOP0 = 0x00; else if(bits = 1) LED_TOP1 = 0x00; else if(bits = 2) LED_TOP0 = 0x00; LED_TOP1 = 0x00; 填写主程序代码:6七、总结体会12.2 LCD 驱动设计实验一、实验目的1、了解 LCD 基本概念与原理。2、理解 LCD 的驱动控制。3、熟悉用总线方式驱动 LCD 模块。二、预备知识C 语言的基础知识、程序调试的基础知识和方法,Freescale CodeWarrior 集成开发环境下编写和调试程序的基本过程。三、实验设备及工具硬件:汽车总线技术试验箱、DBM、PC

28、机 Pentumn500 以上,硬盘 10G 以上。软件:Freescale CodeWarrior for MCU v6.3 集成开发环境。四、实验原理驱动设计是汽车总线实验箱的开发中十分重要的部分,它要求开发者不仅要熟悉驱动程序与应用程序的接口关系而且还要非常熟悉所开发硬件的工作原理。这对驱动开发者提出了比较高的要求,这个实验主要是给大家进入驱动设计提供一个简单入门的实例。驱动程序的作用是应用程序与硬件之间的一个中间软件层,驱动程序应该为应用程序展现硬件的所有功能,不应该强加其他的约束,对于硬件使用的权限和限制应该由应用程序层控制。但是有时驱动程序的设计是跟所有开发的项目相关的,这是就可以

29、在驱动层加入一些与应用相关的设计考虑。1、LCD(Liquid Crystal Display)原理液晶得名于其物理特性:它的分析晶体,以液态存在而非固态。这些晶体分子的特性特征使得它具有两种非常有用的特点:1、如果让电流通过液晶层,这些分子将会以电流的流向方向进行排列,如果没有电流,它们将会彼此平行排列。2、如果提高了带有细小沟槽的外层,将液晶倒入后,液晶分子会顺着槽排列,并且内层与外层以同样的方式进行排列。液晶的第三个特性是很神奇的:液晶层能使光线发生扭转。液晶层表现的有些类似偏光器,这就意味着它能够过滤除了那些从特殊方向射入之外的所有光线。此外,如果液晶层发生了扭转,光线将会随之扭转,以

30、不同的方向从另外一个面中射出。2、LCD 液晶显示器的硬件结构液晶显示的原理是液晶在不同电压的作用下会呈现不同的光特性.液晶在物理上分成两大类,2一类是无源 Passive 的(也称被动式 ),这类液晶本身不发光 ,需要外部提供光源,根据光源位置,又可以分为反射式和透射式两种。Passive 液晶显示的成本较低,但是亮度和对比度不大,而且有效视角较小,彩色无源液晶显示的色饱和度较小,因而颜色不够鲜艳。另一类是有电源的,主要是TFT (Thin Film Transitor)。每个液晶实际上就是一个可以发光的晶体管,所以严格地说不是液晶。液晶显示屏就是由许多液晶排成阵列而构成的,在单色液晶显示屏

31、中,一个液晶就是一个象素,而在彩色液晶显示屏中则每个象素由红绿蓝三个液晶共同构成。同时可以认为每个液晶背后都有个 8 位的寄存器,寄存器的值决定着三个液晶单元各自的亮度,不过寄存器的值并不直接驱动三个液晶单元的亮度,而是通过一个“调色板”来访问。3、MzT35C1 TFTLCD本汽车总线技术实验箱用到的 LCD 为 MzT35C1,它是一块高画质的 TFT 真彩 LCD 模块,模块内置 LCD 控制器以及驱动器,外部 8 位的 8080 总线接口,可方便的使用单片机对其进行连接控制,具有编程方便、易于扩展灯良好性能。MzT35C1 彩色 TFTLCD 显示模块的内置 LCD 控制器以及显存,其

32、背光可由指令控制(128 级可调) ,用户对 MzT35C1 模块进行操作时,实际上是对 LCD控制器进行相关的控制寄存器、显示数据存储器进行操作的。需要注意的是:MzT35C1 模块内部有两个图层的显存,但仅能通过指令来指定当前显示的显存,以及对哪一层显存进行操作;而当前显示的显存与操作的显存为同一屏显存时,此时对显存的操作便会直接体现与屏幕上。MzT35C1 模块在 PCB 背板上集成了一个 LCD 控制器以及显存、背光控制等电路,模块正面是一 3.5 寸 TFT 显示器,显示器通过 FPC 与背板进行连接,并由胶带将其固定在背板上;而模块以 DIP 的双排插针引出控制接口(8 位 808

33、0 并行总线)模块以便于用户连接。以下为模块接口介绍,如图 2.2.1 所示。图 2.2.1 模块接口示意图3表 2.2.1 模块接口引脚说明接口引脚 说明VCC 模块供电电源输入(一般无特殊要求为 5V)D0D7 8 位数据总线CS 片选(低电平有效)RST Reset 复位(低电平复位)A0 控制寄存器/数据寄存器选择(低电平控制寄存器)WE 写信号(低电平有效)RD 读信号(低电平有效)GND 接地S_CS 预留有 ADS7846 的片选S_SCK 预留有 ADS7846 的 SPI 时钟输入S_SDO 预留有 ADS7846 的 SPI 数据输出S_SDI 预留有 ADS7846 的

34、SPI 数据输入S_INT 预留有 ADS7846 的 INT 信号S_BUSY 预留有 ADS7846 的 BUSY 信号4、显示 RAM 区映射情况MzT35C1 模块的 3.5 英寸 TFT-LCD 显示面板上,共分布着 320240 个像素点,当打开显示时,面板上的像素点将与当前选择的显示层显示的数据一一对应;模块中每个像素点需要 16 位的数据(即 2 字节长度)来表示该点的 RGB 颜色信息,所以模块内置一屏的显存共有32024016bit 的空间,通常我们以字节(byte)来描述其大小。MzT35C1 模块的显示操作非常简便,需要改变某一个像素点的颜色时,只需要对该店所对应的 2

35、 个字节的显存(指的是两屏显存中当前处于显示的显存)进行操作即可。为了便于索引操作,模块将所有的显存地址分为 X 轴地址(X Address)和 Y 轴地址(Y Address) ,分别可以寻址的范围为 X Address0319,Y Address0239,X Address 和 Y Address 交叉对应着一个显存单元(2byte) ;这样只要索引到了某一个 X、Y 轴地址时,并对该地址的寄存器进行操作,便可对 TFT-LCD 显示器上对应的像素点进行操作了。提示:以上的描述意味着,当我们对某一地址上的显示进行操作时,需要对该地址进行连续两次的 8 位数据写入或读出的操作,方可完成对一个

36、显存单元的数据写入操作;除此之外,还应确认该层显存当前是处于显示的并且处于操作状态。MzT35C1 模块的像素点与显存对应关系如图 2.2.2所示:4图 2.2.2 显存与像素点对应关系示意图MzT35C1 模块内部有一个显存地址累加器 AC,即用于在读写显存是对显存地址进行自动的累加,这在连续对屏幕显示数据操作时非常有用,特别是应用在图形显示、视频显示时。此外,AC累加器为对 X Address 累加方式,具体为累加到一行的尽头时,会切换到下一行的起始开始累加。MzT35C1 模块内部有两屏的显存,但只能同时显示一屏的显存,用户可以通过指令来指定当前显示的显存图层,此外,还可以指定当前操作的

37、显存图层,也就是说显示着的图层可以与操作着的图层不一样。5、MzT35C1 模块控制方法对 MzT35C1 模块的操作主要分为两种,一是对控制寄存器的地址写入,二是对数据的读写操作;A0 控制线的高低电平状态区别当前的总线操作是对控制寄存器的地址写入还是对所指向的寄存器进行数据操作:当 A0 为低电平时,表示当前的总线操作是对控制寄存器的地址进行操作;当A0 为高电平时,表示对数据写入 /读出操作。MzT35C1 模块内部有控制寄存器,用户在使用 MzT35C1 之前以及对其进行操作过程当中,需要对一些寄存器进行写操作以完成 LCD 的初始化,或者是完成某些功能的设置(如当前显存操作地址设置等

38、) 。对控制寄存器进行操作前,需要对控制寄存器地址进行写入操作,以指明接下去的数据操作是针对哪一个寄存器。一般来说操作步骤如下:、在 A0 为低电平的状态下,写入一个字节的数据,该字节为寄存器地址。、然后在 A0 为高电平的状态下,写入两个字节数据,第一字节为高八位,第二字节为低八位;如要读出指定寄存器的数据,则需要连续三次读操作方能完成一次读出操作,第一字节为无效数据,第二字节为高八位,第三字节为第八位。注意:MzT35C1 的显存操作也是通过向指定的寄存器地址进行读写操作来完成的,即对 0x02寄存器进行操作时,就是对当前处于操作状态下的图层显存进行读写操作。MzT35C1 模块的控制寄存

39、器当中,最常被调用的是寄存器除了对显存操作的 0x02 寄存器外,还有当前显存地址的寄存器 AC,一共由两个寄存器组成,分别存放有 Y Address 和 X Address,表示当前对显存数据的读写操作是针对于该地址所指向的显存单元;而每一个显存单元在前面已经用5图示意过,每个单元有 16 位,最高的 5 位为 R(红)的分量,最低的 5 为为 B(蓝)的分量。如图 2.2.3 所示:图 2.2.3 显存单元示意图所以,当需要对 LCD 显示面板上某一点(X ,Y )进行操作时,需要先设置 AC,以指向需要操作的点所对应的显存地址,然后连续写入或者读出数据,才完成对该点的显存单元的数据操作。

40、而当对某一个显存单元完成写入数据操作后,AC 会自动的进行调整,将会指向同一行的下一个点,即 X 地址自动加 1,当 X 地址到达行末时,会自动将 X 地址清零并将 Y 地址自动加 1.注意:写入地址时,要先写入 Y 地址,然后再写入 X 地址。6、控制寄存器介绍为了能快速掌握 MzT35C1 模块的使用,这里列出 MzT35C1 模块内部控制寄存器,以便快速的掌握 MzT35C1 的驱动控制方法。表 2.2.2 控制寄存器说明(1)Y 地址寄存器(0x00):当 A0 为低电平时,从总线写入一个字节 0x00,此时将控制寄存器指向 Y 地址寄存器,该寄存器需设置 16 位寄存器数值,即为 Y

41、 轴地址,实际上高 8 位为无用数据,低 8 位为指定的寄存器地址(YA7YA0) 。注意:对 Y 地址寄存器进行数据写入操作完成后,寄存器地址自动指向 X 地址寄存器。(2)X 地址寄存器(0x00):当 A0 为低电平时,从总线写入一个字节 0x01,此时将控制寄存器指向 X 地址寄存器,该寄存器需设置 16 位寄存器数值,即为 Y 轴地址,实际上高 7 位为无用数据,低 9 位为指定的寄存器地址(XA8XA0) 。注意:对 Y 地址寄存器进行数据写入操作完成后,寄存器地址自动指向显存寄存器。(3)显存操作寄存器(0x02):当 A0 为低电平时,从总线写入一个字节 0x02,此时将控制寄

42、存器指向显存操作寄存器,此后再对总线进行数据读写操作时,将会写入或读出之前设置 Y、X 轴地址所指向的显存数据(指的是当前处于操作的图层显存) 。对该寄存器的数据读写操作时,一个完整的数据操作包含两个字节,共 16 位,分别定义为某一显存上的三原色分量的分布,如图 2.56所示,即为 RGB565 的格式。(4)背光设置寄存器(0x03):当 A0 为低电平时,从总线写入一个字节 0x03,此时将控制寄存器指向背光设置寄存器,该寄存器需设置 16 位的寄存器数值,bit7 位为背光开关控制,为 1 表示打开背光,为 0 表示关闭背光;bit6bit0 为背光的等级设置,可从 0127。(5)模

43、块设置寄存器(0x04):当 A0 为低电平时,从总线写入一个字节 0x04,此时将控制寄存器指向模块设置寄存器,该寄存器需设置 16 位的寄存器数值,bit7 位为当前显示图层设置(可为 0 或 1,分别表示 0 和 1 图层显存) ;bit6 为当前操作图层显存设置(可为 0 或 1,分别表示 0 和1 图层显存) ;bit0 为显示开关,为 1 表示打开显示,为 0 表示关闭显存。7、MzT35C1 模块驱动程序介绍(1)LCD 模块连接的端口定义(在 LCD_PortConfig.h 中定义)#define LCD_Ctrl_GPIO() PTDDD = 0x7c , PTCDD =

44、0xff #define LCD_Ctrl_Out()#define LCD_Ctrl_Set(n) PTDD |= (n)#define LCD_Ctrl_Clr(n) PTDD LCD_RE_CLR();TimeDelay(200);LCD_RE_SET();TimeDelay(500);LCD_RegWrite(0x03);LCD_DataWrite(0x80+70); /设置背光控制使能,设置背光亮度等级为 70(0127)LCD_RegWrite(0x04); /写系统寄存器LCD_DataWrite(MzT35_Ctrl_Reg);LCD_Fill(LCD_INITIAL_COLO

45、R);void LCD_PortInit(void) /LCD 连接的端口初始化代码,在 LCD_Driver_User.c 中定义LCD_Ctrl_GPIO();LCD_Ctrl_Out();LCD_Ctrl_Set(LCD_CS+LCD_RE+LCD_A0+LCD_RW+LCD_RD);LCD_Data_GPIO();LCD_Data_Out();(3)本实验所涉及到的功能函数介绍a) LCD_Init 液晶初始化(LCD_Dis.c 中定义)程序:void LCD_Init(void) 描述:液晶显示初始化函数参数:无返回:无注意:在使用 LCD 前,首先应执行该函数,使 LCD 处于可

46、以正常显示状态。b) SetPaintMode 绘图模式设置(LCD_Dis.c 中定义)程序:void SetPaintMode(BYTE Mode,LCDBYTE Color)描述:设置绘图模式,以及绘图的前景色参数:Mode 无意义(暂时保留其功能) ;Color 绘图时的前景色,16 为 RGB返回:无注意:无c) FontSet 设置文本字体(LCD_Dis.c 中定义)8程序:void FontSet(DOTBYTE Font_NUM,LCDBYTE Color)描述:选择显示字符的类型以及字符颜色参数:Font_NUM字符的类型选择为 1 时表示选择 15*29 点大小的西文字符

47、显示类型,其它值为用户自定义的汉字库/ 位图库使用。Color设置字符的颜色, 16 位的字型数据,RGB 格式,与 LCD 点的 RGB 对应。返回:无注意:只针对显示驱动中包含的 ASCII 码显示。d) PutString 显示字符串(LCD_Dis.c 中定义)程序:void PutString(DOTBYTE x,DOTBYTE y,char *p)描述:从 x、y 的坐标上显示字符串参数:x 显示字符的起始列(0239) ;y 显示字符的起始行(0319) ;p 要显示的字符串。返回:无注意:仅能用于自带的 ASCII 码字符串显示。e) Rectangle 画矩形(LCD_Dis

48、.c 中定义)程序:void Rectangle(DOTBYTE left, DOTBYTE top, DOTBYTE right, DOTBYTE bottom, BYTE Mode)描述:画矩形程序参数:left 矩形的左上角横坐标;top 矩形的左上角纵坐标;right 矩形的右下角横坐标;bottom 矩形的右下角纵坐标;Mode - 绘制模式,可以是下列数值之一:0: 矩形框(空心矩形)1: 矩形面(实心矩形) 返回:无注意:无f) Line 画直线(LCD_Dis.c 中定义)程序:void Line(LCDBYTE s_x,LCDBYTE s_y,LCDBYTE e_x,LCDBYTE e_y)描述:以绘图前景色在 s_x,s_y 为起始坐标,e_x,e_y 为结束坐标绘制一条直线参数:s_x 要画直线的 x 起点坐标;s_y 要画直线的 y 起点坐标;e_x 要画直线的 x 终点坐标;e_y 要画直线的 y 终点坐标;返回:无注意:无9五、实验内容学习 LCD 显示器的基本原理,理解其驱动控制方式,掌握其驱动方法的基本原理和方法,并用编程实现本次实验要求在 PC 机上编写 LCD 的驱动程序并进行调试,并实现对 LCD 的显示控制。六、实验步骤1、在编程节点中,通过编程实现对其 LCD 液

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报