基于单片机的电子指南针设计毕业设计 联系客服

发布时间 : 星期一 文章基于单片机的电子指南针设计毕业设计更新完毕开始阅读c24d1607842458fb770bf78a6529647d272834b2

地址,并支持I2C 协议。这一装置可以支持快速和标准模式,分别为100kHz和400kHz,不能支持高速模式(Hs)。还需要外接电阻才能支持这些标准和快速模式。要求主机的活动(寄存器的读取和写入)优先于内部活动,例如:测量。这一优先次序的安排是为了不让主机等待,同时IC总线占用的时间比必需的时间长。

如图3.4所示是针对HMC5883L的IIC接口能够使用到的几种数据传输模式:

图3.4 HMC5883L的几种数据传输模式

4. 操作模式

该装置有若干种模式,其主要目的是电源管理以及通过模式寄存器进行控制。连续测量模式 连续测量模式:

连续测量模式,在客户所选择的速率下进行连续的测量,并所测量的更新数据输出寄存器。如果有必要,数据可以从数据输出寄存器重新读取,但是,如果主机并不能确保在下次测量完成之前可以访问数据寄存器,数据寄存器上的旧的数据会被新的测量数据取代。为了保存测量之间的电流,该装置被放置在一个类似闲置模式的状态,但模式寄存器没有改变成空闲模式。即MD[n]位不变。配置寄存器A的设置在连续测量模式时会影响数据输出速率(比特DO[n]) ,测量配置

(bitsMS[n]),和增益(bits GN[n])。所有寄存器在连续测量模式中保留数值。 在连续测量模式下IIC总线可被网络内的其他装置启用。

单次测量模式:

这是预设的供电模式。在单测量模式,该装置进行单次测量并将测量数据更新至输出数据寄存中。在完成测量和输出数据寄存器的更新以后,通过设置MD[n] bits,该装置被置于闲置模式,模式寄存器变更为闲置模式。配置寄存器的设置在单一测量模式时影响测量配置(bits MS[n])。在单测量模式中所有寄存器保留数值。在单测量模式下IIC总线可被网络内其他装置启用。

闲置模式:

在此模式下,装置可以通过IIC总线访问,但主要电源能耗是禁用的,如ADC,放大器,传感器偏置电流,但不仅限于这些。在空闲模式下所有寄存器保留数值。在闲置测量模式下IIC总线可被网络内其他装置启用。

5.置位复位带驱动的H-桥式电路

ASIC包含大型开关FETs,可以传输大而短的脉冲到传感器的置位复位带。这一置位复位带在很大程度上是一种电阻性负载。并不需要外部去增加外部置位复位回路。每次测量时,ASIC会自动完成置位复位。首先一次置位脉冲产生后进行测量,然后,一次复位脉冲产生后进行测量,两次测量的差值的一半将会被放置在三轴上每根轴的数据输出寄存器上。这样,在所有测量中传感器的内部偏差和温度漂移差值就可以被移除抵消了。

5.寄存器访问

表3.1列出了寄存器及其访问。所有地址为8 bits。

表3.1 寄存器列表

地址 00 01 02 03 04 05 06 07 08 09 10

名称 配置寄存器 A 配置寄存器 B 模式寄存器 数据输出 X MSB 寄存器 数据输出 X LSB 寄存器 数据输出 Z MSB寄存器 数据输出 Z LSB 寄存器 数据输出 Y MSB 寄存器 数据输出 Y LSB 寄存器

状态寄存器 识别寄存器 A

访问 读写 读写 读写 读 读 读 读 读 读 读 读

11 12

识别寄存器 B 识别寄存器 C

读 读

该装置使用地址指针来显示该寄存器地点是被读取或写入。这些指针位置从主机发出到从机并成功获得的 7 位地址加 1 位读写标识符。为了尽量减少主机和装置之间的沟通,无主机干预下地址指针自动更新。这个地址指针自动更新有两个附加的功能。首先访问12或更高位的访问指针更新至地址00,其次是访问达到08,指针回滚到地址03。从逻辑上说,地址指针操作功能如下所示。

如果(地址指针= 08),则地址指针= 03 否则,如果(地址指针>= 12 ) ,则地址指针= 0 其他(地址指针) = (地址指针) + 1 地址指针本身值无法通过IIC总线读取。任何企图读取无效的地址位置将返回0,而任何无效的地址位置的写入或在一个有效的地址位置中一个未定义的位均被该装置忽略。要让地址指针移动到一个随机寄存器地址,首先对该寄存器地址发出“写”的指令,之后再跟一个无数据位。HMC5883L与单片机的连线图如图3.5所示: 32EA/VPPALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0STC89C523130292827262524232221GND12345VCCGNDSCLSDADRDYHMC5883LVCC

图3.5 传感器模块连线图

3.3 LCD1602液晶屏模块

1. 液晶显示原理

液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA 移动通信工具等众多领域。移动通信工具等众多领域。

2. 液晶显示器的分类

液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static )、单纯矩阵驱动(Simple Matrix )和主动矩阵驱动(Active Matrix)三种。

3. 液晶显示器各种图形的显示原理:

线段的显示点阵图形式液晶由 M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由 16字节,共16×8=128个点组成,屏上 64×16 个显示单元与显示 RAM 区1024 字节相对应,每一字节的内容和显示屏上相应位置亮暗对应。例如屏的第一行的亮暗由字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由 RAM 区的 000H——00FH 的 的 16 字节的内容决定,当(000H )=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH )=FFH 时,则屏幕的右下角显示一条短亮线;当(000H )=FFH,(001H )=00H,(002H)=00H ,?? (00EH )=00H,(00FH )=00H 时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是条暗线组成的虚线。这就是LCD显示的基本原理。

4. 字符的显示

用 用 LCD 显示一个字符时比较复杂,因为一个字符由 6×8 或 或 8×8 点阵组成,既要找到和显示屏幕上某几个位置对应的显示点阵组成,既要找到和显示屏幕上某几个位置对应的显示 RAM 区的 8 字节,还要使每字节的不同位为“1” ,其它的为“0” ,为“1” 的点亮,为“0”不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在 LCD 上开始显示的行列号及每行的列数找出显示上开始显示的行列号及每行的列数找出显示 RAM 对应的地址, 设立光标, 在此送上该字符对应的代码即可。

LCD1602液晶也叫LCD1602字符型液晶,这是一种专门用来显示数字、字母、符号等的点阵型液晶模块,由若干个5×7或者5×11等点阵字符位组成,这其中的每个点阵字符位都可以完全显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。工业字符型液晶LCD1602是指显示的内容为16*2,并且能同时显示两行,每行16个字符。有两种常见的LCD1602字符液晶显示器,一种是蓝色背光白色字体显示,另一种是绿色背光黑色字体显示。本设计所用的LCD1602液晶显示器模块,显示屏是绿色背光黑色字体,因为这种显示器看起来较为清楚。

LCD1602VCCR/W10111213141516145623879BLKDB2DB3DB4DB5DB6DB7BLADB0VSSVORSEDB1

图 3.6 LCD1602引脚图

第1脚:VSS为电源地。

第2脚:VDD接5V电源正极。

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

LCD1602内置了DDRAM(显示数据存储RAM)、CGROM(字符存储ROM)和CGRAM(用户自定义RAM)。DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:

图3.7 RAM地址映射图

LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码,也就是说想要在LCD1602屏幕的第一行第一列显示一个“A”字,就(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

其基本操作时序:

读状态输入:RS=L,RW=H,E=H 输出:DB0~DB7=状态字 写指令输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码 输出:无 读数据输入:RS=H,RW=H,E=H 输出:DB0~DB7=数据 写数据输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据 输出:无

图3.8 读操作时序

图3.9写操作时序

数据指针设置如表3.2 所示:

表3.2 数据指针设置表

指令码 功能 80H+地址码(0-27H,40H-67H) 设置数据地址指针 在1602中我们就用前16个就行了,第二行也一样用前16个地址。我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码)并不能显示1出来。这是令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即0x80+0x00,若要在DDRAM的01H处显示数据,则必须将01H加上80H即0x80+0x01,依次类推。下面是1602与单片机的连线图。