Atmega128串口485通信

合集下载

ATmega128的外部并行接口器件扩展应用

ATmega128的外部并行接口器件扩展应用

ATmega128的外部并行接口器件扩展应用ATmega128片内的RAM有4K字节,这在8位单片机中算佼佼者。

因此,设计一般的应用系统,应尽量不采用外部扩展并行器件的设计。

这样不仅方便PCB板的设计,减少PCB板的面积,同时也提高了系统的抗干扰性。

对于必须采用外部并行器件扩展的设计,ATmega128的PORTA(低8位地址线和8位数据线复用)、PORAC(高8位地址线)口提供了并行扩展接口。

尽管并行接口的基本使用原理同一般的单片机相同,但由于ATmega128的结构上的特点,以及其使用了增强型的并行接口,因此在使用并行扩展接口时还需要仔细的设计。

其主要特性有:*外部并行扩展的地址从0x1100开始;*使用外部并行扩展时,应将MCUCR寄存器中的SRE位置“1”,允许外部并行扩展;*可将PORTC口高位不用的地址线释放,作为普通的I/O口使用;*可设置对不同区域采用不同的读写操作时序(加等待),用于配合扩展使用不同时序操作的外部并行器件。

5.5.1 外部扩展RAM存储器的设计下图给出一个外部扩展32K的RAM(6264)的译码参考电路。

图中使用了一片74HC138和与门,与门的输出作为6264的片选信号,其地址空间为0x0000 –0x8FFF。

74HC138其它7个引脚输出用于在地址大于0x9000以上空间扩展其它更多的并行接口器件,每根线选通的地址空间为4K。

由于ATmega128的RAM空间前4352个字节分配给芯片内部的通用寄存器、I/O寄存器和4K 字节的内部SRAM,所以外部并行扩展器件的起始地址是从0x1100开始的(见第二章内容)。

当MCU在对0X0000-0X10FF范围的SRAM地址空间操作时,实际是对芯片内部的SRAM或寄存器操作,尽管会影响地址总线、数据总线和ALE,但此时和不受影响,因此对相应的处在这段地址范围的外部扩展的存储器没有影响。

在图5.6的设计中,实际上已经把6264中地址范围在0x0000-0x0FFF的一段存储单元“移”到ATmega128的RAM地址空间高端0x8000-0x8FFF处。

ATMEGA128实验开发板用户手册

ATMEGA128实验开发板用户手册

ATMEGA128实验开发板用户手册V1.32011年5月E-mail: sdfdlut@1. ATMEGA128单片机概述ATMEGA128单片机是ATMEL公司推出的一款基于AVR内核,采用RISC结构,低功耗CMOS的8位单片机。

由于在一个周期内执行一条指令,ATMEGA128可以达到接近1MIPS/MHz的性能。

其内核将32个工作寄存器和丰富的指令集联结在一起,所有的工作寄存器都与ALU(逻辑单元)直接连接,实现了在一个时钟周期内执行一条指令可以同时访问两个独立的寄存器。

这种结构提高了代码效率,是AVR的运行速度比普通的CISC单片机高出10倍。

ATMEGA128单片机具有以下特点:128KB的可在系统编程/应用编程(ISP/IAP)Flash 程序存储器,4KB E2PROM,4KB SRAM,32个通用工作寄存器,53个通用I/O口,实时时钟计数器(RTC),4个带有比较模式灵活的定时器/计数器,2个可编程的USART接口,一个8为面向字节的TWI(I2C)总线接口,8通道单端或差分输入的10位ADC(其中一个差分通道为增益可调),可编程带内部振荡器的看门狗定时器,一个SPI接口,一个兼容IEEE 1149.1标准的JTAG接口(用于在线仿真调试和程序下载),6种可通过软件选择的节电模式。

2. ATMEGA128实验开发套件本实验开发套件包括:●测试通过的MEGA128实验板1块;●配套资料光盘1张;●AVR ISP并口下载线1条;●5110液晶模块1个;●遥控器1个;●USB ASP下载线(选配);●AVR JTAGICE仿真器(选配)。

其中资料光盘的内容主要包括:●ATMEGA128实验开发板用户手册.pdf(本文档);●AVR教程:⏹WINAVR 使用入门.pdf⏹AVR Studio 使用入门.pdf⏹AVR基本硬件线路设计与分析.pdf⏹芯艺的AVR_GCC教程.pdf⏹AVR的IO结构分析与范例.mht⏹AVR高速嵌入式单片机原理与应用●芯片手册(包括24C02、74HC595以及中文的I2C协议文档等内容)●开发工具软件;⏹AVR Studio V4.12;⏹WINAVR(GCC) 编译器;⏹IAR for AVR V4.10A;⏹并口下载工具PONYPROG V2.06;⏹ICCAVR 双龙提供;图3 新建工程对话框点击Next,进入第三步。

Atmega128开发板使用说明书

Atmega128开发板使用说明书

Atmega128开发板使用说明书概要介绍Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。

按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。

Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。

提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。

编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。

请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反2.硬件布局说明步进电机接口直流电机接口数字温度传感器SD卡插座光敏电阻ADC输入电位器NTC热敏电阻JTAG接口继电器接口9V电源输入接口DAC输出接口RS485接口RS232接口红外发射管ISP编程接口LCD对比度调节电位器122 * 32点阵LCD接口16 * 2字符LCD接口红外接收管433M射频模块接口3 *4 矩阵键盘3.接口说明接口管脚顺序的确认方法●对于有卡口的接口,应对着卡口的方向看,最左边为第一个管脚,如下图所示:●对于用螺丝压线的接口,应对着入线的方向看,最左边为第一个管脚,如下图所示:特别提示:ISP下载接口与JTAG接口封装相同,下载程序时使用ISP接口,不要插到JTAG 接口上4.硬件开发环境的建立本站出售的AVR单片机学习板就是一套完整的硬件环境,它由学习板、电源、并口ISP 下载线等组成。

Atmel ATmegaS128 微控制器商品说明书

Atmel ATmegaS128 微控制器商品说明书

The new Atmel ® AVR ® ATmegaS128 microcontroller (MCU) brings the industry-leading AVR core to the aerospace industry. The ATmegaS128 MCU is designed for enhanced radiation performance and increased reliability in space applications. It takes advantage of mature Atmel AVR tools designed and used in the mass market worldwide for many years. The ATmegaS128 microcontroller targets many of the most common space applications, which typically require a small footprint, low power and analog control of motors and sensors.Key FeaturesHigh-performance, Low-power 8-bit Atmel AVR MCU• Advanced RISC architecture / Up to 8MIPS• On-chip 2-cycle multiplier• 3V-3.6V / 0 - 8MHz operating voltages & speed grades High-endurance Non-volatile Memory • 128 Kbytes of Flash program memory• 4 Kbytes EEPROM – 4 Kbytes internal SRAM1Advance Risc Architecture 8 Mips3.0 3-55 • Up to 64 Kbytes optionalexternal memory space • SPI interface for in-system programmingPeripheral Features • Two 8-bit and two 16-bit timers/counters • 6 PWM channels • 8-channel, 10-bit ADC• TWI/USARTs/SPI serial interface • Programmable watchdog timer • On-chip analog comparator Special Microcontroller Features• Power-on reset and programmable brown-out detection• Internal calibrated RC oscillator • External and internal interrupt sources• Six Sleep modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby, and Extended StandbyKey Highlights for Space Environment• Full wafer lot traceability • 64-lead ceramic package (CQFP) • Space screening • Space qualification• Total ionizing Dose: up to 30 Krad (Si)• Single event latch-up LET > 62.5MeV.cm²/mg• Single event upset LET > 3 MeV.cm²/mg•SEU 10-3 to 10-1 error/ device/dayATmegaS128 Starter kitTo ease your design process and reduce time-to-market, Atmel delivers a complete starter kit STK600 and development system for the ATmegaS128 AVR microcontroller. With its advanced features for proto-typing and testing new designs, the kit gives designers a head start for developing code on AVR devices. Customers can start with the industrial version using the ATmega128 MCU or the Space Version ATme-gaS128 device as both share the same pinout.Atmel Corporation 1600 Technology Drive, San Jose, CA 95110 USA T : (+1)(408) 441. 0311 F : (+1)(408) 436. 4200 | © 2015 Atmel Corporation. / Rev.: Atmel-45160A-ATmegaS128-Aerospace-Rad-Tolerant-Flyer_E_US_102015Atmel,® Atmel logo and combinations thereof, Enabling Unlimited Possibilities,® and others are registered trademarks or trademarks of Atmel Corporation in U. S. and other countries. Other terms and product names may be trademarks of others.Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN THE ATMEL TERMS AND CONDITIONS OF SALES LOCATED ON THE ATMEL WEBSITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RE-LATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS AND PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and products descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.Atmel StudioAtmel Studio is the integrated development platform (IDP) for developing and debugging Atmel AVR and Atmel | SMART ARM ® processor-based MCU applications. The Atmel Studio IDP gives you a seamless and easy-to-use environment to write, build and debug your applications written in C/C++ or assembly code. Atmel Studio supports all 8- and 32-bit AVR MCUs. It also connects seamlessly to Atmel debuggers and development kits.Atmel Software FrameworkThe Atmel Software Framework (ASF) is an MCU software library providing a 1,600 project examples of embedded software for Atmel Flash-based MCUs, including AVR and Atmel | SMART devices. This library contains basic C code examples for all ATmegaS128 peripherals.Application NotesIn addition to the Atmel Software framework, Atmel provides a broad range of application notes to implement different peripherals of the ATmegaS128 device. Most of those ap-plication notes are provided with source code in C language.。

ATmega128简介

ATmega128简介

◦ ◦ ◦
2.2、产品特点 5)特殊微控制器特性

复位、中断源、省电模式等 53个可编程I/O口线 64引脚TQFP与64引脚MLF封装 2.7~5.5V(ATmega128L) 4.5~5.5V(ATmega128) 0~8MHZ(ATmega128L) 0~16MHZ(ATmega128)
6)I/O和封装

中档(标准) AT90S系列单片机,40脚 ◦ AT90S1200/2313/8515/8535 ◦ AT89C51 高档ATmega系列单片机 64脚 ◦ ATmega8/16/32/64/128 ◦ 存储容量为8/16/32/64/128KB ◦ ATmega8515/8535

2、ATmega128单片机简介
MCUCR寄存器如下所示:
ATmega128单片机结构框图
端口F驱动
端口F 数据寄存器 端口F方向 数据寄存器
端口A驱动
端口A 数据寄存器 端口A方向 数据寄存器
端口C驱动
端口C 数据寄存器 端口C方向 数据寄存器
内部晶振 晶振 JTAG接口 编程计数器 堆栈指针 晶振 时序控制
在线调试
编程Flash
◦ 电路:自动上电复位、看门狗、掉电检测, ◦ 多个复位源等
8)具有多种省电休眠模式、宽电压运行 (2.7~5V),抗干扰能力强,可降低一般8位机 中的软件抗干扰设计的工作量和硬件的使用量。 9)集成多种器件和多种功能,充分体现了单片机 技术向片上系统SOC的发展方向过渡。
1.2 、AVR系列单片机的选型 AVR单片机有3个档次: 低档Tiny系列单片机, 20脚 ◦ Tiny 11/12/13/15/26/28 ◦ AT89C1051,AT89C1052

atmega128实用双串口通讯

atmega128实用双串口通讯

}
tx_data[21] =data;
led_2_0();
//----------------数据校验、处理部分
if( (tx_data[0]==0xfe) && (tx_data[21]==0x16) )

//--------------------------略 }
} //--------uart 1----RX-----中断方式- 同上---------------------ISR(USART1_RX_vect) {
unsigned char status,data; status=UCSR1A; data=UDR1; unsigned char f; //----status &= ~(FRAMING_ERROR1 | PARITY_ERROR1 | DATA_OVERRUN1); //----f=data;
//---------------------------------------------
#define
led_1_1() (PORTE |= bit(3))//--1
#define #define #define #define #define #define #define #define #define
Atmega128 实用串口通讯程序
1、 双串口异步通讯, USART0——发送使能,接收使能 、2400bps/8 位/偶校验/1 停止位
USART1——发送使能、9600bps/8 位/无校验/1 停止位
2、 外围 5 个 LED 指示 共阳极, PE3~PE7
#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <avr/interrupt.h> #include <avr/wdt.h>

AVR ATmega128全功能工业控制器设计文档说明书

AVR ATmega128全功能工业控制器设计文档说明书

AVR单片机的全功能工业控制器设计吴焕琅深圳市中天越华自动控制科技有限公司摘要:介绍一款工业级的实用全功能控制器。

该控制器能隔离采集多种输入信号,输出多种控制信号;具有实时时钟、历史数据存储功能,彩色液晶显示界面,带有触摸屏操作和远程通信接口。

核心部分CPU采用AVR ATmega128单片机。

目前已用于批量生产。

关键词:隔离采集控制单片机彩色显示485接口ATmega128DS1642引言在自动控制产品的设计过程中,实现方案的选择常常是很矛盾的。

使用可编程逻辑控制器(PLC)和人机界面(HMI)来实现,开发速度较快,但成本太高,所开发的产品没有市场竞争力;使用单片机开发,成本低但开发周期长、开发量大且通用性不好。

用户需要的是一种成本低、开发周期较短、通用性较好的控制器,因此全功能工业控制器有很大的应用市场。

全功能工业控制器的整个电路分为信号隔离输入部分、控制器输出部分、实时时钟与历史数据存储部分、彩色液晶显示和触摸屏控制部分、通信接口等。

1信号隔离输入电路信号隔离输入电路分为开关量隔离输入、模拟量隔离输入、高速电脉冲隔离输入,电路如图1所示,开关量的隔离输入较为简单,输入信号采用光耦进行隔离后送入单片的普通I/O,单片机用查询方式进行采集。

图1信号隔离输入电路高速电脉冲的采集需要注意的是,所设计的电路必须适应高速信号采集的要求,因此隔离光耦应采用高速光耦(如6N137等)。

采用查询方式采集高速脉冲容易造成采集数据的丢失,高速脉冲应采用中断方式进行采集。

模拟量隔离采集是本控制器的一个重点和难点,笔者之前采用了线性光耦等多种方式进行模拟量的隔离采集实验,均未获满意的效果。

这里采用一种先将模拟量数字化(使用AD7705),然后通过有光耦隔离的数据口送到CPU进行模拟量隔离采集的方式,效果理想。

2控制器输出电路控制器的输出方式有继电器输出、晶体管输出、模拟电压输出,如图2所示。

继电器输出和晶体管输出电路较为简单,这里不作详细的介绍。

基于ATmega128的工业酶生产数据采集器的通信设计

基于ATmega128的工业酶生产数据采集器的通信设计

基于ATmega128的工业酶生产数据采集器的通信设计牛睿;刘飞【摘要】随着生物工程规模化生产的发展,自动控制的理论和方法已经在生化工业中得到了很好的应用.以工业酶发酵数据采集器为课题,采集器以ATMEL公司的ATmega128为核心,简要介绍了工业酶发酵数据采集器的设计组成,重点介绍了利用ATmega128的USART接口完成数据采集器与上位机通信的实现方法.通信协议采用了已被广泛应用的Mod bus协议,最终实现了对工业酶发酵罐系统可靠的远程监控.【期刊名称】《现代电子技术》【年(卷),期】2008(031)013【总页数】4页(P128-131)【关键词】ATmega128;USART;Modbus;工业酶发酵【作者】牛睿;刘飞【作者单位】江南大学通信与控制工程学院,江苏无锡,214122;江南大学通信与控制工程学院,江苏无锡,214122【正文语种】中文【中图分类】TN9191 引言近年来,我国的生物工程技术发展迅速,酶发酵过程是生物工程研究成果转化为工业产品的重要环节。

发酵的过程都是一个微生物生长代谢的复杂过程,发酵系统都体现出多参数、非线性、强耦合的特征。

因此对发酵过程可靠的数据采集是对生物发酵系统进行分析的前提和基础。

ATMEL公司的AVR单片机,是一种高性能低功耗的8位单片机。

由于优越的性价比,目前已广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。

本文简要介绍了以AVR的ATmega128为MCU设计开发的工业酶发酵数据采集器,并详细说明了基于ATmega128的工业酶发酵数据采集器与上位机进行通信的一种实现方法。

2 数据采集器的总体要求及功能设计(1) 输入:采集器主要对生物酶发酵环境的PH值、溶氧量、发酵温度、进入发酵罐的空气流量、是否有泡沫等数据进行采集。

需要采集的数据在进入单片机采集器之前,已经通过专用的前置测量变送模块变换成了0~5 V的标准电压量。

基于Atmega128的串行AD(TLV1544)设计

基于Atmega128的串行AD(TLV1544)设计

基于Atmega128的串行AD(TLV1544)设计院系:武汉理工大学华夏学院信息系实验学生:韩韬(电信1091)指导老师:钟学斌二零一一年七月目录1、设计任务 (4)2、芯片简介 (4)2.1 特点 (4)2.2 引脚说明 (4)2.3 电气特性 (5)2.4 时序分析 (6)3、系统方案设计 (9)3.1 信号输入处理模块的论证与选择 (9)3.2 AD转换模块的论证与选择 (10)3.3 软件程序模块的论证与选择 (10)4、系统理论分析与计算 (11)4.1 信号输入处理电路的分析与计算 (11)4.2 AD转换电路的分析与计算 (11)4.3软件程序的分析与实现 (11)5、电路设计 (16)5.1 系统总体框图 (16)5.2 信号输入处理电路原理图 (16)5.3 AD转换电路原理图 (16)5.4 电源 (17)6、测试方案与测试结果 (17)6.1 测试方案 (17)6.2 测试条件与仪器 (17)6.3 测试结果与分析 (17)6.3.1 测试结果(数据) (18)6.3.2 测试分析与结论 (18)附录1 参考文献 (19)附录2 系统原理图 (19)1、设计任务设计制作一个AD转换电路,要求使用Atmega128对测量数据进行处理及显示。

AD转换芯片要求使用10位串行模数转换芯片TLV1544。

2、芯片简介2.1 特点〃转换时间≤10 微秒〃10 位分辨率的ADC〃可编程掉电模式1μA 的...〃宽范围的单电源供电为2.7 V 至5.5 V〃模拟0 V 至VCC 输入范围〃内置模拟4路复用模拟输入通道〃TMS320 系列DSP 和微处理器SPI 和QSPI 的兼容串行接口〃转换结束标志(EOC)〃固有的采样和保持功能〃内建自测试模式〃可编程电源和转换率〃为扩展采样的异步起动转换〃硬件I / O 输入时钟相位调整2.2 引脚说明名称序号属性说明A0-A3 6-9 I 模拟输入端口。

ATmega128 ATmega128L 介绍

ATmega128 ATmega128L 介绍
ATmega128 ATmega128L 介绍
ATmega128 ATmega128L 介绍
ATmega128/128L 带 128K 字节 FLASH 的在线可编程 8 位微控制 器 是 AVR 系列中功能最强的单片机,掌握了 ATmega128 的开发应用, 对其它 AVR 单片机的开发应用等于杀鸡用牛刀,快极了 1 特 点
ATmega128 具有一整套的编程和系统开发工具 C编译器 宏汇编器 调试/模拟器 JTAG ICE 在线仿真器和SL-MEGA128评估板 二 ATmega103 和 ATmega128 的兼容性
ATmega128 是一种很复杂的微控制器 它的 I/O 地址取代了保留在AVR指令集中的 64 个 I/O地 址 为确保向后兼容 ATmega103 ATmega103上所有I/O的位置与ATmega128上的相同 很多附加的 I/O 地址被加到一个从$60到$FF的扩展外部I/O空间中(例如 在ATmega103 的内部 RAM 空间中) 这些地址只能用 LD/LDS/LDD 和 ST/STS/STD 指令访问 而不能用 IN 和 OUT 指令 内部 RAM 空 间的重定位对于ATmega103用户来说可能仍是一个问题 同样 如果代码使用绝对地址那么增加的中 断向量也是一个问题 要解决这些问题 可以通过编程一个熔丝M103C来选择 ATmega103 兼容模式 在这一模式下 不能使用扩展I/O空间中的程序 所以内部 RAM象ATmega103一样定位 同时 扩展 中断向量被去除 ATmega128 百分之百与 ATmega103引脚兼容 在PCB上可以替代ATmega103 应用笔记 “用ATmega128 替换 ATmega103” 中说明了用户在用ATmega128 替换 ATmega103时应 注意的事项 三 ATmega103 兼容模式

atMega128的bootloader例程

atMega128的bootloader例程
//读取校验
char CheckFlash(void)
{
unsigned int i;
unsigned int TempInt;
unsigned int TempInt2;
for (i=0;i<ageByte;i+=2)
{
TempInt = read_program_memory(PageAddress + i,0x00);
//大于64K控制
if (PageAddressHigh) RAMPZ = 1;
else RAMPZ = 0;
}
/*****************************************************************************/
char GetPage(void)
TxChar(BootSize);
TxChar(BootVer);
break;
case 'L': //写配置信息
break;
case 'R': //读配置信息
break;
case 'I': //读信息
break;
default :
break;
}
//
void FlashLoad(void)
{
TxChar('O')
TxChar('K'); //发送OK
while (1)
{
GetPageNumber();
if (RealPageAddress == 0xffff) return;

AVR ATMEGA128 串口简单好使程序

AVR ATMEGA128 串口简单好使程序
}
//以上是串口发送接收函数
int main(void)
{
//PORTE=0B01000011;//调整让单片机的发送和接收直接连到MAX3232上
//DDRE =0B11100110;
PORTE=0B01110011;//针对本电路中的相关设置RS485通信
DDRE =0B11110110;
unsigned char temp;
Usart0_init();
while(1)
{
temp=Usart0_receive();
Usart0_transmit(temp);
//Usart0_transmit(0x5f);
}
//return 0;
}
#include <avr/io.h>
#include <avr/interrupt.h>
#include<util/delay.h>
#define UDRE0 5
#define RXC0 7
void Usart0_init(void) ;
//设置波特率9.6k,8位数据位,无校验,接收发送使能,1位停止位
UCSR0B=(1<<RXEN0)|(1<<TXEN0); //发送接收使能,使用查询方式,故没有使能中断
}
void Usart0_transmit(unsigned char c) //查询方式发送接收字符函数
{
while( !(UCSR0A&(1<<UDRE0)));//等待发送缓冲区为空
UDR0=c;
void Usart0_transmit(unsigned char c);

atmega128L串口通信详解

atmega128L串口通信详解

/***********************************************************************
void uart0_init(void00; //关闭 UART00 //不使用倍速发送(异步) //数据位为 8 位 //异步正常情况下的计算公式 //接收使能和发送使能
while (*s) { putchar0(*s); s++; } putchar0(0x0a);//回车换行 //putchar0(0x0d); } /*********************************************************************** ***** 函数功能:主程序 入口参数: 出口参数: ************************************************************************ ****/ void main(void) { unsigned char i; uart0_init();//UART0 初始化 puts0("HELLO!"); while(1) { puts0("test ok!"); } }
eg:
UCSR0C=0B00000110 //异步模式,禁止奇偶校验,停止位为 1 位,数据位为 8 位
4、设置 UBRR:
UBRR 的设置和这些参数有关:U2X0,CPU 频率,波特率 当 U2X0 为 0 时,即异步正常模式 异步正常模式下 异步正常模式 ,UBRR 的计算公式: 1、U2X=0 时的公式计算 UBRR0L= (F_CPU/BAUDRATE/16-1)%256; UBRR0H= (F_CPU/BAUDRATE/16-1)/256; 2、U2X=1 时的公式计算

485通信常见问题及解决方案

485通信常见问题及解决方案

1. MAX488/MAX490在点对点通信中工作很正常,为何在点对多点通信时无法正常通信?因为MAX488/MAX490没有发送使能控制,所以其输出无法处于高阻态,当多个输出被连接在一起时(即点对多点通信时),差分输出信号线被多个发送器驱动(通常为TXD=1对应电平状态);当某个节点开始通信,且发送TXD=0对应差分电平时,A,B两线上将形成很大短路电流,若长时间工作,则接口芯片将损坏;而这种情况不会在点对点通信中发生,且不会出现在点对多点通信中处于点一方,这也是象MAX488/MAX490和其它部分没有发送使能控制接口适用范围。

以上是造成这个问题原因,当然,类似情况也会出现在那些带使能控制而软件没有编程控制使能接口芯片中。

2. RS-485/RS-422接口为何在停止通信时接收器仍有数据输出?因为RS-485/RS-422在发送数据完成后,要求全部发送使能控制信号关闭且保持接收使能有效,此时,总线驱动器进入高阻状态且接收器能够监测总线上是否有新通信数据。

不过因为此时总线处于无源驱动状态(若总线有终端匹配电阻时,A和B线差分电平为0,接收器输出不确定,且对AB线上差分信号改变很敏感;若无终端匹配,则总线处于高阻态,接收器输出不确定),轻易受到外界噪声干扰。

当噪声电压超出输入信号门限时(经典值±200mV),接收器将输出数据,造成对应UART接收无效数据,使紧接着正常通讯犯错;另外一个情况可能发生在打开/关闭发送使能控制瞬间,使接收器输出信号,也会造成UART 错误地接收。

处理方法:1)在通讯总线上采取同相输入端上拉(A线)、反相输入端下拉(B 线)方法对总线进行钳位,确保接收器输出为固定“1”电平;2)采取内置防故障模式MAX308x系列接口产品替换该接口电路;3)经过软件方法消除,即在通信数据包内增加2-5个起始同时字节,只有在满足同时头后才开始真正数据通讯。

3. 采取RS-485/RS422接口通讯时,在什么条件下需要采取终端匹配?电阻值怎样确定?怎样配置终端匹配电阻?在长线信号传输时,通常为了避免信号反射和回波,需要在接收端接入终端匹配电阻。

基于ATmega128的测控系统的Modbus通信

基于ATmega128的测控系统的Modbus通信
2 硬件结构及通信原理
单片机 AT meg a128 是 AT M EL 公司的一款基 于增强精简指令集 RISC 结构的 8 位微控制器 。 它 运用 H arva rd 结构 , 在前一条指令执行时就取出现 行指令 , 再以一个周期执行指令[ 2] 。 它拥有大容量 的存储器及各种接口 , 其中与实现 Modbus 通信相 关的接口是一高度灵活的串行通信设备即全双工通 用同步 /异步串行收发模块 USA RT , 分为时钟发生 器 、数据发送器和接收器 3 部分(见图 2)。 控制寄 存器为所有模块共享 。
大的优点来弥补下位机相对地速度慢 、容量小等不 足 , 从而更趋完善 。
5 结 语
M odbus 串行通信协议一般多用在 16 或 32 位 P LC 通信模块中[ 4] , 但本文经巧妙的程序处理后在 8 位 AV R 单片机中也实现了 Mo dbus 协议(Mo dbus RT U 模 式)及与上 位机组态 软件 的实时 通信 。 这无疑使该微 机监控系统存储数据的 能力大大提 高 , 现场测试的危险性减小 , 更重要的是测试仪不再 是一台孤立的仪器 , 不用开发任何驱动程序而只通 过简单的组态即可方便地接入任何支持 M odbus 协 议的组态软件中 , 从而有效克服了常见的“自动化孤 岛”现象 。本文所用的设计思想和方法对类似下位 机系统有普遍的启发和借鉴意义 。
0 引 言
最初由莫迪康(M odicon)公司制定的 M odbus 协议现已逐渐发展成为流行的 开放性工业标 准之 一 , 且 被 国 内 外知 名 组 态 软 件 如 iF IX 、组 态 王 、 MCGS 等支持 。 本文所涉及的 下位机系统是 采用 AT meg a128 单片机开发的 、用来测试及预测高压开 关相关机械特性的高压开关测试仪 。高压开关的工 作环境一般较危险 , 不适于近距离采集现场数据 , 而 Mo dbus 协议作为普遍通用的串行通信协议 , 恰可 实现远距离传输数据 。 故本文在 A T mega128 单片 机中开发了 Mo dbus 通信接口模块 , 以与无需再开 发任何驱动程序的上位机组态软件通信 。

基于AISG协议的电调天线控制器设计

基于AISG协议的电调天线控制器设计

基于AISG协议的电调天线控制器设计胡晶晶;季彦呈;李骏马【摘要】针对传统机械天线不能实时调整天线参数,增加了网络优化难度,提出一种电调天线控制系统,采用主从方式对天线设备进行远程实时控制.通过研究AISG 2.0协议,实现AISG协议物理层、链路层和应用层三层协议模型.介绍了控制单元的硬件结构、软件部分和实验结果.提出基于霍尔传感器实时反馈电机运转情况的控制系统,精度可以达到0.005°,远远高于市场上的电调天线的精度.实验结果表明,该方案实现了对电调天线的远程控制,并且运行稳定,效率高.【期刊名称】《现代电子技术》【年(卷),期】2018(041)023【总页数】5页(P1-5)【关键词】电调天线控制器;控制单元;远程控制;AISG协议;硬件结构;软件结构【作者】胡晶晶;季彦呈;李骏马【作者单位】南通大学,江苏南通 226019;南通大学,江苏南通 226019;南通大学,江苏南通 226019【正文语种】中文【中图分类】TN82-34;TP393.040 引言随着时代的发展和社会的进步,人们对无线通信的需求和网络质量的要求也与日俱增,无线网络优化问题变得越来越重要。

网络运营商也更加关注网络质量的提高和改进。

网络优化是提高移动网络质量最直接有效的方法,也是网络通信中的关键技术,其中基站天线的优化是网络优化的主要方法。

网络优化过程中,由于改变天线高度的做法实现难度较高,所以经常通过调整天线倾斜角度来改变小区覆盖范围。

选择合适的倾斜角可以得到合适覆盖范围,使得干扰减到最小,从而得到最佳的信号强度。

根据天线的倾角是否可调,将天线分为电调天线和非电调天线。

非电调天线就是传统的机械天线,在恶劣天气下无法优化、调整天线,不能及时解决“容量呼吸”问题,短时间难以进行整网优化。

电调天线能够实现远程调整,调节优化效率高,实时性强,实际覆盖范围更接近网络预测规划,让覆盖更加精细[1]。

AISG协议是由世界主流的移动通信系统厂商和微波天线相关厂家联合制定的天线智能化设备与基站之间的通信规范[2]。

消谐装置作用及工作原理

消谐装置作用及工作原理

PT二次消谐装置说明书一、概述在电力系统中,由于电压互感器的非线性电感与线路对地电容的匹配而引起铁磁谐振过电压,直接威胁电力系统的安全运行,严重时会引起电压互感器(PT)的爆炸,造成事故。

传统的解决办法是在电压互感器开口三角两端并接一个电阻,从理论上讲对频率越低的铁磁谐振阻值应取得越小,但太小的电阻并在PT开口三角上会影响其正常运行,严重时会造成PT烧毁。

另外因为铁磁谐振的频率往往不是单一的,所以这种方法就难于消除所有频率的谐振。

针对上述情况,国内一些厂家先后研制了一些分频消谐装置。

这些装置的原理均是采用模拟选频的原理,功能单一,只对单一频率的谐振有效。

由于电网中谐振往往是多种频率同时存在,所以其适应性较差,模拟电路实现的选频与微机选频相比其选频效果也差,有时电网的过渡过程等也会造成误动。

PWX-50系列微机消谐装置将微机技术用于电网消谐,利用计算机快速、准确的数据处理能力实现快速傅里叶分析,其选频准确。

通过对PT开口三角电压的采集,对电网谐振时的各种频率成份能快速分析,准确地辨别出:①单相接地;②过渡过程;③电网谐振。

如果是谐振,计算机发出指令使消谐电路投入,实现快速消谐。

经实际运行证明本装置对各种高频、低频、工频谐振均判断准确,动作迅速,较完善地解决了电力系统中电网的消谐问题,并能记录存储谐振的次数及谐振频率,可广泛适用于发电厂、变电站及钢铁、煤炭、石油化工等大型厂矿企业的电力系统。

二、装置用途:PWX-50 系列微机消谐装置将微机技术用于电网消谐,利用计算机快速、准确的数据处理能力实现快速傅里叶分析,其选频准确。

通过对 PT 开口三角电压的采集,对电网谐振时的各种频率成份能快速分析,准确地辨别出:①单相接地;②过渡过程;③电网谐振。

如果是谐振,计算机发出指令使消谐电路投入,实现快速消谐。

经实际运行证明本装置对各种高频、低频、工频谐振均判断准确,动作迅速,较完善地解决了电力系统中电网的消谐问题,并能记录存储谐振的次数及谐振频率,可广泛适用于发电厂、变电站及钢铁、煤炭、石油化工等大型厂矿企业的电力系统。

ATmega128USART资料

ATmega128USART资料

2018/11/7
机电系统控制电路设计
9
Atmega128的USART
数据帧格式
串行数据帧由数据字加上同步位( 开始位与停止位) 以 及用于纠错的奇偶校验位构成。USART 接受以下30 种组 合的数据帧格式: 1 个起始位 5、 6、 7、 8 或9 个数据位 无校验位、奇校验或偶校验位 1或2 个停止位 数据帧以起始位开始;紧接着是数据字的最低位,数 据字最多可以有9 个数据位,以数据的最高位结束。如果 使能了校验位,校验位将紧接着数据位,最后是结束位。 当一个完整的数据帧传输后,可以立即传输下一个新的数 据帧,或使传输线处于空闲状态。
机电系统控制电路设计 5
Atmega128的USART
掌握串口通讯需要了解的知识内容为:
电平变换:TTL电平——RS-232电平 了解数据帧格式内容
控制寄存器与状态寄存器的设置
通讯波特率的设置 单片机如何与计算机进行串口通讯 串口调试助手软件 如何实现多机通讯
2018/11/7
2018/11/7 机电系统控制电路设计 1
Atmega128的USART
单片机的通信方式主要有两种:并行通信和串行通信。 并行通信是指数据的各位同时发送或接收。串行通信是 指数据一位一位顺序发送或接收。
单片机的串行接口是一个可编程的全双工串行通信接口。
可以用作异步通信方式(UART)与采用串行接口的外围 设备相连接。 ATmega128 具有两个USART,USART0(PE0-RXD0,PE1TXDO)和USART1(PD2-RXD1,PD3-TXD1)。USART0和 USART1具有不同的I/O寄存器。
机电系统控制电路设计
6
Atmega128的USART

Atmega128串口485通信

Atmega128串口485通信

{软件环境:ICC AVR 6.31A硬件平台:atmega128a实现UART0的半双工485通信,中断方式接受,查询方式发送。

485的收发控制引脚为PE2。

供大家学习交流使用}1,以下是delay.h文件#ifndef _delay_h_#define _delay_h_//void delay_nus(unsigned int n);//void delay_nms(unsigned int n);//void delay_1us(void);//void delay_1ms(void);void delay_1us(void) //1us延时函数{NOP();}void delay_nus(unsigned int n) //N us延时函数{unsigned int i=0;for (i=0;i<n;i++) delay_1us();}void delay_1ms(void) //1ms延时函数{unsigned int i;for (i=0;i<1140;i++) ;}void delay_nms(unsigned int n) //N ms延时函数{unsigned int i=0;for (i=0;i<n;i++) delay_1ms();}#endif/***********2,以下是uart.h头文件/***********uart.h使用端口:uart0及控制端口PE2; uart1及控制端口PD4晶振:11.0592M查询方式发送,中断接收。

*************************************************/#ifndef _uart_h#define _uart_h#include <iom128v.h>#include <macros.h>#include "delay.h"#define fosc 11059200#define baud 9600#define uchar unsigned char//#define amount 8 //data amount//uchar inbox[amount]; //transmited and received data buff.//uchar buff = 0;//unsigned char inbox[10];/****uart0 initialize************/void Uart0_initial(void){UCSR0B = 0x00;// disable while setting uartUCSR0A = 0x00;UCSR0C = (1<<UCSZ01) | (1<<UCSZ00);// 8bit +1bit stopUBRR0L = (fosc/16/(baud+1))%256;//此公式为datasheet上,是正确的// UBRR0H = (fosc/16/(baud+1))/256;//网上例程很多用baud+1,经试验不行// UCSR0B = (1<<RXCIE0)|(1<<RXEN0) | (1<<TXEN0); //RXCIE0 RXEN TXEN PORTE |=BIT(PE2);// Set PE2,DDRE |= BIT(PE2); // RXD0 enable.}/**uart1 initialize**************/void Uart1_initial(void){UCSR1B = 0x00;//disable while setting uartUCSR1A = 0x00;UCSR1C = (1<<UCSZ11) | (1<<UCSZ10);//8bit + 1 stopUBRR1L = (fosc/16/baud-1)%256;UBRR1H = (fosc/16/baud-1)/256;UCSR1B = (1<<RXCIE1) | (1<<RXEN1) | (1<<TXEN1);// RXCIE RXEN TXEN PORTD |= BIT(PD4); //Set PD4DDRD |= BIT(PD4); //RXD1 enable.}/***uart0 transfer one char****/void putchar0(uchar c){PORTE &=~ BIT(PE2);delay_nms(5);while (!(UCSR0A&(1<<UDRE0)));UDR0 = c;delay_nms(5);//PORTE |= BIT(PE2);}/***uart0 transfer char strings***/void puts0(uchar *s){uchar k=0;CLI();//PORTE &=~ BIT(PE2);delay_nms(5);while (k<8){putchar0(*s);s++;k++;}PORTE |= BIT(PE2);delay_nms(3);SEI();}/****uart1 transfer one char **/void putchar1(unsigned char c){CLI();PORTD &=~ BIT(PD4);while (!(UCSR1A&(1<<UDRE1)));UDR1 = c;SEI();//PORTD |= BIT(PD4); //set as RX after TX. }/***uart1 transfer char strings**/void puts1(uchar *s){while (*s){putchar1(*s);}}/***uart0 RXD interrupt processing****//**************************************#pragma interrupt_handler uart0_RX_interrupt:19void uart0_RX_interrupt(void){//UCSR0B = 0x00; //disable uart0 while handling interrupt.buff = UDR0;PORTE &=~ BIT(PE2);delay_nms(3); //收转发设置控制引脚后,要延时,换高频晶振需加大此延时。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

{软件环境:ICC AVR 6.31A硬件平台:atmega128a实现UART0的半双工485通信,中断方式接受,查询方式发送。

485的收发控制引脚为PE2。

供大家学习交流使用}1,以下是delay.h文件#ifndef _delay_h_#define _delay_h_//void delay_nus(unsigned int n);//void delay_nms(unsigned int n);//void delay_1us(void);//void delay_1ms(void);void delay_1us(void) //1us延时函数{NOP();}void delay_nus(unsigned int n) //N us延时函数{unsigned int i=0;for (i=0;i<n;i++) delay_1us();}void delay_1ms(void) //1ms延时函数{unsigned int i;for (i=0;i<1140;i++) ;}void delay_nms(unsigned int n) //N ms延时函数{unsigned int i=0;for (i=0;i<n;i++) delay_1ms();}#endif/***********2,以下是uart.h头文件/***********uart.h使用端口:uart0及控制端口PE2; uart1及控制端口PD4晶振:11.0592M查询方式发送,中断接收。

*************************************************/#ifndef _uart_h#define _uart_h#include <iom128v.h>#include <macros.h>#include "delay.h"#define fosc 11059200#define baud 9600#define uchar unsigned char//#define amount 8 //data amount//uchar inbox[amount]; //transmited and received data buff.//uchar buff = 0;//unsigned char inbox[10];/****uart0 initialize************/void Uart0_initial(void){UCSR0B = 0x00;// disable while setting uartUCSR0A = 0x00;UCSR0C = (1<<UCSZ01) | (1<<UCSZ00);// 8bit +1bit stopUBRR0L = (fosc/16/(baud+1))%256;//此公式为datasheet上,是正确的// UBRR0H = (fosc/16/(baud+1))/256;//网上例程很多用baud+1,经试验不行// UCSR0B = (1<<RXCIE0)|(1<<RXEN0) | (1<<TXEN0); //RXCIE0 RXEN TXEN PORTE |=BIT(PE2);// Set PE2,DDRE |= BIT(PE2); // RXD0 enable.}/**uart1 initialize**************/void Uart1_initial(void){UCSR1B = 0x00;//disable while setting uartUCSR1A = 0x00;UCSR1C = (1<<UCSZ11) | (1<<UCSZ10);//8bit + 1 stopUBRR1L = (fosc/16/baud-1)%256;UBRR1H = (fosc/16/baud-1)/256;UCSR1B = (1<<RXCIE1) | (1<<RXEN1) | (1<<TXEN1);// RXCIE RXEN TXEN PORTD |= BIT(PD4); //Set PD4DDRD |= BIT(PD4); //RXD1 enable.}/***uart0 transfer one char****/void putchar0(uchar c){PORTE &=~ BIT(PE2);delay_nms(5);while (!(UCSR0A&(1<<UDRE0)));UDR0 = c;delay_nms(5);//PORTE |= BIT(PE2);}/***uart0 transfer char strings***/void puts0(uchar *s){uchar k=0;CLI();//PORTE &=~ BIT(PE2);delay_nms(5);while (k<8){putchar0(*s);s++;k++;}PORTE |= BIT(PE2);delay_nms(3);SEI();}/****uart1 transfer one char **/void putchar1(unsigned char c){CLI();PORTD &=~ BIT(PD4);while (!(UCSR1A&(1<<UDRE1)));UDR1 = c;SEI();//PORTD |= BIT(PD4); //set as RX after TX. }/***uart1 transfer char strings**/void puts1(uchar *s){while (*s){putchar1(*s);}}/***uart0 RXD interrupt processing****//**************************************#pragma interrupt_handler uart0_RX_interrupt:19void uart0_RX_interrupt(void){//UCSR0B = 0x00; //disable uart0 while handling interrupt.buff = UDR0;PORTE &=~ BIT(PE2);delay_nms(3); //收转发设置控制引脚后,要延时,换高频晶振需加大此延时。

putchar0(buff);puts0("Test OK!");delay_nms(3);PORTE |= BIT(PE2);//UCSR0B = (1<<RXCIE0)|(1<<RXEN0) | (1<<TXEN0); //RXCIE0 RXEN TXEN }**************************************/#endif/********3,以下是CRC8校验头文件******************//*crc8校验程序*/#ifndef _CRC8_H_#define _CRC8_H_/*******************************************************unsigned char CRC8(unsigned char *ptr, unsigned char len){unsigned char i;unsigned char crc = 0;while(len--!=0){for(i=1; i!=0; i*=2){if((crc&1)!=0) {crc/=2; crc^=0x8C;}else crc/=2;if((*ptr&i)!=0) crc^=0x8C;}ptr++;WDR();}return(crc);}*******************************************************/ unsigned char CRC8(unsigned char *ptr, unsigned char len){if(len == 7)return (0xAA);}#endif/*********4,以下是主程序**************/#include <iom128v.h>#include <macros.h>#include "delay.h"#include "CRC8.h"#include "uart.h"#define uchar unsigned char#define amount 8uchar inbox[amount]; //收件箱uchar sendbox[amount]; //发件箱uchar buf_used = 0; //接收的数据个数uchar buf_flag = 0; //接收缓冲区满标志位uchar buf_saved = 0; //记忆收发缓存中未使用的个数uchar fun_code = 0; //存放功能代码uchar action_code = 0; //存放功能数据uchar key = 0;uchar key_code = 0;uchar relay_status = 0; //继电器状态uchar key_buf = 0x1F; //存储开关量的值uchar used_times = 0; //记录使用状况void Device_initial(void){//初始化各IO端口和设备PORTC |= 0x3F;DDRA |= 0xFF; //PORTA全部用于1602DDRB |= 0xF6; //PORTB比较混乱,具体参考电路图DDRC |= 0x3F; //PORTC.0 - PORTC.5为电源组件反馈端信号输入端DDRD |= 0x00;//PORTE |= 0xFC; //PE = 1111 1100 =0xFC PORTD待定DDRE |= 0x06; //DDRE = 0000 0110=0x06SEI(); //PORTE.0为RXD0,PORTE.1为TXD0,PORTE.2为485(0号)控制端;PORTE3~7为继电器控制端口// watchdog_INI();}#pragma interrupt_handler uart0_RX_interrupt:19void uart0_RX_interrupt(void) //中断方式接受函数{inbox[buf_used] = UDR0;if(inbox[0] == 0x0A)buf_used+=1;if(buf_used == 8){buf_flag = 1;buf_used = 0;}}void TX(uchar a,uchar b) //查询方式发送函数{sendbox[0] = 0x0A;sendbox[1] = 0xFF;sendbox[2] = 0x0A;sendbox[3] = 0x07;sendbox[4] = a;sendbox[5] = b;sendbox[6] = 0x0D;sendbox[7] = CRC8(sendbox,amount-1);puts0(sendbox);//WDR();}void Key_scan(void){key_code = PINE;key = key_code>>3;if(key!= key_buf){delay_nms(15); //消抖if(key != key_buf)//开关量与上次不同,则上发开关量状态到ARM {key_buf = key;while(1){while(buf_flag == 0){TX('N',key);delay_nms(300);}CLI(); //禁止接收//buf_used = 0;buf_flag =0;inbox[0] = 0;if(inbox[7] == CRC8(inbox,amount-1)){if(inbox[4] == 'A'&&inbox[5] == 'R') //应答正确。

相关文档
最新文档