微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一款基于ATmega162的智能仪器设计

一款基于ATmega162的智能仪器设计

时间:09-17 来源:互联网 点击:

灵敏度1 s左右就可以了。所以并没选用0809来做,而是在市面上选择了一个常用来做环境温度检测用的集成芯片——DS18B20,封装是TOP92的,使用单总线来传输数据。从成本的角度来看18B20一片是15元左右,比AD0809的价格便宜近一半,而且还可以省去购买传感器的钱,当然是在可以满足测量要求的前提下。

3 ATmega162的设计应用

根据设计任务要求,本设计使用AVR单片机中的ATmega162作为主控制CPU,使用89C2051作为辅助CPU来采集数字温度传感器 DS18B20传送出来的温度值,并通过8位端口的连接,传送温度值给ATmega162,从而实现多路温度值的采集。再通过ATmega162运算处理,实现多路温度的数字显示,同时还可以显示其相应的温度柱状图。

ATmega162可以在线仿真和在线固化,当需要在线仿真时应把仿真器的TCK,TDO,TMS,TDI脚分别上拉4.7 kΩ的电阻后和ATmega162对应的引脚连接起来。再把仿真器的NSRST与ATmega162的RST连接,仿真器的VTRES和 ATmega162的VCC连接,并把仿真器和ATmega162共地。当程序在线仿真时,其程序已经自动固化到CPU中了,这样就避免了像89C51那样出现固化失败的问题,系统框图如图1所示。

?

3.1 ATmega162与键盘及液晶显示器的设计

本设计中ATmega162采用的是3.686 4 MHz外接晶振。复位方式选用的是上电复位,AVR有3种复位方式(上电复位、外部复位、看门狗复位),因为考虑到工作电压不稳定的因素,采用上电复位其复位电路可以确保只有当VCC达到一个安全电平时,器件才能开始工作。

键盘是各种CPU不可缺少的输入工具,通过他可以输入程序和数据,从而实现人机对话。键盘的按键排成3×4的矩阵形式,I/O口线PC1~PC3为输入(设置为0),作为键盘的列扫描线;PC4~PC7为输出(设置为1),作为键盘的行扫描线,并上拉电阻。当判别有键按下时,延时去除键的机械抖动,再次判别闭合键的位置,若确实有键按下,计算键值并返回。

ATmega162的PA口的8位和液晶屏的数据端相连,把ATmega162的DDRA设置为0xFF,这样PA口只能为输出。而PB口是对液晶屏的控制,其PB0与RS相连,PB1与RW相连,PB2与复位端RST相连,PB3与使能端E相连作使能控制,PB4,PB5分别与液晶屏幕的片选 CSB,CSA相连。PD口与89C2051的P1口相连,作为温度数据的输入口,其DDRD也为0x00,同时PD1和PD2作为串行通信口分别与 MAX232的TIN1和TIN2相连接。PE0和PE1口作为控制温度传感器检测信号的输出,PE2作为温度检测完成信号的检测,因此DDRE为 0x07。

本设计中ATmega 162的PA口作为数据端与液晶屏的DB0到DB7相连,PB0与RS相连作为写状态,PB1与RW相连控制读状态,PB2与RST相连作为液晶屏复位控制,PB3与E相连是用来控制液晶屏的使能端,当数据及指令都正确写入液晶屏,ATmega 162置PB3为高电平时液晶屏开始执行写入的程序并调用新写入的数据,PB4、PB5和PB6分别与液晶屏的CSA、CSB和CSC相连,他们分别作为中间、左边和右边显示屏的片选,都是低电平有效。当需要在中间屏幕写,如显示数据时,ATmega 162先把PB4置为低电平,再置RS为高电平,接着是拉低RW的电压,然后把数据放在PA口上好让液晶屏能接收到,最后打开使能端E,这样一次数据传输就完成了。进行32次循环输入,就可以把一个16×16汉字输入到液晶屏里了。

值得注意的是,在使用仿真器时必须先把接AT-mega162的电路板加电后才能给仿真器上电,然后才使用AVR Studio进行在线仿真,否则是无法正确连接的。

在选择系统时钟源时,要正确配置熔丝位,熔丝位决定着系统采用时钟源的方式,不能通过普通的编程在MCU运行时更改,在调试之前应根据所选时钟源形式和唤醒方式,在仿真系统中正确配置熔丝位,使时钟源与熔丝位匹配。

3.2 DS18B20温度传感器设计

DS18B20作温度检测时使用的是单总线方式来传送指令和数据,这就要求传送时要有绝对精确的频率,对于18B20来说指令的精确度要达到微秒级,而如果AT-mega 162使用C语言来编写,程序是达不到这么精确的,因此本设计加入了89C2051,使用汇编语言来专门编写18B20的控制程序。两个CPU的通信是直接连接的,因为AT-mega 162可以设置端口的工作方向(由DDR值决定)。

89C2051的P1口和ATmega162的PD口连接,用作数据交换,89C2051的P3.0和P3.4与ATmega162的PE0和 PE1分别相连作为ATmega162对89C2051进行温度采集的控制。89C2051的P3.7与ATmega162的PE2连接作为 89C2051对ATmega162发出读数据指令端。在本设计中,可以接多个温度传感器,现只连接了两个,其数据端口分别连接到89C2051的 P3.1和P3.5。

4 结 语

本文通过

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top