《基于dsp的多通道数据采集电路---大学毕业(论文)设计.doc》由会员分享,可在线阅读,更多相关《基于dsp的多通道数据采集电路---大学毕业(论文)设计.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、沈阳工业大学成人高等教育专科第1章 绪论本次硬件电路设计采用的是TI的DSP2812具有 JTAG 调试,功能。板上提供了一些键盘、LED、RS232 等常用功能部件,能够帮助用户学习 32 位单片机从简单的开始,一步一步的过渡到 32 位 ARM 嵌入式系统开发领域。 功能特点使用 CPU PACK,可以使用多种兼容芯片DSP2812,带有CPUPCAK 一块;标配 TI 的 DSP2812,可进行 JTAG 仿真调试,支持 ADS1.2 集成开发环境;完全自主设计的软硬件、拥有自主版权的 JTAG 仿真技术,用户使用没有后顾之忧;可选 CAN 接口板,方便组装现场总线所有 I/O 全部引出
2、,可以和用户的外部电路连接搭配;4 个独立 LED、6 个独立键盘控制;具有 RS232 转换电路,可与上位机进行通讯;可以与标准串行 MODEM 直接接口,方便远程通讯具有 I2C 器件、SPI 器件接口器件;具有滤波电路,PWM 输出可实 DAC 转换功能;板上的功能部件可使用跳线器连接或断开连接;提供基于 PC 的人机界面,方便调试实时时钟、串口通信等功能;提供详细的使用教材,实验例程。可进行 GPIO 的控制实验,如 LED 控制、键盘输入、蜂鸣器控制、模拟 SPI 等;可进行外部中断实验,学习向量中断控制器(VIC);定时器控制实验,如定时控制 LED、匹配比较输出等;使用 RS23
3、2 转换电路,完成 UART 通讯实验;使用板内CAT24WC02,完成 I2C 总线的实验;使用 74HC595 芯片,实现 SPI 接口数据发送、接收实验;具有 PWM 输出测试点及滤波电路,实现 PWM 输出、PWM DAC 实验;实时时钟控制实验;WDT 及低功耗控制实验;ADC 数据采集实验。DSP2812是世界首款可加密ARM芯片,具有零等待128K/256K字节的片内Flash,16K的SPAM,无需扩展存储器,是系统更为简单、可靠 ,内部具有UART、硬件IIC、SPI、PWM、ADC、定时器、CAN等众多外围部件,功能更强大 ,64管脚LQFP封装,体积更小,3.3V和1.8
4、V系统电源,内部PLL时钟调整,功耗更低。 第2章 硬件电路原理图2.1电路原理图的组成基于DSP2812开发实验板的电路原理图如图1所示。图1 DSP开发实验板原理图2.2电路中的主要元器件及实验板功能 在本次设计的实验开发电路板的过程中,考虑到基本实验板应具有的功能,因而首先增加了一些简单基本的调试电路,供教学实验学习使用,以调试编写好的程序。板上提供了一些键盘、LED、LCD、RS232等常用的一些功能部件,还有两组供电电源,调试测试接口和USB接口,帮助用户学习32位单片机从简单的开始,从而一步一步的过渡到32位DSP嵌入式开发领域。DSP2812为64脚的封装,16/32位DSP7T
5、DMI-S微控制器,16KB的静态RAM,0/128/256KB片内Flash程序存储器,128位宽度接口/加速器实现高达60MHz的操作频率。双电源供电,晶振频率范围为1到30MHz,若使用PLL或ISP功能,则为10到25Hz,2个32位定时器,PWM单元,实时时钟和看门狗,4路10位A/D转换器,转换时间低至2.44us,可以通过外部中断将处理器从掉电模式中唤醒,通过外部存储器接口可将存储器配置4组,每组的容量高达16MB,嵌入式跟踪宏单元支持对执行代码进行无干扰的高速实时跟踪,通过片内PLL可实现最大为60MHz的CPU操作频率。DSP2812不具备外部程序存储器接口,所以扩展片外存储
6、器只能通过I/O口模拟总线操作,或者使用IIC,SPI接口连接。DSP2812具备外部存储器接口,通过外部存储器控制器可以扩展4个BANK的存储器组,每个存储器组的空间空间大小为16MB。对于外扩的SPAM存储器使用LDR/STR指令即可进行数据的读写操作;而对于外扩的Flash,可以使用LDR读取指令数据,实现Flash的擦除编程。DSP2812的P0口是一个32位双向I/O口,每位的方向可单独控制,P0引脚的功能取决于引脚连接模块的引脚功能的选择。 原理说明:2.3 最小系统设计 图2为嵌入式微控制器的最小系统框图,其中存储器系统是可选的,因为很多面向嵌入式领域的嵌入式微控制器内部设计了程
7、序存储器和数据存储器,存储器系统是不用自行设计的。还有就是调试测试接口不是必须的,但是在电路板开发的过程中发挥了巨大的作用。DSP微控制器时钟系统调试测试接口供电系统(电源)复位及复位配置系统存储器系统图2 基于DSP2812的最小系统原理框图2.4 电源电路DSP2812 要使用两组电源,I/O 口供电电源为 3.3V,内核及片内外设供电电源为 1.8V,所以系统设计为 3.3V 应用系统。首先,由 CZ1 电源接口输入 9V 直流电源,二极管 D2 防止电源反接,经过 C1、C3 滤波,然后通过 78M05 将电源稳压至 5V,再使用LDO芯片( 低压差电源芯片)稳压输出3.3V及1.8V
8、电压。LDO芯片采用了LM1117MPX-1.8 和 SPX1117M-3.3,其特点为输出电流大,输出电压精度高,稳定性高。系统电源电路如图 3 所示。SPX1117系列LDO芯片输出电流可达800mA,输出电压的精度在1%以内,还具有电流限制和热保护功能,广泛用户在手持式仪表、数字家电、工业控制等领域。使用时,其输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,因此如果电源系统处理得好那么整个系统的故障往往减少了一大半。注意:本次 DSP开发实验板使用的电源是9V直流电源,由CZ1电源接口输入,接头上的电源极性为
9、外正内负。图3 系统电源电路SPX1117系列LDO芯片输出电流可达800mA,输出电压的精度在1%以内,还具有电流限制和热保护功能,广泛用户在手持式仪表、数字家电、工业控制等领域。使用时,其输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,因此如果电源系统处理得好那么整个系统的故障往往减少了一大半。注意:本次 DSP开发实验板使用的电源是9V直流电源,由CZ1电源接口输入,接头上的电源极性为外正内负。2.5 系统时钟电路目前微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器,因此DSP28
10、12也需要设计一个时钟电路。简单的方法是利用微控制器内部的晶体振荡器,但有些场合需要使用外部振荡源提供时钟信号。PC2114/2124/2119/2129/2194 可使用外部晶振或外部时钟源,内部 PLL 电路可调整系统时钟,使系统运行速度更快(CPU 最大操作时钟为 60MHz)。倘若不使用片内 PLL 功能及ISP 下载功能,则外部晶振频率范围是 1MHz30MHz,外部时钟频率范围是 1MHz50MHz;若使用了片内 PLL 功能或 ISP 下载功能,则外部晶振频率范围是 10MHz25MHz,外部时钟频率范围是 10MHz25MHz。ARM开发实验板使用了外部 11.0592MHz
11、晶振,电路如图 4 所示,用 1M电阻 R6 并接到晶振的两端,使系统更容易起振。用 11.0592MHz 晶振的原因是使串口波特率更精确,同时能够支持很多型号的 DSP2812 芯片内部 PLL 功能及 ISP 功能。图4 系统时钟电路2.6 复位电路由于 DSP 芯片的高速、低功耗、低工作电压导致其噪声容限低,对电源的纹波、瞬态响应性能、时钟源的稳定性、电源监控可靠性等诸多方面也提出了更高的要求。本实验板的复位电路使用了专用微处理器电源监控芯片MAX708SD,提高系统的可靠性。由于在进行JTAG 调试时,nRST、TRST 是可由 JTAG 仿真器控制复位的,所以使用了三态缓冲门 74H
12、C125进行驱动,电路如图 5所示。如图 5,信号 nRST 连接到 DSP2812 芯片的复位脚 RESET ,信号 nTRST 连接到 DSP2812芯片内部 JTAG 接口电路复位脚 TRST 。当复位按键 RST 按下时,MAX708SD 立即输出复位信号,其引脚 RST 输出低电平导致 74HC125C、74HC125D 导通,信号 nRST、nTRST 将输出低电平使系统复位。平时 MAX708SD 的 RST 输出高电平,74HC125C、74HC125D 截止,由上拉电阻 R4、R5 将信号 nRST、nTRST 上拉为高电平,系统可正常运行或 JTAG 仿真调试。制器在上电时
13、状态并不确定,将造成微控制器不能正常工作。为解决这个问题,所有的微控制器都有一个复位逻辑,它负责将微控制器初始化为某个确定的状态。 图5 系统复位电路这个复位逻辑需要一个复位信号才能正常工作。一些微控制器在上电时自身会产生复位信号,但大多数微控制器需要外部输入这个信号,因为这个信号会使微控制器初始化为某个确定的状态,所以这个信号的稳定性和可靠性对微控制器的正常工作有重大影响。因为阻容复位电路是最简单的复位电路,它成本低,但是它不能保证任何情况下都产生稳定的复位信号,所以一般场合需要使用专门的复位芯片。如果系统不需要手动复位,则可以选择MAX809;如果系统需要手动复位,则可以选择SP708SC
14、N。复位芯片的复位门槛的选择至关重要,一般应当选择微控制器的I/O口供电电压为标准,针对DSP2812系列来说,这个范围为3.03.6V,所以其复位门槛应当选择为2.93V。本次电路设计使用的是复位芯片是SP708SCN。 2.7 JTAG 接口电路采用 DSP公司提出的标准 20 脚 JTAG 仿真调试接口,JTAG 信号的定义及与 DSP2812的连接如图6所示。图中,JTAG 接口上的信号 nRST、nTRST 与开发实验板的复位电路连接(参考图 5),形成线与的关系,达到共同控制系统复位的目的。根据 DSP2812 的应用手册说明,在 RTCK 引脚接一个 4.7K的下拉电阻,使系统复
15、位后 DSP2812 内部 JTAG 接口使能,这样就可以直接进行 JTAG 仿真调试了。如果用户需要使用 P1.26P1.31作 I/O,不进行JTAG 仿真调试,则可以在用户程序中通过设置 PINSEL2寄存器来使 DSP2812 内部 JTAG 接口禁能。另外,在 TRACESYNC 引脚通过跳线器 JP12接一个 4.7K的下拉电阻,可以在系统复位时使能/禁能跟踪调试端口,禁能时(JP12 断开)方可使用 P1.16P1.25 作 I/O。图6 JTAG调试接口电路2.8 串口及 MODEM 接口电路由于系统是 3.3V 系统,所以使用了 MAX3232 进行 RS232 电平转换,M
16、AX3232 是 3V工作电源的 RS232 转换芯片。另外,由于在这里DSP2812/2124/2119/2129 的 UART1 带有完整的调制解调器(MODEM) 接口,所以要使用8路的RS232转换芯片SP3243ECA ( 或MAX3243ECA)。如图7所示,JP5、JP6 分别为 UART0、UART1 口线连接跳线,当把它们断开时,这些口线保留给用户作为其它功能使用。当要使用 ISP 功能时,请把 JP5 短接,然后将 PC 的串口(如 COM1)与开发实验板的 CZ2相连,使用 UART0 进行通讯。同时还要把 JP8 短接,使 ISP 的硬件条件得到满足。用户通过 CZ3
17、直接连接 MODEOM,由于在这里的电路中DSP2812/2124/2119/2129/2194 的 UART1 控制MODEM 拔号、通讯等等。需要注意的是,DSP2812/2124/2119/2129/2194 的 ISP 使能管脚(P0.14 口)与 DCD1 功能脚复用,在系统复位时若 P0.14 口为低电平,则进入ISP状态;同样,在程序仿真调试过程中,若把 JP8 短接,则 DCD1 保持为低电平,影响 MODEM 接口正确使用。图7 串口及MODEM接口电路2.9 键盘电路DSP 开发实验板具有 6 个独立按键,分别为 KEY1KEY6,如图 8所示。由于 GPIO 作为输入时,
18、内部无上拉电阻,所以要使用 R17R22 等 6 个上拉电阻,当没有按键时,口线值为 1,当按键按下时为 0;而 R11R16 为口线保护电阻,即当连接按键的 I/O设置为输出时,这几个电阻保证了输出口不会直接对地短路。其中,KEY1、KEY5所连接的口线为 P0.16、P0.20,这两个口分别与外部中断 EINT0、EINT3 复用,所以可用这两个按键进行外部中断的实验、唤醒掉电 CPU 的实验。图8 按键电路真正的全双I/O口,可以独立控制每一根I/O口线的状态是输入还是输出,绝大多数I/O的输出为推挽输出,可以独立控制每一根I/O的输出状态。虽然DSP2812的I/O电压为3.3V,通用
19、I/O的输出最高为I/O口电源电压,但绝大多数通用I/O口能够承受5V电压的输入,作为输入时是处于高祖状态。本次电路设计按键电路使用的是新式的按键电路HD7279A。HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能HD7279A内部含有译码器可直接接受BCD码或16进制码并同时具有2种译码方式此外还具有多种控制指令如消隐,闪烁,左移,右移,段寻址等HD7279A具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口,典型的应用有仪器仪表,工业控制,条形
20、显示器,控制面板。具体的资料及控制命令详细请参阅附录1。几点说明 证正确的时序是HD7279A正常工作的前提条件。当选定了HD7279A的振荡元件RC和晶振之后,应调节延时时间,使时序中的T1T8满足表2所列要求。由表2所列的数值可知,HD7279A时序规定的时间范围很宽,达1050倍,很容易满足,但为了提高微处理器访问HD7279A的速度,在要求系统运行速度较快时,应仔细调试HD7279A的读写程序,使其运行时间接近最短。 微处理器通过KEY引脚电平来判断是否有键按下,在使用查询方式管理键盘时,该引脚接至微处理器的1位I/O端口;如果使用中断方式,该引脚应接至微处理器的外部中断输入端。同时应
21、将该中断触发控制位设置成下降沿有效的边沿触发方式。若置成电平触发方式,则应注意在按键时间较长时可能引起的多次中断问题。 HD7279A没有提供组合键功能。如果某些场合确需双键组合使用,可在微处理器某位I/O引脚接入一键,与HD7279A所连键盘共同组成双键功能。 HD7279A的3,5,26脚均为空闲引脚,一律悬空。 2.10 LED 显示电路在显示方面, DSP2100开发实验板采用了一片74HC595驱动一位静态共阳LED数码管,如图9所示,其时钟(SCK)、数据(SI)分别接到DSP2812的SPI接口的SCLK0、MOSI0,这样就可以发送数据到74HC595;片选(RCK,即74HC
22、595输出触发端)与P0.29口连接,由 P0.29 控制 74HC595 数据锁存输出;而最高位输出(SQH)连接到 DSP2812 的 SPI接口的 MISO0,可用来读回数据。这样连接就可以进行 SPI 接口控制实验,并能把 74HC595的移位输出读回来(由 MISO0 读回)。这一部份电路可用 JP3 跳开。在使用硬件 SPI 接口主方式时,要把 SPI0/1 的 4 个 I/O 口均设置为 SPI 功能,如 P0.4、P0.5、P0.6、P0.7,而且 SSEL0/1 引脚不能为低电平,一般要接一个 10K的上拉电阻。图9 SPI驱动显示电路另外, DSP实验板还具有 4 个独立的
23、发光二极管 LED1LED4,分别由P0.22P0.25 输出控制,输出 1 时对应的 LED 熄灭,输出 0 时对应的 LED 点亮,电路如图10 所示。这一部份电路可用 JP4 跳开。电路采用了 I/O 口灌电流的驱动方式来驱动 LED,这样做主要是因为 I/O 口能提供的灌电流大于其拉电流,保证了 LED 的显示亮度。如图 10,限流电阻为 470,则当 I/O 输出 0时,流过 LED 的电流计算公式如公式 1 所示。图10 LED控制电路 (公式1)其中V为二极管的导通压降,一般为0.7V。 (公式2)若需要进行大量数据显示,则可使用Protel99SE.exe软件进行模拟显示。Pr
24、otel99SE.exe是一款用于DSP开发实验板的上位机软件,具有8位模拟数码管显示,全仿真DOS 屏显示,模拟日历时钟显示屏等,并且有 20 个模拟按键输入等,这一切均通过串口通讯控制操作。2.11 蜂鸣器如图 11 所示,蜂鸣器使用 PNP 三极管 Q1 进行驱动控制,当 P0.7 控制电平输出 0 时,Q1 导通,蜂鸣器蜂鸣;当 P0.7 控制电平输出 1 时,Q1 截止,蜂鸣器停止蜂鸣;若把 JP7断开,Q1 截止,蜂鸣器停止蜂鸣。Q1采用开关三极管8550,其主要特点是放大倍数高hFE=300,最大集电极电流ICM=1500mA,特征频率 fT=100MHz。R36 用于限制 Q1
25、 的基极电流,当 P0.7 输出 0 时,流过 R36 的电流如公式 3 所示,Ir为 2.6mA,假设 Q1 工作在放大区,则 Ic= Ib= 400 2.6 = 1040 mA;而一般直流蜂鸣器在 3.3电压下工作电流约为 28mA,反过来说,只要 Ic= 28 mA,蜂鸣器上的电压即可达到 3.3V,此时 Uec0V,即 UebUec,Q1 为深度饱和导通,为蜂鸣器提供足够的电流。 (公式 3)由于 P0.7 口与 SPI 部件的 SSEL0 复用,所以此管脚上接一上拉电阻 R2,防止在使用硬件 SPI 总线时由于 SSEL0 引脚悬空导致 SPI 操作出错。图11 蜂鸣器设计电路2.1
26、2 I2C 电路DSP2812具有支持 400K 高速模式的硬件 I2C 接口,所以设计了CSI24WC02与其连接,实现 I2C 的读写操作实验。如图 12,总线上拉电阻R37、R38 放在 JP9 跳线之后,当不使用 CAT24WC02 时,把 JP9 断开,两个上拉电阻就不会影响口线了(P0.2、P0.3)。注意,P0.2和 P0.3 设置为输出时为开漏输出,若需要控制输出 1,则必须连接上拉电阻。为了支持高速 I2C 总线操作,总线上拉电阻 R37、R38 的大小为 3K,这样总线变化时上升/下降的速度就变快了。若使用标准 100KHz 总线速度时,一般其总线上拉电阻为 5.1K或 1
27、0K,以减小总线操作时的功耗。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作。 图12 I2C接口实验电路 I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低
28、电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。 I2C总线应用系统的典型结构如图13所示: 微控制器ALCD驱动器静态RAMEEPROM门阵列器件ADC微控制器B图13 I2C应用典型结构框图CALAYST 公司特有的噪声保护施密特触发输入技术和 ESD 最小达到 2000V,从而保证 CAT24WC02 系列 E2PROM 在极强的干扰下数据不丢失,因此 CAT24WC02系列 E2PROM 在汽车电子及电度表、水表、煤气表中得到了广泛应用。引
29、脚功能如下表:引脚功能描述A0、A1、A2器件地址选择SDA串行数据/地址SCL串行时钟Vcc+1.86.0V工作电压WP写保护GND电源地2.13 USB接口USB总线主要用于USB设备与USB主机之间的数据通信,特别为USB设备与USB主机之间大量数据的传输提供了高速可靠的传输协议。例如在嵌入式系统中,可以利用USB设备与微控制器构成USB设备。USB设备与PC机USB主控器相连就可以实现嵌入式系统与PC机之间的通信了,也就可以实现如U盘、移动硬盘、USB接口、打印机等功能。PDIUSBD12是一款性价比很高的USB器件。它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。它
30、还支持本地的DMA传输。这种实现USB接口的标准组件使得设计者可以在各种不同类型微控制器中选择出最合适的微控制器。这种灵活性减小了开发的时间、风险以及费用(通过使用已有的结构和减少固件上的投资),从而用最快捷的方法实现最经济的USB外设的解决方案。PDIUSBD12完全符合USB1.1版的规范。它还符合大多数器件的分类规格:成像类、海量存储器件、通信器件、打印设备以及人机接口设备。同样地,PDIUSBD12理想地适用于许多外设,例如:打印机、扫描仪、外部的存储设备(Zip驱动器)和数码相机等等。它使得当前使用SCSI的系统可以立即降低成本。特性符合通用串行总线(USB)1.1版规范;高性能US
31、B接口器件,集成了SIE、FIFO存储器、收发器以及电压调整器;符合大多数器件的分类规格;可与任何外部微控制器/微处理实现高速并行接口(2M字节/秒);完全自治的直接内存存取(DMA)操作;集成320字节多结构FIFO存储器;主端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输;在批量模式和同步模式下均可实现1M字节/秒的数据传输速率;具有良好EMI特性的总线供电能力;在挂起时可控制LazyClock输出;可通过软件控制与USB的连接;采用GoodLink技术的连接指示器,在通讯时使LED闪烁;可编程的时钟频率输出;符合ACPI、OnNOW和USB电源管理的要求;内部上电复位和低电压复位电
32、路;有SO28和TSSOP28封装;工业级操作温度:40+85;高于8kV的在片静电防护电路,减少了额外元件的费用;具有高错误恢复率(99%)的全扫描设计确保了高品质;双电源操作:3.30.3V或扩展的5V电源,范围为3.65.5V;多中断模式实现批量和同步传输。 PDIUSBD12具有8位的数据总线接口DATA0DATA7,片选引脚CS_N以及读选通引脚RD_N和写选通引脚WR_N。由此可见,PDIUSBD12的硬件接口和外部存储器接口很相似,因此,可以当作一片外部RAM芯片来进行访问。ALE引脚应用于控制PDIUSBD12的微控制器的地址/数据为总线复用时的情况,如80C51微控制器的外部
33、总线的低8位就是数据总线与地址总线的复用情况,但对于DSP2812微控制器,它的外部数据总线与地址总线是分开的,这时PDIUSBD12的DATA0DATA7与DSP2812的数据总线的D0D7直接相连就可以构成访问PDIUSBD12的数据总线了。LCD液晶接口电路 液晶是一种在一定温度范围内呈现既不同于固态、液态,又不同于气态的特殊物质,它既具有各向异性的晶体所特有的双折射性,又具有液体的流动性。液体显示器LCD就是利用液晶态物质的液晶分子排列状态在电场中改变而调制外界光的被动型显示器件。点阵式图形液晶显示屏是LCD的一种,能够动态显示图形汉字以及各种符号信息,为各种电子产品提供了有好的人机界
34、面。 由于液晶显示器具有体积小,功耗低,质量轻等特点,因此广泛应用于各种智能型仪器和 低功耗电子产品中。许多电子公司相继推出各种型号各种系列的液晶显示模块,这些模块不 仅可以显示字符和数字,有的还可以显示各种图形和汉字。OCMJ液晶显示显示器内含 GB 2312 1616点阵国标一级简体汉字和 ASCII88点阵英文 字库,输入区位码或 ASCII 码即可实现文本显示。它同时为用户提供位点阵和字节点阵两 种 图形显示功能,用户可在指定的屏幕位置上以位为单位或以字节为单位进行图形显示。OCMJ 48模块显示屏幕点阵为12664,每行可显示8个汉字或16个字符,可以显示字母、数字符号、中文字型及图
35、形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。所有的功能,包含显示DSP,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。内置2M-位中文字型ROM (CGROM)总共提供8192个中文字型(16x16点阵),16K-位半宽字型ROM (HCGROM)总共提供126个符号字型(16x8点阵),64 x 16-位字型产生RAM (CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除(Display
36、 clear)、光标归位(Return home)、显示打开/关闭(Display on/off)、光标显示/隐藏(Cursor on/off)、显示字符闪烁(Display character blink)、光标移位(Cursor shift)显示移位(Display shift)、垂直画面旋转(Vertical line scroll)、反白显示(By_line reverse display)、待命模式(Standbymode)。具体详细资料请参阅说明书。第3章 软件编程设计基于以上硬件电路的设计,编写了部分程序并且经过调试仿真测试了硬件电路原理图的设计正确与否。由于仿真软件中没有DSP
37、2812的单片机,因此这次只能采用8051单片机来代替DSP2812,来验证硬件电路的设计是否正确,又因为采用的是C语言来实现编写程序,C语言的移植性很强,更能体现出C语言的通用性,所以由此可知用8051来代替DSP2812单片机加上用C语言来编程,更能论证得到此时硬件电路设计是否正确,可得到真实的硬件电路设计正确与否的可行性。3.1 按键电路矩阵键盘按键的状态同样需变成数字量“1”和“0”,开关的一端(列线)通过电阻接Vcc,开关另一端(行线)的接地是通过程序输出数字“0”实现的。矩阵键盘的每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码,矩阵键盘的行线和列线分别通过两个并
38、行接口和CPU通信,在接键盘的行线和列线的两个并行口中,一个输出扫描码,使按键逐行的动态接地(称行扫描,键盘的行值),另一个并行口输入按键状态(称回馈信号,键盘的列值)。由行扫描值和回馈信号共同形成键编码。硬件电路按键设计原理图中用DSP2812的并行口P1设计4*4矩阵按键的电路如图14。在这次电路设计过程中,编写按键程序的思想,因为不同的按键有不同的编码,通过编码识别不同的按键,在通过软件查表,查出该键的功能,转向不同的处理程序。因此键盘处理程序的任务是:确定有无按键按下;判断哪一个键按下;形成键编码,转相应的处理程序。此外还要消除按键在闭合或断开时的抖动。消除抖动的方法可采用消抖电路(R
39、-S触发器电路硬件消除抖动),也可以采用延时方式软件消除抖动,延时后在重读,以跳过抖动期。在本次编程中,采用延时去抖的方法。按键电路的部分程序如下:#include#define uchar unsigned char#define uint unsigned int void dlms(void);uchar kbscan(void); /*函数说明*/void main(void)uchar key; while(1)key=kbscan(); /*键盘扫描函数,返回键码送key保存*/dlms(); void dlms(void)/*延时*/ char i;for(i=100;i0;i-
40、) uchar kbscan (void) /*键盘扫描函数*/ char sccode,recode;P1=0xf0;if(P1&0xf0)!=0xf0)dlms();if(P1&0xf0)!=0xf0)sccode=0xfe;while(sccode&0x10)!=0)P1=sccode;if(P1&0xf0)!=0xf0)recode=P1&0xf0;sccode=sccode&0x0f;return(sccode+recode);elsesccode=(sccode1)|0x01; return(0); 对键盘程序的键码做如下说明:开始检查0行有无按键按下,使P1.0=0,由于P1.4
41、P1.7是输入为保证读入正确,先把端口设置为输入,因此行扫描值为1111 1110B也就是FEH,存放到寄存器中,然后在读其它端口,如该行有按键按下,则其高四位就是就是按下的按键的列值,原行扫描值低4为就是该键的行码,将行值和列值合并就是该键的编码。EEDEBE7EEDDDBD7DEBDBBB7BE7D7B777表2 按键编码由此可见,键所在的行和列均为“0”,其他位为“1”,就是这个按键的编码,将4*4矩阵键盘的16个按键的键码按从515排成键码表,根据表的功能要求转向各自的功能处理程序。LED跑马灯程序的编写:这次电路设计中用了8个七段式数码管,由于仿真软件中没有DSP2812系列的单片机
42、,因此这次只能采用8051单片机来代替DSP2812,来验证硬件电路的设计是否正确,又因为采用的是C语言来实现编写程序,C语言的移植性很强,更能体现出C语言的通用性,所以由此可知用8051来代替DSP2812单片机加上用C语言来编程,更能论证得到此时硬件电路设计是否正确,可得到真实的硬件电路设计正确与否的可行性。编程来实现LED的轮流点亮,编写完该程序后,在keil C 里面经过编译调试通过后,在相应的软件中进行了仿真,测试了编写的程序的正确性,同时验证了硬件电路设计思想的正确性。3.2 LCD液晶显示程序 这是本次试验最难的一部分,因为初次接触到LCD,在编写的程序过程中看到说明书无从下手,
43、但经过漫长的编写和调试终于使LCD亮了起来。在仿真软件中没有中文显示的液晶显示器,因此用相同的思想去实现硬件电路设计中液晶程序编写的过程,首先你要了解LCD1602的工作时序,只有真正了解了,你才可以应用自如,信号的真值表如下:RSR/WE功能00下降沿写指令代码01高电平读忙标志10下降沿写数据11高电平读数据由此可得到一 指令的函数void write_com(unsigned char com)R/W=0; /0:写RS=0; /0:指令E=1; /下降沿 写数据LCD_DATA_PIN=com;E=0; 二、写数据函数void write_data(unsigned char data
44、)R/W=0; /0:写RS=1; /1:函数E=1; /下降沿 写数据LCD_DATA_PIN=data;E=0;在完成了以上基本的写数据函数和写指令函数后对LCD的驱动就完成了一大部分,在对LCD初始化时要根据使用说明书的有关指令初始化就可以了,在初始化的过程中要正确的使用延时函数,延时不适当会造成LCD显示不正常或无法显示。三、初始化LCD1602函数void LCD_init(void) P0=0xff; /设为输出 write_command(0x28); /4位显示-对应功能设置指令 write_command(0x0c); /显示开-对应开关显示控制指令 write_comman
45、d(0x01); /清屏-对应清屏指令 delay_nms(2); /delayLCD1602的指令集有很多,与本次编写程序有关的只有其中的一部分,具体详细的指令集可以参阅有关的由上面那些资料我们就可以写出驱动LCD1602的程序,由LCD1602指令集的功能设置我们可知它有两种驱动模式8位数据接口驱动和四位数据接口。由于仿真软件中的8051单片机IO口有限我使用的八位数据接口驱动模式,由于我们很少读LCD1602里面的数据所以我们可以把R/W引脚直接下拉到地,使LCD1602一直处于写状态,没了读状态,判断不了busy情况,只能用延时来等一下,这样又可以省一个IO口,这样设计可以增加数据的传
46、输速度,使指令和数据能快速的传输。具体程序详见附录。#include void Delay1ms(unsigned int count) unsigned int i,j;for(i=0;icount;i+)for(j=0;j120;j+);main() unsigned char LEDIndex = 0;bit LEDDirection = 1;while(1)if(LEDDirection)P1 = (0x01LEDIndex); if(LEDIndex=7)LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; Delay1ms(100); 因为在嵌入式系统开发过程中,硬件电路设计和测试是比较麻烦的,因此希望能在开发初期就对其中的相应部分进行尽可能的仿真。在此我简单介绍一下本次仿真用到的软件,当前比较流行的嵌入式系统仿真工具Proteus针对硬件电路设计的原理,为了检查电路设计正确与否,对部分硬件电路进行了仿真,使用的仿真软件是当今很流行的应用软件proteus。Proteus仿真软件的简介Proteus软件是来自英国Labcenter elec