毕业设计(论文)-基于LPC2148的功能模块开发应用.doc_第1页
毕业设计(论文)-基于LPC2148的功能模块开发应用.doc_第2页
毕业设计(论文)-基于LPC2148的功能模块开发应用.doc_第3页
毕业设计(论文)-基于LPC2148的功能模块开发应用.doc_第4页
毕业设计(论文)-基于LPC2148的功能模块开发应用.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安欧亚学院本科毕业论文(设计)1 绪论1.1 技术背景从8位单片机到目前的32位ARM微处理器,微型计算机技术的开发应用日臻成熟。RISC 32位ARM核的微处理器,具有高速、低耗、多功能等独特亮点。尤其是微型操作系统的嵌入,实现了ARM嵌入式系统高实时性、高可靠性、多任务管理等优异特性,成为真正意义上的嵌入式系统。目前,嵌入式系统的应用已遍及网络、通讯、信息家电、工业控制、航空、航天等高端应用领域,基于ARM技术的微处理器应用占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到人们生活的各个方面,越来越多的开发人员开始了基于ARM平台的开发。1.2 选题意义1.2.1 ADC的作用采集是认知的开始、测量的前提、分析的基础,绝大多数的电子设备、仪器都是以数据采集技术为基础。随着电子技术和数字技术的飞速发展,信号的传输速度和CPU的处理速度越来越快,因此对数据采集和处理的要求也越来越高。模数转换器是用来把模拟输入信号(通常是电压)转换成等效数字量的装置。其形式从单片集成电路到高性能的组件都有,模数转换器关键的特性是绝对和相对精度、线性度、单调性、分辨率、转换速度、稳定性以及价格,还有一些可供选用的其他技术性能,诸如输入范围、数字输出编码以及实际尺寸等。模拟数据以数字形式收集后可便于存贮、传送、处理和显示,因此,模数转换在音、视频信号处理、电子测量和工业控制等领域得到了广泛的应用。1.2.2 基于ARM的ADC模块开发意义数据采集系统用于电子测量和工业控制系统。采集到的信号通过A/D转换(即数据采集),送入微处理器主控单元。高速系统对ADC模块的要求很高,低端MCU及ADC模块难以满足高性能的应用要求,因而,大多数开发人员将目光瞄向了ARM芯片的模数转换器,因为其具有高速、多路、价廉等明显优势。我选择基于ARM的ADC模块开发题目,希望通过对于ADC模块的开发,能为日后的运用打下良好的基础。1.3 开发设计方案本课题设计是根据我校老师自主研制的ARM实验板进行设计开发的。用IAR软件对各个模块进行程序编写并进行调试,当程序调试无误后,将程序下载到ARM实验板上,用电压源提供一个电压,送到ARM实验板中,经过模数转换器,将输入的模拟信号(电压)转换成数字信号,再通过LCD显示出所采集到的数字信号。图1-1 整机工作框图如上图所示,由信号源输出,提供3V电压,通过电位器送到LPC2148的ADC模块中,经过模数转换,将得到的数字信号储存到寄存器中,并送到LCD,显示出对应的数据。2 功能模块说明2.1 ARM主控芯片(LPC2148)2.1.1 工作特性LPC2148 是基于一个支持实时仿真和嵌入式跟踪的32/16 位ARM7 TDMI-S CPU的微控制器,并带有32kB 和512kB 嵌入的高速Flash 存储器。128 位宽度的存储器接口和独特的加速结构,使32 位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模降低超过30%,而性能的损失却很小。其特性为:(1) 16/32 位ARM7TDMI-S 微控制器,超小LQFP64 封装。(2) 8kB40kB 的片内静态RAM 和32kB512kB 的片内Flash 程序存储器。128 位宽度接口/加速器可实现高达60 MHz 工作频率。(3) 通过片内 boot 装载程序实现在系统编程/在应用编程(ISP/IAP)。单个Flash 扇区或整片擦除时间为400ms。256 字节编程时间为1ms。(4) Embedded ICE RT 和嵌入式跟踪接口提供实时调试(通过片内Real Monitor 软件)和高速跟踪指令执行。(5) USB 2.0 全速设备控制器具有2kB 的端点RAM。此外,LPC2146/8 提供8kB 的片内RAM,可被USB 的DMA 控制器访问。(6) 2 个10 位ADC 转换器,提供总共6/14 路模拟输入,每个通道的转换时间低至2.44us。(7) 1 个10 位的D/A 转换器提供可变的模拟输出。(8) 2 个32 位定时器/外部事件计数器(带4 路捕获和4 路比较通道)、PWM 单元(6路输出)和看门狗。(9) 低功耗实时时钟(RTC)具有独立的电源和特定的32kHz 时钟输入。(10) 多个串行接口,包括2 个UART(16C550)、2 个高速I2C 总线(400 kbit/s)、SPI 和具有缓冲作用和数据长度可变功能的SSP。(11) 向量中断控制器(VIC)。可配置优先级和向量地址。(12) 多达 45 个可承受5V 电压的通用I/O 口(LQFP64 封装)。(13) 多达 9 个边沿或电平触发的外部中断管脚。(14) 通过一个可编程的片内 PLL(100us 的设置时间)可实现最大为60MHz 的 CPU 操作频率。(15) 片内集成振荡器可操作频率为 130 MHz 的外部晶体或频率高达50MHz 的外部振荡器。(16) 低功耗模式:空闲和掉电。(17) 可通过个别使能/禁止外围功能和外围时钟分频来优化额外功耗。(18) 通过外部中断,USB,掉电检测(BOD)或实时时钟(RTC)将处理器从掉电模式中唤醒。(19) 单电源,具有上电复位(POR)和掉电检测(BOD)电路:CPU 操作电压范围:3.0V3.6 V (3.3 V 10)。2.1.2 结构图图2-1 LPC2148结构方框图由上图可见,其结构包含一个支持仿真的ARM7TDMI-S CPU,与片内存储器控制器接口的ARM7局部总线,与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB,ARM AMBA总线的兼容超集)。AHB外设分配了2MB的地址范围,它位于4GB ARM存储器空间的最顶端。每个AHB外设也分配了16KB的地址空间。并且其外设功能都连接到VPB总线,外设包括外部中断、I2C串行接口、捕获/比较定时器0/1、SPI串行接口、ADC、UART、通用I/O、PWM、看门狗定时器、实时时钟、系统控制。AHB到VPB的桥将VPB总线与AHB总线相连。VPB外设也分配了2MB的地址范围,从3.5GB地址点开始。每个VPB外设在VPB地址空间内斗分配了16KB地址空间。2.1.3 应用ARM芯片开发应用的重要环节之一是底层开发,即用汇编语言和C语言混合编程的启动代码。系统配置及部分启动代码程序:(1) 系统配置头文件config.h#ifndef _CONFIG_H#define _CONFIG_H#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endiftypedef unsigned char uint8; /* 无符号8位整型变量 */typedef signed char int8; /* 有符号8位整型变量 */typedef unsigned short uint16; /* 无符号16位整型变量 */typedef signed short int16; /* 有符号16位整型变量 */typedef unsigned int uint32; /* 无符号32位整型变量 */typedef signed int int32; /* 有符号32位整型变量 */typedef float fp32; /* 单精度浮点数(32位长度) */typedef double fp64; /* 双精度浮点数(64位长度) */#include nxp/iolpc2148.h#include stdio.h#include intrinsics.h / ARM核特征头函数/*系统时钟配置:Fosc、Fcclk、Fcco、Fpclk/*/#define Fosc 12000000 / 时钟频率:12MHz(晶振频率范围:10MHz25MHz)。#define Fcclk (Fosc*5) / 系统时钟:60MHz(系统频率范围:Fcclk=(132)*Fosc,且6)&0x3ff; /处理转换值2.2.5 应用(模块初始化)ADC模块正常工作的条件是正确配置其工作环境,即初始化ADC,初始化程序如下:/* 进行ADC模块设置,其中xn表示第n位设置为x(若x超过一位,则向高位顺延) */ ADCR = (1 0) / SEL = 1 ,选择通道0 (Fpclk / 1000000 - 1) 8) / CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz (0 16) / BURST = 0 ,软件控制转换操作 (0 17) / CLKS = 0 ,使用11clock转换 (1 21) / PDN = 1 , 正常工作模式(非掉电转换模式) (0 22) / TEST1:0 = 00 ,正常工作模式(非测试模式) (1 24) / START = 1 ,直接启动ADC转换 (0 27);/ EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换) DelayNS(10); ADC_Data = ADDR;/ 读取ADC结果,并清除DONE标志位2.3 液晶显示模块我所采用的目标板采用北京青云科技公司的LCM12864汉字/图形点阵显示模块,该模块的驱动芯片采用ST7920控制器系列,液晶显示模块的特性取决于驱动器芯片特性。2.3.1 ST7920的主要特性ST7920 同时作为控制器和驱动器其特性如下:(1) 硬件特性 8 位/4 位并行接口及串行接口可选(并行接口适配 M6800 时序)。 自动电源启动复位功能。 内部自建振荡源。 有效显示范围:32个汉字(4行8列) 自带8192个1616 点阵的中文字库(2M位CGROM)。 自带126个168点阵的半宽西文字库(16K位HCGROM)。(2)软件特性 文字与图形混合显示功能 画面清除功能 光标归位功能 显示开/关功能 光标显示/隐藏功能 显示字体闪烁功能 光标移位功能功能 显示移位功能 垂直画面旋转功能 反白显示功能 休眠模式液晶屏共分为四行,控制器会根据写入的数据值范围来自动选择字符显示在液晶屏上。各行端口地址如下: 第一行:80H 87 H;第二行:90H 97 H;第三行: 88H 8F H;第四行: 98H 9F H;2.3.2 LCM12864功能框图图2-3 液晶原理图2.3.3 MCU接口及工作时序(1) LCM19264与MCU接口表2-4 接口描述为节省MCU资源,所以用串口方式,时序关系如下图: 图2-4 串口时序图2.3.4 基本工作指令液晶模块的基本指令为:1)清除显示(CLEAR)格式 0 0 0 0 0 0 0 1将DDRAM 填满“20H”(空格)代码,并且设定DDRAM 的地址计数器(AC)为00H;更新设置进入设定点将I/D 设为1,游标右移AC 加1。2)地址归0(HOME)格式 0 0 0 0 0 0 1 X设定DDRAM 的地址寄存器为00H,并且将游标移到开头原点位置;这个指令并不改变DDRAM 的内容。3)进入设定点(ENTRY MODE SET) 初始值:06H格式 0 0 0 0 0 1 I/D S指定在显示数据的读取与写入时,设定游标的移动方向及指定显示的移位。I/D1,游标右移,DDRAM 地址计数器(AC)加1;I/D0,游标左移,DDRAM 地址计数器(AC)减1。S:显示画面整体位移:S = 1, I/D1,画面整体右移;S = 1, I/D0,画面整体左移4)显示开关设置(DISPLAY STATUS)初始值:08H。格式 0 0 0 0 1 D C B控制整体显示开关,游标开关,游标位置显示反白开关。D=1,整体显示开;D=0,整体显示关,但是不改变DDRAM 内容;C=1,游标显示开;C=0,游标显示关;B=1,游标位置显示反白开,将游标所在地址上的内容反白显示;B=0,正常显示。5)游标或显示移位控制(CURSOR AND DISPLAY SHIFT CONTORL)初始值:0001 XXXX B (X0,1) 格式 0 0 0 1 S/C R/L X X这条指令不改变DDRAM 的内容S/C=0 R/L=0 游标向左移动, AC=AC-1;S/C=0 R/L=1 游标向右移动, AC=AC+1;S/C=1 R/L=0 显示向左移动,游标跟着移动 AC=AC;S/C=1 R/L=1 显示向右移动,游标跟着移动 AC=AC。6)功能设定(FUNCTION SET) 初始值:0011 X0XX B (X=0,1)格式 0 0 1 DL X 0/RE X XDL:8/4 位接口控制位;DL=1,8 位MPU 接口;DL=1,4 位MPU 接口;RE:指令集选择控制位;RE1,扩充指令集;RE0,基本指令集;同一指令的动作不能同时改变DL和RE,需先改变DL再改变RE才能确保设置正确。7)设定CGRAM 地址格式 0 1 A5 A4 A3 A2 A1 A0设定CGRAM 地址到地址计数器(AC),AC 范围为00H3FH 需确认扩充指令中SR0。(卷动位置或RAM 地址选择)8)设定DDRAM 地址格式 1 0 A5 A4 A3 A2 A1 A0设定DDRAM 地址到地址计数器(AC)第一行AC 范围 80H8FH第二行AC 范围 90H9FH說明:ST7920 控制器的12864 点阵液晶其实原理上等同25632 点阵,第三行对应的DDRAM 地址紧接第一行;第四行对应的DDRAM 地址紧接第二行。用户在使用行反白功能时,如果第一行反白,第三行必然反白。第二行反白,第四行必然反白。这是正常现象。9)读取忙标志和地址(RS=0,R/W=1)格式 BF A6 A5 A4 A3 A2 A1 A0读取忙标志以确定内部动作是否完成,同时可以读出地址计数器(AC)的值。10)写显示数据到 RAM(RS=1,R/W=0)格式 D7 D6 D5 D4 D3 D2 D1 D0当显示数据写入后会使AC 改变,每个RAM(CGRAM,DDRAM,IRAM)地址都可以连续写入2 个字节的显示数据,当写入第二个字节时,地址计数器(AC)的值自动加一。11) 读取显示 RAM 数据(RS1,R/W1)格式 D7 D6 D5 D4 D3 D2 D1 D0读取后会使AC 改变,设定RAM(CGRAM,DDRAM,IRAM)地址后,先要Dummy read 一次后才能读取到正确的显示数据,第二次读取不需要Dummy read,除非重新设置了RAM 地址。液晶显示器件是ADC数据采集系统中的一个重要环节,正确设置其工作状态,即初始化设置,是保证系统工作的前提。因此根据以上的指令集,本设计的液晶初始化流程图如图2-5所示:图2-5 液晶初始化流程图3、开发工具3.1 JTAGJTAG是一种技术先进高效的基于边缘扫描技术的硬件仿真/调试/编程器。实物图如下: 图3-1 JTAG实物图3.1.1 性能介绍JTAG(Joint Test Action Group ,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Port,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。JTAG接口还常用于实现ISP(In-System Programmable 在线系统编程) 功能,如对Flash器件进行编程等。通过JTAG接口,可以对芯片部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高效的用段。JTAG的主要功能有两种,或者说JTAG主要有两大类:一类用于测试芯片的电气特性,检测芯片是否有问题;另一类用于Debug,对各类芯片以及其外围设备进行调试。一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器、挂在CPU总线上的设备以及内置模块的寄存器。简单地说,JTAG的工作原理可以归结为:在器件内部定义一个TAP,通过专用的JTAG测试工具对内部节点进行测试和调试。3.1.2 结构框图图3-2 JTAG的内部结构方框图JTAG内部结构如上图所示。在硬件结构上,JTAG接口包括2部分:JTAG端口和控制器。与JTAG接口兼容的器件可以是微处理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC或者是其他符合IEEE 1149.1规范的芯片。IEEE 1149.1标准中规定对应于数字集成电路芯片的每个引脚都设有一个移位寄存单元,称为边界扫描单元BSC(Boundary Scan cell)它将JTAG电路与内核逻辑电路联系起来,同进隔离内核逻辑电路和芯片引脚,由集成电路的所有边界扫描单元构成边界扫描寄存器BSR(Boundary-Scan Register)。边界扫描寄存器仅在进行JTAG测试时有效,在集成电路正常工作时无效,不影响集成电路的功能。各引脚功能如下。(1)TCK:时钟信号,为TAP的操作提供了一个独立的、基本的时钟信号。(2)TMS:模式选择信号,用于控制TAP状态机的转换。(3)TDI:数据输入信号。(4)TDO:数据输出信号。(5)TRST:复位信号,可以用来对TAP Controller进行复位(初始化)。这个信号接口在IEEE 1149.1标准里并不是强制要求的,因为通过TMS也可以对TAP Controller进行复位。(6)STCK:时钟返回信号,在IEEE 1149.1标准里非强制要求。(7)DBGRQ:目标板上工作状态的控制信号。在IEEE 1149.1标准里没有要求,只是在个别目标板(例如STR710)中会有。简单地说,PC机对目标板的调试就是通过TAP接口完成对相关数据寄存器(DR)和指令寄存器(IR)的访问。3.2 IAR 开发环境3.2.1 功能简介 IAR Embeded Workbench (以下简称IAR EW)是仿真调试编程的集成开发环境。是一种非常高效的嵌入式系统开发工具,它使用户能够充分有效地开发管理嵌入式应用项目,其界面类似于MS Visual C+,可以在Windows 95/98/2000/XP平台上运行,功能十分完善。IAR EW中包含了源程序文件编辑器、项目管理器(Project)源程序调试器(Debug)待,并且为C/C+编译器、汇编器、链接定位器等提供了单一而灵活的开发环境。IAR EW 的源级浏览器(Source Browser)功能利用符号数据库使用户可以快速浏览源文件,还可通过详细的符号信息来优化变量存储器;文件查找功能可在指定的若干种文件中进行全局文件搜索;IAR EW 还提供了对第三方工具软件的接口,允许启动用户指定的应用程序。IAR EW 适用于开发基于8位、16位以及32位微处理器的嵌入式系统,其集成开发环境具有统一界面,为用户提供了一个易学和具有最大代码继承能力的开发平台,以及对各种特殊目标的支持。IAR 公司提出了所谓“不同架构,惟一解决方案”的理念用户可以针多种不同的目标处理器,在相同的集成开发环境中进行基于不同CPU嵌入式系统应用程序的开发,有效提高工作效率,节省工作时间。IAT EW 还是一种可扩展的模块化环境,允许用户采用自己喜欢的编辑器和源代码控制系统,链接定位器(XLINK)可以输出多种格式的目标文件,使用户可以采用第三方软件进行仿真调试。编译器、汇编器和链接器也可在命令行上运行,用户可以在一个已建好的项目中把它们作为外部工具使用。3.2.2 主要功能模块:(1) 高度优化的IAR ARM C/C+ 编译器(compile)。(2) IAR ARM 汇编器(Assembler)。(3) 通用的IAR XLINK 链接器(Linker)。(4) IAR XAR 和XLIB 建库程序和IAR DLIB C/C+运行库;(5) 功能强大的编辑器。(6) 项目管理器。(7) 命令行实用程序。(8) IAR C-SPY 调试器(先进的高级语言调试器)。3.2.3 软件特点IAR EWAM软件的特点:(1) 完善的ARM内核支持。(2) 客户化地芯片级支持。(3) 编译器速度优化及浮点运算库功能扩展。(4) 支持多种嵌入式操作系统。(5) 功能强大的Debug功能。 3.2.4 芯片级支持特性(1) 各厂商完整的ARM处理器 C/C+和汇编语言外设寄存器定义文件(*.h)。(2) 大量适于嵌入式代码的编程语言扩展特性,包括:存储器关键字、本征函数、中断函数、存储器映射I/O等。(3) 多种评估板例程,包含:IAR、Analog Devices、Aiji System、ARM、Atmel、Cirrus Logic、Freescale、Keil、OKI、Olimex、Pasat、Philips、Phytec、ST和TI等。(4) 支持ARM或Thumb模式下大至4G字节的应用程序。(5) 每个函数都能选择在ARM或Thumb模式下编译。(6) 可生成VFP向量浮点协处理器代码。(7) 支持Analog Devices、Atmel、Freescale、OKI、Philips、ST和TI等厂商的ARM处理器的Flash Loader程序。(8) 支持ARM Angel Debug monitor。3.2.5 集成开发环境的界面特色(1) 分层次的工程组织。 (2) 同一工作空间中允许存放多个工程。(3) 可停靠的窗口和多视图。(4) 源代码浏览。(5) 创建和维护库的工具。 (6) 可以和源代码控制系统相集成。 (7) 文本编辑器。23514图3-3 调试窗口图3-3就是IAR Embeded Workbench的工作界面。其中:1窗口为工作窗口,2是程序源代码窗口,3是反汇编窗口,4是寄存器窗口,5是存储器窗口,其实还可以打开更多的窗口,例如变量窗口等。由此可见IAR为编程人员在调试过程中提供了很大的方便。4 编程及调试4.1 整机初始化254.1.1 流程图图4-1 整机初始化流程图4.1.2 初始化源程序功能:系统时钟、加速模块、中断初始化void system_init()/*VPB分频系数配置*/ PLLCON = 1; / PLL使能(开启)#if (Fcclk/4)/Fpclk)=1 / VPB时钟为处理器时钟的1/4时 VPBDIV=0; / VPB分频系数设置:模式0#endif#if(Fcclk/4)/Fpclk)=2 / VPB总线时钟为处理器时钟的1/2时 VPBDIV=2; / VPB分频系数设置:模式2#endif#if(Fcclk/4)/Fpclk)=4 / VPB总线时钟与处理器时钟相同时VPBDIV=1; / VPB分频系数设置:模式1#endif/*PLL 倍频/分频值自动配置*/#if(Fcco/Fcclk)=2 / 流控振荡频率是系统频率的2倍时 PLLCFG=(Fcclk/Fosc)-1)|(05); /PLL配置:#endif#if(Fcco/Fcclk)=4 PLLCFG=(Fcclk/Fosc)-1)|(15);#endif#if(Fcco/Fcclk)=8 PLLCFG=(Fcclk/Fosc)-1)|(25);#endif#if (Fcco/Fcclk)=16 PLLCFG = (Fcclk/Fosc)-1)|(3 5);#endif PLLFEED = 0xaa; PLLFEED = 0x55; while(PLLSTAT&(110)=0); PLLCON = 3;PLLFEED = 0xaa;PLLFEED = 0x55;/ 存储器加速配置 MAMCR = 0;#if Fcclk 20000000 MAMTIM = 1;#else#if Fcclk 40000000MAMTIM = 2;#elseMAMTIM = 3;#endif MAMCR = 2;/ VIC初始化 VICIntSelect=0; VICIntEnClear=0xFFFFFFFF; VICSoftIntClear=0xFFFFFFFF; VICProtection=0; VICVectAddr=0; VICDefVectAddr=0;4.2 AD程序设计4.2.1 流程图图4-2 A/D程序设计流程图4.2.2 源程序while(1) ADCR = (ADCR&0xFFFFFF00)|0x01|(1 24); / 切换通道并进行第一次转换while( (ADDR&0x80000000)=0 );/ 等待转换结束 ADCR = ADCR | (1 6) & 0x3FF; ADC_Data = ADC_Data * 3300; ADC_Data = ADC_Data / 1024; sprintf(str, %4dmV at VIN1, ADC_Data); ISendStr(60, 23, 0x30, str); DelayNS(10); 4.3 液晶模块程序设计4.3.1 流程图图4-3 字符串显示流程图根据用户的设置,判断要写入第几行,然后将对应的端口地址写入液晶屏。再将字符逐个写入液晶屏,此时液晶屏上会出现要显示的字符。显示数字模块的设计与字符显示模块类似,其主要思想是将数字逐位转化为字符串,然后写入液晶屏。数字转化为字符的方法是,先取数字的各位,转化为ASCII码,存入字符串数组中的第一个单元。以此类推,将数字的每一位取出,转换为ASCII码,依次存入字符串数组。再将字符串显示在液晶屏。其流程图如下:图4-4 字符转换流程图4.3.2 源程序LCD写命令数据函数/*函数功能:写命令/数据*说明:data 写入的值 cd=0指令写入, cd=1数据写入,*/extern void WriteOperate(unsigned char value,unsigned char cd) BusyLoop(); / if(cd) LCDRS_DH; /RS=1; else LCDRS_CL; /RS=0; LCDRW_WL; /RW=0; LCDE_EH; /E=1; LCDOUT = value; LCDOUT_1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论