基于AVR单片机的联机系统统分器的设计

时间:2022-08-24 08:19:50

基于AVR单片机的联机系统统分器的设计

摘要:文中介绍基于AVR单片机的一种比较通用的联机系统统分器的软、硬件设计。系统采用主从式结构,主机和从机均以单片机为核心控制器,主机提供多级中英文菜单滚动显示、矩阵式键盘输入、微型打印机接口输出等,通过串行通信对多台从机采集到的数字信号进行实时汇总统计,在实际应用中运行稳定可靠,可扩展性好。

关键词:AVR单片机;串行通信;联机系统

中图分类号:TP338文献标识码:A文章编号:1009-3044(2008)31-0971-03

A Design of Counter in Online System Based on AVR Single Chip

CHENG Tian-bao, TANG Ping, LI Hui-wu

(Guangdong Industrial University, School of Automation, Guangzhou 510006, China)

Abstract: The paper introduces a design of Online System’s counter based on AVR single chip ATmega16 and ATmega8. The counter consists of master and slave boards in which AVR chips was used as the core controller. The master single chip offered control function, such as Chinese and English control menu, matrix keyboard input, mini-printer output and gathering digital signals from slave single chips through serial communication. It works well in actual use and has perfect performance.

Key words: AVR single chip; serial communication; online system

1 引言

目前在各行业中以计分为主的各终端工作状态,或是独立工作,或是联机工作,均需要计算上分下分并进行统计的功能,为了能够正确及时统计各终端的计分情况,省去人工汇总统计的繁琐,本文研究并设计了一种较为通用的基于AVR单片机的联机系统统分器,采用一台主机多台从机组成的多机通信系统,在满足各终端数字信号采集的基础上,主机提供多级中英文菜单功能选择操作,控制主机和从机的各种工作状态。

AVR系列单片机是Atmel公司研发的增强型内置Flash的RISC精简指令集高速8位单片机,AVR单片机系统设计具有开发周期短、性价比高、可靠性好、功能强大等特点,且为系统的设计及程序的升级和维护提供极大的方便。ATmega16和ATmega8在此系列中性价比较高,用于设计该系统能够满足实际的要求。

2 联机系统统分器的结构及功能

2.1 系统结构

本统分器由主机和从机两部分组成,主机与从机之间采用串行通信的联机系统通信模式。主机主要负责操作界面的显示、矩阵式键盘的输入、打印机接口的输出、串行通信接口的输入/输出等,从机主要负责终端数字信号的采集、信号采集结果的显示、串行通信接口的输入/输出等。主从机的总体结构图分别如图1和图2所示。

图1 主机的总体结构图 图2 从机的总体结构图

2.2 系统功能与特色

本系统主机的功能与特色主要包括:1) 提供菜单选择模式进行人机交互操作,支持中英文操作菜单;2) 提供数据查看加密,不同的操作权限提供不同的加密处理;3) 提供密码确认换期统计;4) 提供实时时钟校正系统时间以及记录换期时间;5) 提供打印最近10期各从机数据汇总统计列单;6) 提供详细的数据查询选项,如当期数据统计情况、历史数据统计情况等;7) 提供查询各终端工作状态。

本系统从机的功能与特色主要包括:1) 提供终端数字信号采集显示,由主机控制清零;2) 提供数字信号换算处理;3) 提供更改数字信号换算比例;4) 提供掉电数据保护。

3 联机系统统分器硬件设计

3.1 控制芯片

控制芯片采用ATMEL公司ATmega16(主机)和ATmega8(从机)单片机,它们是基于AVR内核,采用RISC结构,低功耗CMOS的8位单片机,单时钟周期指令,可达到接近1MIPS/MHz的性能。 ATmega16具有16KB在系统编程/应用程序(ISP/IAP)Flash程序存储器、512字节的E2PROM、1K字节的片内SRAM、32个8位通用工作寄存器、32个可编程的I/O口、3个带有比较模式灵活的定时器/计数器、1个可编程的串行接口USART、可编程带内部振荡器的看门狗定时器等。利用它在系统编程功能可以方便的进行程序的修改调试,参数可保存在内置的E2PROM中,内置看门狗定时器可以在程序异常时及时复位[1-2]。

3.2 电压转换及掉电预检测电路

本系统主机和从机电路板供电电压均为9V,经MC7805稳压为5V供单片机使用。电压转换及掉电预检测电路原理图如图3所示。

在系统意外断电时,主机记录当前汇总的上分、下分及差额,从机记录当前终端的上分值、下分值,保证再次上电时主机和从机从断电时刻的数值继续工作。采用ATmega16/ATmega8内部的模拟比较器,注意选择合适的电容和参考电压,以保证有足够的时间写入需保存的参数。当模拟输入端AIN1的电压低于AIN0的电压时,模拟比较器输出ACO被设为1,触发中断,此时主机和从机需保存的参数被写入单片机内部的E2PROM中[4]。

3.3 DS1302时钟芯片电路

DS1302是DALLS公司推出的带涓流充电的时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,实时时钟/日历电路提供秒、分、时、日、月和年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式,DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个IO口线。主机上留有3.6V的电池座及电池,所以一旦时钟运行后,掉电也不会停止。

3.4 液晶显示接口电路

主机的液晶显示模块采用的液晶是HS12864-12_V4.0,该液晶有并行驱动方式和串行驱动方式两种,本系统主机采用串行驱

动方式,仅占用单片机三个IO口,分别是串行的片选信号(LCD_CS)、串行的数据口(LCD_SID)、串行的同步时钟(LCD_CLK),都与单片机的IO口直接相连。

从机的液晶显示模块采用的液晶是1602A_V1.0,该液晶有数据线4线传输驱动方式和数据线8线传输驱动方式两种,本系统从机采用数据线4线传输驱动方式,即仅用数据线D4-D7,节省单片机4个IO端口的使用。

3.5 微型打印机接口电路

本系统主机使用的微型打印机是:Galaxy Miniature Printer YH245B,该打印机有并行驱动方式和串行驱动方式两种,由于主机串口接口用于与从机通信,因此打印机采用并行驱动方式。并行驱动方式需要传输数据信号DATA1至DATA8,每个信号当其逻辑为“1”时为“高”电平,逻辑为“0”时为“低”电平;数据选通触发脉冲信号线-STB,上升沿时读入数据;打印机“忙”信号线BUSY,“高”电平表示打印机正“忙”,不能接收数据。

3.6 串行通信电路

从机与主机的通信采用RS-232C标准,此标准与单片机的TTL电平不兼容,故均采用MAXIM公司的MAX232进行电平转换,外部接0.1uF电容以提高抗干扰能力。主机和从机串行口经电平转换后,TXD和RXD交叉相连,GND直接相连,进行全双工通信。为了增加ATmega16的驱动能力,采用反向器74LS14通过两级反相来实现,从机除了用74LS14两级反相驱动数据线外,可各加一个光耦器件6N135保证通信的可靠性[5]。

3.7 矩阵式键盘电路

要实现查看数据密码加密、菜单功能切换、换期汇总统计等功能需要大量按键,因此采用4*4矩阵式键盘,仅占用8个IO端口,由于AVR单片机的IO口均有可选择的内部上拉电阻,故键盘电路输入口的上拉电阻可被省略。

3.8 数字信号采集电路

从机最主要的功能就是各终端计分信号的采集。实际应用中各工作终端引出来的计分信号电压高达12V的脉冲信号,而AVR单片机IO端口一般只能承受5V以下的电压,因此,计分信号通过分压电路分压滤波后输入到单片机的外部计数端口。

4 联机系统统分器软件设计

考虑到系统可移植性及今后的维护和扩充,系统软件采用C语言编写,编译工具采用ImageCraft的ICCAVR。ICCAVR是一种使用符合ANSI标准的C语言开发微控制器程序的工具,它是一个综合了编辑器和工程管理的集成开发环境(IDE)。

本统分器的主机与从机软件采用模块化设计思想,包括主机软件设计和从机软件设计两部分。

4.1 主机中英文菜单显示软件设计

主机通过液晶菜单显示与矩阵式键盘输 入实现人机交互操作。主机软件系统的核心部分在于菜单结构的设计,采用一种基于节点编号的三叉树状菜单,其目录结构体的定义如下:

typedef struct

{unsigned int KeyTab_MenuIndex;

//当前状态索引号

unsigned int KeyTab_MaxItems;

//本级菜单最大条目数

unsigned int KeyTab_PressOk;

//按下"回车"键时转向的状态索引号

unsigned int KeyTab_PressEsc;

//按下"返回"键时转向的状态索引号

unsigned int KeyTab_PressDown;

//按下"向下"键时转向的状态索引号

unsigned int KeyTab_PressUp;

//按下"向上"键时转向的状态索引号

void (*CurrentOperate)();

//当前状态应该执行的功能操作

}KeyTabStruct;

对于用户按键操作切换不同菜单时,只需修改一个指向对应菜单节点的全局菜单节点指针即可。将菜单分为显示型菜单和功能型菜单,显示型菜单项用于切换各级菜单,功能型菜单则执行最底层菜单所对应的操作,通过设置标志位来区分中英文菜单。主机的菜单树设计如图4所示,此菜单设计结构具有较强的可扩展性和可移植性。

4.2 主机中断服务程序设计

中断服务程序包括内部定时器中断,模拟比较器中断和串口接收中断。主机采用轮询的方法与从机进行通信,内部定时器中断服务程序负责每隔100ms发送地址信号给从机建立通信连接。模拟比较器触发中断后,关闭所有其它中断,将需保存的参数写入E2PROM。串口接收中断服务程序主要是根据主机与从机通信协议的约定提取数据,用以更新操作界面的信息和参数显示。

4.3 主机与从机通信协议的制定

主机采用轮询的方法定时发送从机地址到总线上与从机建立通信连接,建立连接后根据通信协议进行数据传输。根据实际需要采用7字节为一个完整的数据帧,帧格式如表1所示。

主机在接收到从机的数据帧后检验符合协议则提取数据,并将从机发送过来数据帧的第2字节发回给从机,用以确认数据帧已经正确接收和更新从机下一数据帧的发送。

4.4 主机查看数据加密软件设计

当用户需要查看多台从机的汇总统计数据或控制从机清零计分值时,通过键盘输入密码。单片机接收键入的代码,并与存储在E2PROM中的密码进行比较,如果密码正确,则允许用户查看相应的数据或执行相应的控制;如果密码不正确,允许用户重新输入密码。最多可输入三次,如果三次都不正确,单片机进入自锁状态,再次输入正确密码也无效(用管理员密码解除自锁状态后输入正确密码方有效)。密码分为管理员密码(8位)和用户密码(4位)两种,可起到重要数据的保密作用。

4.5 主机其他功能模块软件设计简介

主机功能模块还包括键盘扫描程序、微型打印机驱动程序、时钟芯片应用程序等。键盘扫描程序采用动态扫描的原理,将输入口置为高电平,然后分别依次置输出口为低电平,并在某次某列输出口为低电平时,判断输入口的电平是否有低电平,此称为一次扫描。若所扫描的那列键盘有按键被按下,则会有输入口的电平被拉低,然后根据输入口的状态判断究竟是哪个按键被按下。微型打印机并行驱动占用较多IO端口,而驱动则较为简单,根据使用手册提供的打印控制命令即可完成各种打印功能。时钟芯片采用三线接口与单片机进行同步通信,提供实时时钟用于校准系统时间。

4.6 从机软件设计简介

从机软件设计主要包括单片机内部定时器的应用、采集脉冲信号数换算比例的查看与更改。内部定时器0与定时器1采用外部计数模式用于采集终端的上下分脉冲信号,内部定时器2使用外部晶振来实现1秒定时更新定时器0与定时器1的TCNT0和TCNT1。采集脉冲信号数换算比例更改是通过键盘输入来更改采集到脉冲信号数与发送到主机数据的比例,通过软件编程实现三个按键“增加/查看”、“减少/更改”、“确定”的人机交互功能。

5 结论

本文介绍了采用ATmega16和ATmega8单片机作为主机和从机主控芯片的一种联机系统统分器的设计,在实现主机多级菜单功能操作应用和从机正确采集终端脉冲信号的基础上,实现主机与从机的多机联机通信,实际应用中体现了该统分器运行的可靠性和稳定性。在此基础上可作进一步研究将主机和从机之间的通信标准改为RS-485,提高数据传输距离(1.5Km以内);同时将主机控制芯片换为ATmega64,ATmega64拥有双串口的功能,利用另外一个串口与PC机进行通信,充分利用PC机的资源,使该系统功能更加强大、完善,应用也更加广泛。

该系统的创新点在于设计了一种较通用的联机系统统分器,其可应用于娱乐行业各系统的联机汇总,各销售终端刷卡机的联网统分等等。除此之外,在自动控制、仪器仪表等领域也可广泛应用。

参考文献:

[1] Atmel Corporation.ATmega16 Datasheet[EB/OL]..

[2] Atmel Corporation.ATmega8 Datasheet[EB/OL]..

[3] 沈文,Eagle lee,詹卫前.AVR单片机C语言开发入门指导[M].北京:清华大学出版社,2003.

[4] 马潮.高档8位单片机ATmega128原理与开发应用指南(上)[M].北京:北京航空航天大学出版社,2004.

[5] 王少卿,郭海珍,汪仁煌.基于AVR系列单片机的多机系统[J].微型电脑应用,2006,22(8):25-27.

[6] 雷钢,王宏远. 基于AVR单片机的控制系统设计[J].计算机与数字工程,2006,11(34):135-138.

上一篇:以就业为导向的职业教育实训教学 下一篇:浅议网络传输中数据加密技术的研究