ATmega16_Basic_V1.2
ATmega16单片机小系统板简介
1.概述本单片机小系统板为一单元实验板,使用一颗基于A VR构架的A Tmega16单片机。
A Tmega16有16KB的程序存储空间,1KB内部SRAM,512B内置EEPROM。
外部共有32个GPIO,一路USART,一路主从SPI,一路I2C,两个8位定时器,一个16位定时器,4通道PWM输出,8路10位AD输入。
还有各种丰富的管脚中断和不同的时钟可供使用。
2.硬件说明1.本单片机小系统板的电源输入电压为DC 2.7--5V,科创课程实验建议使用DC 5V。
2.小系统板上的P1为下载口,可供程序烧录、eeprom数据读写、熔断丝设置。
3.小系统板上的接插件PB、PC、PD分别对应A Tmega16芯片引脚的PB、PC、PD口。
PB、PC、PD口是八位数据端口,可作为通用IO口,也可用作第二功能使用,具体请参见datasheet的相关部分。
4.小系统板上的接插件PA的1-5脚分别连接A Tmega16芯片PA口的PA0-PA4,PA0-PA4是AD转换的模拟电压输入端口,也可作为通用IO口使用。
5.小系统板上的接插件PA的9脚连接A Tmega16芯片的V ref ,10脚接地。
A Tmega16有一个标称值为2.56V的内部基准源,每颗芯片的实际值会有所不同。
6.A Tmega16 PA口的PA5-PA7作为串行数据输出到小系统板上的74HC595上,有二片74HC595驱动4位数码管和4个LED灯。
小系统板上的P2作为串行数据输出总线,可级联74HC595。
7.小系统板上的四个按钮SW1-4分别连接在A Tmega16芯片PC4-7。
按钮RST为复位键。
3.开发环境推荐的入门开发环境为A VR studio 4 + WinA VR,即使用Atmel的免费IDE A VR studio 4和基于gcc的WinA VR编译器。
软件安装这两个软件的安装非常简单,双击之后一路回车即可。
官方下载地址:A VR studio 4:/dyn/products/tools_card.asp?tool_id=2725WinA VR:/projects/winavr/files/课程FTP://202.120.39.248也会提供软件包。
基于单片机ATmega16的无线温度监测系统
山西电子技术2011年第2期应用实践收稿日期:2011-01-13 修回日期:2011-03-02作者简介:张宁(1981 ),女,河北人,讲师,硕士,主要研究方向为计算机控制、嵌入式系统。
文章编号:1674 4578(2011)02 0033 02基于单片机ATm ega16的无线温度监测系统张 宁(华北电力大学电子与通信工程系,河北保定071003)摘 要:利用AVR 系列的ATm ega16单片机、无线收发模块n R F24L 01、数字温度传感器D S18B20和LCD 1602液晶显示器设计了无线温度监测系统。
该系统通过配置ATm ega16单片机,采集D S18B20转换的温度量,将温度信息显示在LCD1602液晶显示器上,同时通过无线收发模块将温度信息传送到管理终端进行显示和处理。
系统同时保证当被测温度不在合理范围时发出声音报警信号。
关键词:单片机;ATm ega16;D S18B20;无线温度监测;n RF 24L01中图分类号:TP212 文献标识码:A0 引言随着社会的发展和进步,越来越多的场合对温度的要求日臻严格,温度监控系统的应用日趋受到重视。
在农业发展领域,农业大棚、冷库、培育温室等众多场合都需要温度测量技术。
传统的测温系统都是有线系统,对于一些需要多点测温的场合,使用传统有线测温方式在布设、维护和更新方面存在着很多不便。
为了解决这个问题,设计了一种基于单片机和无线收发模块的无线温度监控系统,结合温度传感器可以很方便构建一个多点分布式智能无线温度监控系统[1]。
1 无线温度监控系统构成系统主要由两部分组成。
如图1所示,第一部分是节点温度测量系统,第二部分是温度显示管理终端。
节点温度测量系统负责测量温度,并将温度值通过无线通信发送到温度显示管理终端。
管理终端接收温度信息并进行显示和发出警报信号,而且在特殊情况下管理终端还可以逆向发送调控信息给节点温度测量系统,实现对温度的调控。
8 位 AVR 微控制器 ATmega16
8 位AVR 微控制器ATmega16/ ATmega16LATmega16/ ATmega16L 综述ATmega16/ ATmega16L是基于增强的AVR RISC 结构的低功耗8 位CMOS 微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
AVR 内核具有丰富的指令集和32个通用工作寄存器。
所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。
ATmega16/ ATmega16L有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW), 512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,ATmega16/ ATmega16L支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,ATmega16/ ATmega16L有起始条件检测器的通用串行接口,8 路10 位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,ATmega16/ ATmega16L具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。
工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;ATmega16/ ATmega16L掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;ATmega16/ ATmega16L在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,ATmega16/ ATmega16L其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。
ATmega16熔丝位设定.docx
ATmega16熔丝位设定特别注意,要使用外部晶体,必须设置熔丝,否则芯片会使用默认的内部晶体。
1、M16的出厂设置内部RC 振荡1MHz 6 CK + 65 ms CKSEL=0001 SUT=10 JTAGEN=1默认状况下JTAG已编程(即PC2-PC5为高电平不可以被拉低),如果PC2->PC5要用作普通10 口,需要取消JTAG编程,或者在程序开始时执行以下命令:MCUCSR |= 1 << JTD;MCUCSR |= 1 << JTD; /注意要连续操作两次。
恢复Fu^e&Lock2.1低位(时钟及启动时间设置)2.1.1、BOD(Brown-out Detection)掉电检测电路BODLEVEL(BOD电平选择):1 (2.7V 电平)0(4.0V 电平)BODEN(BOD功能控制):1 (BOD功能禁止)0(BOD功能允许)一旦VCC下降到触发电平(2.7v或4.0v)以下,MUC复位;当VCC电平大于触发电平后,经过tTOUT延时周后重新开始工作。
2.1.2、复位启动时间选择SUT 1/0:当选择不同晶振时,SUT有所不同。
如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。
2.1.3、CKSEL3/0:时钟源选择时钟源外部时钟外部时钟外部时钟内部RC振荡1MHZ 内部RC振荡1MHZ 内部RC振荡1MHZ1 启动延时熔丝6 CK + 0 ms CKSEL=0000 SUT=006 CK + 4.1 ms CKSEL=0000 SUT=016 CK + 65 ms CKSEL=0000 SUT=106 CK + 0 ms CKSEL=0001 SUT=006 CK + 4.1 ms CKSEL=0001 SUT=016 CK + 65 ms CKSEL=0001 SUT=10JTAG功能也要连续两次操作。
熔丝低位0NCNCNCMCE l NC1MG'NC Q] NC 加密位1.0 MHz2.0 MH24.0 MHz3.0 MHz读岀低位值El 旨立值阳扩展f立值0读出訪A 写入加瓷値FF 读出写入BODLEVEL BCOEN5UT1 SUTOCK5ELJ CK5ELZ CKStLl CISELO O 匚DENTT嶠EN5PIEHCKOPT020DQTS?1BOOTSZBL012BLB1LBL0OLLB2BLEOSLBtZ :D7^S~位酉战方式向导方武2、熔丝位配置说明10=丄ns L0H=n3S>19 sill o +>19 >191 00=丄ns 10 L L=n3S>19 sill 99 + >19 >11 H=丄ns00l4=ims>10 sill + >i9>iL 0 匸丄ns 00 L L=n3S>19 sill o + >19 >11 10=丄nSOOHCSMO sill 99 + >19 892 00=丄ns00l4=ims>10 sill + >19 892 H=丄ns H0L=n3S>19 SW9901=丄ns l40L=imS>10 sill L t+ >10 >19 L10=丄ns H0L=n3S>19 sill o +>19 >191 00=丄ns L LO sill99+ >19 >11H=丄nSOLOL=imS>10 sill + >i9>iL 0 匸丄ns 010 L=n3S>19 sill o + >19 >11 10=丄nSOLOL=imS>10 sill 99 + >1989200=丄nSOLOL=imS>10 sill + >19 892 (ZHIAIO C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAIO C-6 0)兽鑒艸聂圖/篦耳解出(ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲0 L=』nS LOO L=n3S>19 sin 99 + >19>12£ 10=丄ns 100 匸imSMO sill 99 + >o 川 00=丄ns LOOL=ims>io sin Lt + >K )>uH=丄nSOOOL=imS>iO sill Lt + MO 9 ZHIAIO SkO'8 鑒艸03 混场 0 匸丄ns 000 L=n3S>19 sill 99 + >19 81 ZHI/\IOSkO'8 鑒艸810=丄ns 000L=n3S>19 sill L> + >19 8L ZHI/\IOSkO'8 鑒艸8 腮 00=丄 ns oooL=n3S>i9 SHI 0+>19 81 ZHI/\IOSkO'8 鑒艸8 腮 I4=_ms Ll40=ims>0 SHI "ZHIAIO'8-Oe 鑒艸8 腮 oi=丄 ns 14 心 ims>o SHI 99 + >19 81ZHIAIO'8-Oe 鑒艸8 腮 10=丄nssill + >1981 ZHIAIO'8-Oe 鑒艸8 腮 oo=ins L L 心imSMOSHI 0 +>19 81 ZHIAIO'8-Oe 鑒艸8 腮 H =丄 nsoi40=ims>osin " + >09ZHI/\IOe-6O 鑒艸8 腮 oi=丄 nsoi40=ims>o sin 99 + >19 81ZHI/\IOe-6O 鑒艸8 腮 10=丄ns0!40=ims>10 sill + >1981 ZHI/\IOe-6O 鑒艸8 腮 00=丄 nsoi40=ims>osin 0 +>19 81 ZHI/\IOe-6O 鑒艸8 腮 H =丄ns LO 心ims>osin "ZHI/\I6O> 鑒艸8 腮 oi=丄ns m 心ims>o sin 99 + >19 81 ZHI/\I6O> 鑒艸8 腮 io=丄ns m 心ims'o sin+ >1981 ZHI/\I6O> 鑒艸8 腮 oo=_ms LO 心ims>o sin 0+>19 81 ZHI/\I6O> 鑒艸8 腮oi=丄 ns oo 心 ims>o sm 99 + >19 9 ZHIAI8 鑒艸8 滙M io=丄 ns oo 心 ims>o sin "ZHIAI8 鑒艸8 滙Moo=丄 ns oo 心 ims>osm 0 + >19 9ZHIAI8 鑒艸8 滙M 01=丄ns H00=13S>19 sm 99 + >19 9 ZHIAI17 鑒艸8 滙M 10=丄ns H00=13S>19 sm " ZHIAI17 鑒艸8 滙M oo=ins H00=13S>19 sm 0 + >19 9 ZHIAI17 鑒艸8 滙Moi=丄 ns (Hooms'osm 99 + >19 9ZHIAIS 鑒艸8 滙M(ZH>189Z Se)艸曾解劲 (ZH>189Z Se)艸曾解劲 (ZH>189Z Se)艸曾解劲io=丄ns (Hooms'o sm " ZHIAIS 鑒艸8滙M oo=insoLOO=n3S>i9 sm 0 + >19 9 ZHIAIS 鑒艸8滙M中频石英/ 陶瓷振荡器(0.9-3.0MHZ) 中频石英/ 陶瓷振荡器(0.9-3.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 16K CK + 4.1ms CKSEL=1101 SUT=10 16K CK + 65ms CKSEL=1101 SUT=11 258 CK + 4.1 ms CKSEL=1110 SUT=00 258 CK + 65 ms CKSEL=1110 SUT=01 1K CK + 0 ms CKSEL=1110 SUT=10 1K CK + 4.1 ms CKSEL=1110 SUT=11高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 1K CK + 65 ms CKSEL=1111 SUT=00高频石英/ 陶瓷振荡器(3.0- MHZ) 高频石英/ 陶瓷振荡器(3.0- MHZ) 高频石英/ 陶瓷振荡器(3.0- MHZ) 16K CK + 0 ms CKSEL=1111 SUT=01 16K CK + 4.1ms CKSEL=1111 SUT=10 16K CK + 65ms CKSEL=1111 SUT=11高于8M 选8M 的。
(精)atmega16寄存器笔记整理
一、中断寄存器中断是指微处理器在程序执行期间响应外部的事务请求,暂停当前的处理器工作转而处理外部事件,外部事件处理完成之后返回原来工作暂停的地方继续执行程序。
Atmega16具有21个中断源,每个中断源都有独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。
如果中断位I和中断向量使能位都置位,则中断发生,中断标志位置位,并执行中断服务程序。
中断向量表见表2,处于越低地址的中断具有更高优先级。
<一> 全局中断控制位1、状态寄存器SREG在I置位后,单独的中断使能由不同的中断寄存器控制。
若I为0,则禁止中断。
<二>外部中断?SE:MCU休眠使能位INT1:使能外部中断请求1INT0:使能外部中断请求0INT2:使能外部中断请求2INTF1:外部中断标志INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1” 来清零。
INTF0:外部中断标志INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。
如果SREG的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1” 来清零。
INTF2:外部中断标志INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR寄存器相应的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1” 来清零。
<三>定时器/计数器A VR的三个定时/计数器。
他们分别是T/C0、T/C1、T/C2,其中T/C0和T/C2是8位定时/计数器,T/C1是16位定时/计数器。
AVR单片机项目十二 ATmega16单片机I2C通信接口应用
【任务1】 项目知识点学习 二、I2C总线的协议
3、I2C总线的仲裁
图12-3 I2C总线的仲裁过程
【任务1】 项目知识点学习 二、I2C总线的协议
4、I2C总线的数据传输
图12-4 I2C总线的数据传输过程
【任务1】 项目知识点学习 二、I2C总线的协议
4、I2C总线的数据传输
图12-5 I2C总线的数据传输格式图
【任务1】 项目知识点学习 三、时钟芯片PCF8563的相关知识
3、时钟芯片PCF8563的基本原理及内部寄存器概述
所有16个寄存器设计成可寻址的8位并行寄存器,但不 是所有位都有用。前两个寄存器(内存地址00H,01H ) 用于控制寄存器和状态寄存器,内存地址02H~08H用于 时钟计数器(秒~年计数器),地址09H~0CH用于报警 寄存器(定义报警条件),地址0DH控制CLKOUT管脚的 输出频率,地址0EH 和0FH分别用于定时器控制寄存器和 定时器寄存器。秒、分钟、小时、日、月、年、分钟报警 、小时报警、日报警寄存器,编码格式为BCD,星期和星 期报警寄存器不以BCD格式编码。
单片机应用技术
项目十二
ATmega16单片机I2C通信接口应用
【知识目标】
掌握SPI串行通信协议 了解ATmega16单片机SPI串行通信接口结构 了解与SPI串行通信有关的寄存器的功能 了解TLC5615D/A芯片
【能力目标】 掌握ATmega16单片机的I2C串行通信接口相关寄 存器的配置方法 掌握PCF8563无线通信模块方法 掌握简单的单片机I2C串行通信总线系统程序的编 写、调试方法
【任务1】 项目知识点学习 三、时钟芯片PCF8563的相关知识
1、时钟芯片PCF8563概述 PCF8563 是PHILIPS 公司推出的一款工业级内含I2C 总线接口功能的具有极低功耗的多功能时钟/日历芯片。具 有多种报警功能、定时器功能、时钟输出功能以及中断输 出功能能完成各种复杂的定时服务,甚至可为单片机提供 看门狗功能。内部时钟电路内部振荡电路、内部低电压检 测电路1.0V 以及两线制I2C 总线通讯方式,不但使外围电 路及其简洁,而且也增加了芯片的可靠性。同时每次读写 数据后,内嵌的字地址寄存器会自动产生增量。当然作为 时钟芯片,亦解决了2000 年问题。已被广泛用于电表、水 表、电话、便携式仪器及电池供电的仪器仪表等产品领域。
单片机ATMega16-的1602液晶显示两行字母
#include "iom16v.h" //ICC AVR环境下的ATmega16库函数定义了所有的寄存器及其位的标号#include "macros.h"#define LCM_RS_1 PORTB|=(1<<7) //RS为1,定义为PB口的第7位#define LCM_RS_0 PORTB&=(~(1<<7)) //RS为0,定义为PB口的第7位#define LCM_RW_1 PORTB|=(1<<6) //RW为1,定义为PB口的6位#define LCM_RW_0 PORTB&=(~(1<<6)) //RW为0,定义为PB口的6位#define LCM_E_1 PORTB|=(1<<5) //E为1,定义为PB口的第5位#define LCM_E_0 PORTB&=(~(1<<5)) //E为1,定义为PB口的第5位const unsigned char LCM_Dis_String[]="hello hcit";const unsigned char LCM_Dis_WJ[]="welcome to txx";/****************************************************************************** 函数功能:延时1us(4M晶振,0.25微秒的指令执行周期)入口参数:无函数说明:4*0.25=1(微秒)******************************************************************************/ void Delay_1_us(void){NOP();NOP();NOP();NOP();}/****************************************************************************** ********函数功能:延时若干微秒*********************************************************************入口参数:n_us******************/void Delay_n_us(unsigned int n_us){unsigned int cnt_i;for(cnt_i=0;cnt_i<n_us;cnt_i++){Delay_1_us();}}/****************************************************************************** ********函数功能:延时1ms(4M晶振,0.25微秒的指令执行周期)入口参数:无函数说明:(3×cnt_j+2)×cnt_i=(3×33+2)×40*0.25=1010(微秒),可以近似认为是1毫秒******************************************************************************* ********/void Delay_1_ms(void){unsigned char cnt_i,cnt_j;for(cnt_i=0;cnt_i<40;cnt_i++){for(cnt_j=0;cnt_j<33;cnt_j++){}}}/****************************************************************************** ********函数功能:延时若干毫秒入口参数:n_ms******************************************************************************* ********/void Delay_n_ms(unsigned int n_ms){unsigned int cnt_i;for(cnt_i=0;cnt_i<n_ms;cnt_i++){Delay_1_ms();}}/****************************************************************************** ********函数功能:读取忙标志和AC的值入口参数:无******************************************************************************* ********/unsigned char LCM_Re_BAC(){unsigned char status;//LCM_Dat为输入DDRA=0x00;//选择命令通道LCM_RS_0;//选择读操作LCM_RW_1;//使能线置1LCM_E_1;//等待信号线稳定Delay_n_us(1);//读入status=PINA;//使能线置0LCM_E_0;return status;}/****************************************************************************** ********函数功能:写入命令入口参数:命令代码******************************************************************************* ********/void LCM_Wr_CMD(unsigned char cmd_dat){//判忙while(LCM_Re_BAC()>=0x80);//LCM_Dat为输出DDRA=0xFF;//选择命令通道LCM_RS_0;//选择写操作LCM_RW_0;//使能线置1LCM_E_1;//设置命令数据PORTA=cmd_dat;//等待信号线稳定Delay_n_us(1);//送命令数据LCM_E_0;}/****************************************************************************** ********函数功能:写入数据入口参数:数据代码******************************************************************************* ********/void LCM_Wr_DAT(unsigned char dis_dat){//判忙while(LCM_Re_BAC()>=0x80);//LCM_Dat为输出DDRA=0xFF;//选择数据通道LCM_RS_1;//选择写操作LCM_RW_0;//使能线置1LCM_E_1;//设置数据数据PORTA=dis_dat;//等待信号线稳定Delay_n_us(1);//送数据数据LCM_E_0;Delay_n_us(40);}/****************************************************************************** ********函数功能:初始化入口参数:无******************************************************************************* ********/void LCM_1602_Init(void){LCM_Wr_CMD(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口Delay_n_ms(5); //延时5msLCM_Wr_CMD(0x38);Delay_n_ms(5);LCM_Wr_CMD(0x38);Delay_n_ms(5);LCM_Wr_CMD(0x0f); //显示模式设置:显示开,无光标,光标无闪烁Delay_n_ms(5);LCM_Wr_CMD(0x06); //显示模式设置:光标右移,字符不移Delay_n_ms(5);LCM_Wr_CMD(0x01); //清屏幕指令,将以前的显示内容清除Delay_n_ms(5);}unsigned char Get_Key_Val(){unsigned char Key_Val;Key_Val=PINC;switch(Key_Val){case 0xfe:Key_Val=1;break;case 0xfd:Key_Val=2;break;case 0xfb:Key_Val=3;break;default:Key_Val=0;break;}while(PINC==0xFF);return Key_Val;}void main(void){unsigned char cnt_temp,Key_Val;DDRB=0xFF;DDRA=0xFF;DDRC=0x00;PORTC=0xFF;while(1){LCM_1602_Init();Key_Val=Get_Key_Val();switch(Key_Val){case 1:{cnt_temp=0;LCM_Wr_CMD(0x80);while(LCM_Dis_String[cnt_temp]!='\0'){LCM_Wr_DAT(LCM_Dis_String[cnt_temp++]);Delay_n_ms(100);}break;}case 2:{cnt_temp=0;LCM_Wr_CMD(0xC0);while(LCM_Dis_WJ[cnt_temp]!='\0'){LCM_Wr_DAT(LCM_Dis_WJ[cnt_temp++]);Delay_n_ms(100);}break;}case 3:{cnt_temp=0;LCM_Wr_CMD(0x80);while(LCM_Dis_String[cnt_temp]!='\0'){LCM_Wr_DAT(LCM_Dis_String[cnt_temp++]);Delay_n_ms(100);}cnt_temp=0;LCM_Wr_CMD(0xC0);while(LCM_Dis_WJ[cnt_temp]!='\0'){LCM_Wr_DAT(LCM_Dis_WJ[cnt_temp++]);Delay_n_ms(100);}break;}}}}。
ATMEGA16的寄存器详细说明
ISC01
ISC00
INT0中断
0
0
低电平中断
0
1
INT1 引脚上任意的逻辑电平变化都将引发中断
1
0
下降沿中断
1
1
上升沿中断
3.通用中断屏蔽寄存器 GICR
bit7
bit6
bit5
INT1
INT0
INT2
INT1:使能外部中断请求1 INT0:使能外部中断请求0 INT2:使能外部中断请求2
4.通用中断标志寄存器 GIFR
0x24
INT2
外部中断请求2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6
☆萧联珠☆
☆azhu_uestc@
Atmega16 寄存器
20
0x26
TIMER0 COMP
21
0x28
SPM_RDY
定时器/ 计数器0 比较匹配 保存程序存储器内容就绪
1.状态寄存器 SREG
定时器/计数器1事件捕捉
7
0x0c
TIMER1 COMPA
定时器/计数器1比较匹配 A
8
0x0e
TIMER1 COMPB
定时器/计数器1比较匹配B
9
0x10
TIMER1 OVF
定时器/计数器1溢出
10
0x12
TIMER0 OVF
定时器/计数器0溢出
11
0x14
SPI,STC
SPI 串行传输结束
12
0x16
Bit4
Bit3
Bit2
Bit1
Bit0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4
个人总结的AVR的ATMEGA16L单片机程序
ATMAGE 16 的C语言程序ATMAGE 16 的C语言程序 (1)一、PB0 口的PB0.1 LED 发光管闪烁的程序: (3)二、PA0、PB0、PC0口的LED 发光管闪烁的程序: (5)三、I/O口的输入与输出 (6)四、跑马灯 (8)五、数码管计数显示设计 (10)六、控制直流电机正反转 (16)七、单片机的定时器(T/C0)应用 (20)AVR原理图 (24)一、PB0 口的PB0.1 LED 发光管闪烁的程序:#include <avr/io.h>int main( void ){unsigned char i, j, k,led=0;DDRB=0xFF; /* all outputs */while (1){if(led)PORTB|=0X01; /* |使最后一位为1 */elsePORTB&=0XFE; /*&最后一位为0 */ led=!led;//延时for (i=0; i<255; i++)for(j=0; j<255;j++)k++;}}/////////////////////////////////////////////////////////////// #include <avr/io.h>int main( void ){unsigned char i, j, k,led=0;DDRB=0xFF; /* all outputs */while (1){if(led)PORTB=0Xfe;elsePORTB=0Xff;led=!led;for (i=0; i<255; i++) //延时for(j=0; j<255;j++)k++;}}二、PA0、PB0、PC0口的LED 发光管闪烁的程序:#include <avr/io.h>int main( void ){unsigned char i, j, k,led=0;DDRA=0xFF;//为输出DDRB=0xFF;DDRC=0XFF;while (1){if(led){PORTA|=0XFF;PORTB|=0XFF;PORTC|=0XFF;}else{PORTA&=0X00;PORTB&=0X00;PORTC&=0X00;}led=!led;//取反////////////延时////////////////for (i=0; i<255; i++)for(j=0; j<255;j++)k++;}}三、I/O口的输入与输出#include <avr/io.h>///////////////////延时us//////////////////void delay_us(int t){dot--;while(t>1);}///////////////////延时ms///////////////// void delay_ms(unsigned int t){while(t!=0){delay_us(1142);t--;}}///////////////////主程序/////////////////////int main(void){DDRA = 0xff; /* all outputs */ DDRB = 0xff; /* all outputs */ DDRC = 0xff; /* all outputs */PORTA=0XFF;PORTB=0XFF;PORTC=0XFF;while(1){//***IO口输出低电平有效,如:0X01为十六进制数,二进制表示为00000001B,再取反////////A口输出//////PORTA=~0X01; // ~表示取反delay_ms(100);//延时N秒PORTA=~0X02;delay_ms(100);PORTA=~0X04;delay_ms(100);PORTA=~0X08;delay_ms(100);PORTA=~0X10;delay_ms(100);PORTA=~0X20;delay_ms(100);PORTA=~0X40;delay_ms(100);PORTA=~0X80;delay_ms(100);PORTA=0X00;//循环结束全亮////////B口输出//////PORTB=~0X01;delay_ms(100);PORTB=~0X02;delay_ms(100);PORTB=~0X04;delay_ms(100);PORTB=~0X08;delay_ms(100);PORTB=~0X10;delay_ms(100);PORTB=~0X20;delay_ms(100);PORTB=~0X40;delay_ms(100);PORTB=~0X80;delay_ms(100);PORTB=0X00;////////C口输出//////PORTC=~0X01;delay_ms(100);PORTC=~0X02;delay_ms(100);PORTC=~0X04;delay_ms(100);PORTC=~0X08;delay_ms(100);PORTC=~0X10;delay_ms(100);PORTC=~0X20;delay_ms(100);PORTC=~0X40;delay_ms(100);PORTC=~0X80;delay_ms(100);PORTC=0X00;}}四、跑马灯#include <avr/io.h>#define uchar unsigned char#define uint unsigned intvoid delayms(uint i){uint j;for(;i!=0;i--){for(j=8000;j!=0;j--);}}void horse(uchar i){switch (i){case 1:PORTB=0X01;break; case 2:PORTB=0X03;break; case 3:PORTB=0X07;break; case 4:PORTB=0X0f;break; case 5:PORTB=0X1f;break;case 6:PORTB=0X3f;break; case 7:PORTB=0X7f;break; case 8:PORTB=0Xff;break; default:break;}}void main(void){uchar i;DDRB=0XFF;PORTB=0XFF;PORTB=0X00;delayms(10);while(1){for(i=1;i<9;i++){horse(i);delayms(10);}for(i=7;i!=0;i--){horse(i);delayms(10);}}五、数码管计数显示设计1、两个按键PB0和PB1分别控制加减。
Atmega16端口的第二功能
端口A端口B引脚配置如下:•SCK –端口B, Bit 7SCK:SPI 通道的主机时钟输出,从机时钟输入端口。
工作于从机模式时,不论 DDB7 设置如何,这个引脚都将设置为输入。
工作于主机模式时,这个引脚的数据方向由DDB7 控制。
设置为输入后,上拉电阻由PORTB7控制。
•MISO –端口 B, Bit 6MISO:SPI 通道的主机数据输入,从机数据输出端口。
工作于主机模式时,不论DDB6 设置如何,这个引脚都将设置为输入。
工作于从机模式时,这个引脚的数据方向由DDB6 控制。
设置为输入后,上拉电阻由PORTB6控制。
•MOSI –端口 B, Bit 5MOSI: SPI 通道的主机数据输出,从机数据输入端口。
工作于从机模式时,不论DDB5 设置如何,这个引脚都将设置为输入。
当工作于主机模式时,这个引脚的数据方向由 DDB5控制。
设置为输入后,上拉电阻由PORTB5控制。
•SS –端口 B, Bit 4SS: 从机选择输入。
工作于从机模式时,不论DDB4 设置如何,这个引脚都将设置为输入。
当此引脚为低时SPI 被激活。
工作于主机模式时,这个引脚的数据方向由DDB4 控制。
设置为输入后,上拉电阻由PORTB4控制。
• AIN1/OC0 –端口 B, Bit 3AIN1,模拟比较负输入。
配置该引脚为输入时,切断内部上拉电阻,防止数字端口功能与模拟比较器功能相冲突。
OC0,输出比较匹配输出:PB3 引脚可作为T/C0比较匹配的外部输出。
实现该功能时,PB3 引脚必须配置为输出( 设DDB3 为1) 。
在 PWM模式的定时功能中, OC0 引脚作为输出。
• AIN0/INT2 –端口 B, Bit 2AIN0,模拟比较正输入。
配置该引脚为输入时,切断内部上拉电阻,防止数字端口功能与模拟比较器功能相冲突。
INT2,外部中断源 2 : PB2 引脚作为MCU的外部中断源。
• T1 –端口B, Bit 1T1, T/C1 计数器源。
第二章 ATmega16芯片资源
•支持在线编程(In-System Programming)
•1K字节的片内SRAM
•512字节的在线可编程EEPROM •可编程的程序加密位
外围资源
•2个带预分频器、具有比较、PWM功能的8位定时器/计数器 •1个带预分频器、具有比较、捕获和PWM功能的16位定时器 /计数器 •1个具有独立振荡器的异步实时时钟(RTC) •4个PWM通道 •8通道10位ADC •1个I2C的串行口 •1个可编程的串行USART接口 •1个主/从收/发的SPI同步串行接口 •带片内RC振荡器的可编程看门狗定时器WDT •片内模拟比较器
ATmega16 封装---PDIP40封装
ATmega16 封装---TQFP44封装
2.ATmega16 资源及性能
AVR RISC 结构
• 高性能、低功耗RISC的结构 • 130条指令,大多数为单周期指令 • 32×8的通用(工作)寄存器+外设控制寄 存器 • 工作在16MHz时具有16MIPS的性能 • 片内集成硬件乘法器(执行速度为2个时钟 周期)
程序和数据存储器、工作寄存器
ATmega16具有16K字节的 在线编程Flash,用于存放程 序指令代码。因为所有的AVR 指令为16 位或32 位,故而 Flash 组织成8K x 16 位的 形式。 Flash存储器至少可以擦 写10,000次。ATmega16的程 序计数器(PC)为13位,因此 可以寻址8K 字的程序存储器 空间。 用SPI 或JTAG 接口实现 对Flash 的串行下载。
•/RESRT:复位输入。在该引脚上,一个超过系统规定长 度的低电平信号,将引起系统复位。低于系统规定长度的 低电平信号脉冲,不能保证可靠复位。 •XTAL1:内部反转晶振放大器的输入端和向内部时钟操作 电路的输入端。 •XTAL2:内部反转晶振放大器的输出端。
ATmega16单片机中文技术资料
ATmega16单片机中文技术资料一、概述ATmega16是一款高性能、低功耗的8位微控制器,由Atmel公司推出。
它基于AVR增强型RISC结构,拥有丰富的外设资源和灵活的编程特性,广泛应用于工业控制、消费电子、通信设备等领域。
二、主要特性1. 内核:AVR增强型RISC结构,最高工作频率为16MHz。
2. 存储:16KB的程序存储器(Flash)、512B的EEPROM和1KB 的SRAM。
3. 外设接口:32个通用I/O口、8个通道的10位ADC、2个8位定时器/计数器、1个16位定时器/计数器、1个串行通信接口(USART)、1个串行外设接口(SPI)和1个两线接口(TWI)。
4. 工作电压:2.7V至5.5V,支持低功耗模式。
5. 封装:采用TQFP和PDIP封装,便于嵌入式系统设计。
三、引脚功能1. VCC:电源正极,接2.7V至5.5V电压。
2. GND:电源负极,接地。
3. PA0PA7:端口A,具有通用I/O、模拟输入和外围设备功能。
4. PB0PB7:端口B,具有通用I/O、JTAG接口和外围设备功能。
5. PC0PC7:端口C,具有通用I/O、模拟输入和外围设备功能。
6. PD0PD7:端口D,具有通用I/O和外围设备功能。
7. XTAL1/XTAL2:晶振输入/输出,用于外部晶振或陶瓷谐振器。
8. AVCC:模拟电源,为ADC和模拟电路提供电源。
10.RESET:复位输入,低电平有效。
四、编程与开发1. 编程语言:支持C语言和汇编语言编程。
2. 开发工具:可使用Atmel Studio、AVR Studio等集成开发环境进行程序编写、编译和调试。
3. 烧录方式:通过ISP、JTAG、HVPP等接口进行程序烧录。
本文档旨在为您提供ATmega16单片机的中文技术资料,帮助您更好地了解这款微控制器,为您的项目开发提供支持。
后续内容将详细介绍ATmega16的外设功能、编程方法及应用实例。
AVR教程系列一(12):ATmega16 简介(六)
A VR教程系列一(12):ATmega16 简介(六) ATmega16 操纵与状态寄存器MCUCSRAVR 操纵与状态寄存器提供了有关引起AVR复位的复位源的信息。
Bit 4 – JTRF: JTAG 复位标志通过JTAG 指令AVR_RESET 能够使JTAG 复位寄存器置位,并引发MCU 复位,并使JTRF 置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 3 – WDRF: 看门狗复位标志看门狗复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 2 – BORF: 掉电检测复位标志掉电检测复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 1 – EXTRF: 外部复位标志外部复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 0 – PORF: 上电复位标志上电复位发生时置位。
只能通过写”0” 来清除。
为了使用这些复位标志来识别复位条件,用户应该尽早读取此寄存器的数据,然后将其复位。
假如在其他复位发生之前将此寄存器复位,则后续复位源能够通过检查复位标志来熟悉。
ATmega16 基准电压使能信号与启动时间ATmega16 具有片内能隙基准源,用于掉电检测,或者者是作为模拟比较器或者ADC的输入。
ADC 的2.56V 基准电压由此片内能隙基准源产生。
电压基准的启动时间可能影响其工作方式。
启动时间列于Table 16。
为了降低功耗,能够操纵基准源仅在如下情况打开:1. BOD 使能 ( 熔丝位BODEN 被编程)2. 能隙基准源连接到模拟比较器(ACSR 寄存器的ACBG 置位)3. ADC 使能因此,当BOD 被禁止时,置位ACBG 或者使能ADC 后要启动基准源。
为了降低掉电模式的功耗,用户能够禁止上述三种条件,并在进入掉电模式之前关闭基准源。
ATmega16 看门狗定时器看门狗定时器由独立的1 Mhz 片内振荡器驱动。
atmega16原理
atmega16原理Atmega16是一款8位微控制器,由Atmel公司生产。
它是一种高性能、低功耗、多功能的单片机,被广泛应用于工业控制、汽车电子、家用电器、通信设备等领域。
我们来了解一下Atmega16的基本原理。
Atmega16具有128KB 的Flash程序存储器,1KB的EEPROM数据存储器和2KB的静态随机存取存储器(SRAM)。
它还具有32个通用输入/输出引脚(IO)和4个8位定时器/计数器,以及一个16位定时器/计数器。
此外,Atmega16还具有8个通道的10位模拟到数字转换器(ADC),用于模拟信号的采集和处理。
Atmega16采用了Harvard体系结构,即程序存储器和数据存储器分开存储。
它的工作频率可高达16MHz,使其具备处理复杂任务的能力。
同时,Atmega16支持多种通信接口,如串行通信接口(USART)、并行通信接口(SPI)和两线制串行接口(I2C),便于与外部设备进行数据交换和通信。
在Atmega16中,程序是以16位指令的形式存储在Flash存储器中的。
通过计数器和定时器,Atmega16可以实现时间的测量和控制。
同时,通过IO引脚的输入输出控制,Atmega16可以与外部设备进行数据交互。
此外,Atmega16还支持中断功能,能够在特定条件下中断当前任务,执行其他任务,提高系统的响应能力。
在使用Atmega16进行开发时,我们通常使用C语言或汇编语言进行编程。
通过编译器生成的机器码,我们可以将程序下载到Atmega16的Flash存储器中,并通过外部电源供电,使其开始运行。
通过编程,我们可以实现各种功能,如控制LED灯的亮灭、读取温度传感器的数据、控制电机的转动等。
需要注意的是,在使用Atmega16进行开发时,我们需要根据具体的应用场景选择合适的外围电路和元件,如晶振、电容、电阻等。
这些外围电路和元件的选择和设计直接影响到Atmega16的性能和稳定性。
AVR教程系列一(10):ATmega16 简介(9)
ATmega16 简介〔四〕ATmega16 时钟系统及其分布时钟系统及其分布Figure 11为AVR的主要时钟系统及其分布。
这些时钟并不需要同时工作。
为了降低功耗,可以通过使用不同的睡眠模式来禁止无需工作的模块的时钟。
时钟系统详见Figure 11。
CPU 时钟- clkCPUCPU时钟与操作AVR内核的子系统相连,如通用存放器文件、状态存放器及保留仓库指针的数据存储器。
终止CPU 时钟将使内核遏制工作和计算。
I/O 时钟- clkI/OI/O时钟用于主要的I/O 模块,如按时器/ 计数器、SPI 和USART。
I/O 时钟还用于外部中断模块。
要注意的是有些外部中断由异步逻辑检测,因此即使I/O 时钟遏制了这些中断仍然可以得到监控。
此外, USI 模块的起始条件检测在没有clkI/O 的情况下也是异步实现的,使得这个功能在任何睡眠模式下都可以正常工作。
Flash 时钟- clkFLASHFlash 时钟控制Flash 接口的操作。
此时钟通常与CPU 时钟同时挂起或激活。
异步按时器时钟- clkASY异步按时器时钟允许异步按时器/ 计数器与LCD 控制器直接由外部32 kHz 时钟晶体驱动。
使得此按时器/ 计数器即使在睡眠模式下仍然可以为系统提供一个实不时钟。
ADC 时钟- clkADCADC具有专门的时钟。
这样可以在ADC工作的时候遏制CPU和I/O时钟以降低数字电路产生的噪声,从而提高ADC 转换精度。
ATmega16 时钟源ATmega16芯片有如下几种通过Flash熔丝位进行选择的时钟源。
时钟输入到AVR时钟发生器,再分配到相应的模块。
不同的时钟选项将在后续局部进行介绍。
当CPU 自掉电模式或省电模式唤醒之后,被选择的时钟源用来为启动过程按时,包管振荡器在开始执行指令之前进入不变状态。
当CPU从复位开始工作时,还有额外的延迟时间以包管在MCU 开始正常工作之前电源达到不变电平。
这个启动时间的按时由看门狗振荡器完成。
AVR ATmega16指令大全
状态寄存器与标志位SREG:8 位状态寄存器,其中每一位的定义为:C:进位标志位Z:结果为零标志位N:结果为负数标志位V: 2 的补码溢出标志位S:N⊕V,用于符号测试的标志位H:操作中产生半进位的标志位T:用于和BLD、BST 指令进行位数据交换的位I:全局中断触发/禁止标志位算术和逻辑指令加法指令1.不带进位位加法ADD Rd,Rr 0≤d≤31,0≤r≤31说明:两个寄存器不带进位 C 标志相加,结果送目的寄存器Rd。
2.带进位位加法ADC Rd,Rr 0≤d≤31,0≤r≤31说明:两个寄存器和C标志的内容相加,结果送目的寄存器Rd。
3.字加立即数ADIW Rdl,K dl 为:24、26、28、30,0≤K≤63说明:寄存器对(一个字)同立即数(0~63)相加,结果放到寄存器对。
4.增1 指令INC Rd 0≤d≤31说明:寄存器Rd 的内容加1,结果送目的寄存器Rd 中。
减法指令1.不带进位位减法SUB Rd,Rr 0≤d≤31,0≤r≤31说明:两个寄存器相减结果送目的寄存器Rd 中。
2.减立即数(字节)SUBI Rd,K 16≤d≤31,0≤K≤255说明:一个寄存器和常数相减,结果送目的寄存器Rd。
3.带进位位减法SBC Rd,Rr 0≤d≤31,0≤r≤31说明:两个寄存器带着C 标志相减,结果放到目的寄存器Rd 中。
4.带进位位减立即数(字节)SBCI Rd,K 16≤d≤31,0≤K≤255说明:寄存器和立即数带着 C 标志相减,结果放到目的寄存器Rd 中。
5.减立即数(字)SBIW Rdl,K dl为24、26、28、30,0≤K≤63说明:寄存器对(字)与立即数0~63 相减,结果放入寄存器对。
6.减1 指令DEC Rd 0≤d≤31说明:寄存器Rd 的内容减1,结果送目的寄存器Rd 中。
取反码指令COM Rd 0≤d≤31说明:该指令完成对寄存器Rd 的二进制反码操作。
AVR ATmega16外设(基础)汇总(待续)
4. MAX7219 数码管
//用于判断是否可以载入数据,初始化为低电平,上升沿时锁定,不再可以载入数据 #define MAX7219_LOAD_0 {DDRA|=_BV(PA1);PORTA &= ~_BV(PA1);}//将 PA1 位置零 #define MAX7219_LOAD_1 {DDRA|=_BV(PA1);PORTA |= _BV(PA1);} //时钟初始化为低电平,上升沿时读入数据,下降沿无操作 #define MAX7219_CLK_0 {DDRA|=_BV(PA2);PORTA &= ~ _BV(PA2);} #define MAX7219_CLK_1 {DDRA|=_BV(PA2);PORTA |= _BV(PA2);} //读入的数据存入此寄存器中 #define MAX7219_DIN_0 {DDRA|=_BV(PA0);PORTA &= ~ _BV(PA0);} #define MAX7219_DIN_1 {DDRA|=_BV(PA0);PORTA |= _BV(PA0);}
addr<<=1; } MAX7219_CLK_0; for(i=0;i<8;i++) {
if(data&0x80){MAX7219_DIN_1;} else {MAX7219_DIN_0;} _delay_us(2); MAX7219_CLK_1; _delay_us(2); MAX7219_CLK_0; data<<=1; } MAX7219_LOAD_1; } void init7219(void) { Write7219(0x9,0x00); Write7219(0xa,0x7); Write7219(0xb,0x7); Write7219(0xc,0x1); } unsigned char fan[8]={0x5A,0xFF,0x5A,0xFF,0x18,0x7E,0x18,0x66}; unsigned char chuang[8]={0x21,0x51,0xFD,0x55,0x75,0x55,0x4D,0x7F}; unsigned char hong[8]={0x18,0xFF,0x89,0x7E,0x10,0x28,0x52,0xBF}; int main(void) { init7219(); int i,j; /* while(1){
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R21 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 LED8 R31 LED7 R30 LED6 R29 LED5 R28 LED4 R27 LED3 R26 LED2 R25 LED1 R24 560 560 560 560 560 560 560 560 LED_EN GND sega R19 segb segc segd sege segf segg segdp R18 R17 R16 R15 R14 R13 R12 VCC 4.7K
LCD1602
P4 USB A 1 2 3 4 5 6 USB GND D1 5V1 E1 100uF/16V R5 560 C3 104 P3 P2 P1 POWER
GND VCC VL RS R/W EN DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 CS1 CS2 RST 0-10V BL+ BL-
L1 10uH C6 104
C17 104
JTAG TCK TDO TMS VCC TDI 1 3 5 7 9 TCK GND TDO VCC TMS RST VCC NC TDI GND JTAG 2 4 6 8 10 GND VCC RESET GND
10uF/16V
GND SDA AT24C02
VCC RS232 1 6 2 7 3 8 4 9 5 RS232 GND B GND USB-TTL 4 3 2 1 VCC PD0 PD1 R33 560 GND ISP MOSI 1 3 RESET5 SCK 7 MISO 9 MOSI NC RST SCK MISO ISP RESET VCC GND GND GND GND 2 4 6 8 10 VCC GND GND GND GND VCC R34 560 104 C15 1 2 C13 104 3 4 C12 104 5 6 7 8 C14 104
SR410361
a f e g d b c dp
com1 com2 com3 com4
dig0 dig1 dig2 dig3 PD2
sega a segb b segc c segd d sege e segf f segg g segdp dp PD3
U2
a b c d e f g dp a f e g d b c dp f e a g d b c dp f e a g d
1
2
3
4
5
6
7
8
power switch POWER 5V-DC 1 2 3 GND D/F 1N4148/500mA 5V_input 2 1 1 2 12864
LCD128*64 VCC R37 10K VO
GND VCC VO RS RW EN DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 VCC GND
PA3 GND
K1
K5 PA5
K9 PA6
K13 PA7 GND
VCC C2
1 2 3
3 2 1
PA4
GND
KEY_CS
D
3 2 1 GND
D
Title Size A3 Date: File: 1 2 3 4 5 6 Number
ATmega16_Basic_V1.2 开发板原理图
Revision
2010-8-10 Sheet of E:\ARMAVR 开发板设计 \..\ATmega16_Basic_V1.2 Drawn By: 开发板 .SchDoc 7 8
C5 GND 104 VCC XT1 X1 7.3728M C7 104 C8 22PF C9 22PF X2 VCC PD5 R22 4.7K GND GND GND GND BT VCC PA0 GND XT2 C16 104 VCC R32 10K 3 32768HZ4 1 2 ADJ AD_EN DS1302 VCC2 X1 X2 GND DS1302 VCC1 SCLK I/O RST 8 7 6 5 PA1 PA2 PA3 C11 104 GND VCC C BEEP_EN Q9 9012 R23 2 68 3 4 BEEP 1 AT24C02 A0 VCC A1 A2 WP SCL 8 7 6 5 PC0 PC1 GND VCC GND VCC R35 R36 10K 10K VCC
SR410361
a b c dp f e g d b c dp
com1 com2 com3 com4
dig4 dig5 dig6 dig7 A PD7 R20 4.7K
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
GND VCC VO PD3 PD4 PD6 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 VCC GND
PA0
K4
K8
K12
K16 GND
PA1
K3
K7
K11
K15
GND IR1838 IR1838 VCC GND I/O
GND
PA2
K2
K6
K10
K14 DS18B20 DS18B20 GND DQ VDD VCC R38 560 GND PC6 R2 10K 104 VCC
VCC PWM R3 10K PD2 PD5 PWM
SPI_EN
560 560 560 560 560 560 560 560 74HC595 1 Qb 2 Qc 3 Qd 4 Qe 5 Qf 6 Qg 7 Qh 8 GND
ATMEGA16L-8PI
B
LED10 LED9
PD0
VCC VCC R8 10K RESET E2 AVCC C4 AREF 104
GND VCC VO PD3 PD4 PD6 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC6 PC7 PD7 VVCC GND
VLCD_CS
GND PD0 VCC Q1 9012 dig0 VCC R1 4.7K Q2 9012 dig1 PD1 VCC R4 4.7K Q3 9012 dig2 PD4 VCC R9 4.7K Q6 9012 dig5 PD5 VCC R10 4.7K Q7 9012 dig6 PD6 VCC R11 4.7K Q8 9012 dig7 C10 VCC led_en 104 VCC Qa D EN CP CLK CLR Qs 74HC595 16 15 14 13 12 11 10 9 VCC PB5 led_en PB4 PB7 PB6 VCC R6 4.7K Q4 9012 dig3 VCC R7 4.7K Q5 9012 dig4
C
GND
PS2 1 2 3 4 5 6 PS2 5V output 1 2 3 4 SIP4 VCC VCC VCC GND ADJ output ADJ 1 ADJ 2 ADJ 3 GND 4 SIP4 PA7 VCC PD3 GND
PB0 EXT0 EXT0 PD2 INT0 PD6 Capture Capture INT0
LCD128*64
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
sega a segb b segc c segd d sege e segf f segg g segdp dp
U1
a b c d e f g dp a f e g d b c dp f e a g d b c dp f e a g d b c dp
SIP2 GND ATmega16L J2 MAX232 C1+ VCC V+ GND C1- T1out C2+ R1in C2- R1out VT1in T2out T2in R2in R2out MAX232 J4 PD0 PD1 PD2 PD3 PD4 PD5 PD6 1 3 5 7 9 11 13 DIP14 PD1 ATMEGA16L-8PI 2 4 6 8 10 12 14 16 15 14 13 12 11 10 9 VCCC1 104 GND PD1 PD0 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 1 3 5 7 9 11 13 15 DIP16 2 4 6 8 10 12 14 16 1 2 3 4 5 MOSI 6 MISO 7 SCK 8 RESET 9 VCC 10 GND 11 X2 12 X1 13 14 15 16 17 18 19 20 PB0/XCK/T0 A0/PA0 PB1/T1 A1/PA1 PB2/AI0/INT2 A2/PA2 PB3/AI1/OC0 A3/PA3 PB4/SS A4/PA4 PB5/MOSI A5/PA5 PB6/MISO A6/PA6 PB7/SCK A7/PA7 RESET AREF VCC GND GND AVCC XTAL2 TOSC2/PC7 XTAL1 TOSC1/PC6 PD0/RXD TI/PC5 PD1/TXD TO/PC4 PD2/INT0 TMS/PC3 PD3/INT1 TCK/PC2 PD4/OC1B SDA/PC1 PD5/OC1A SCL/PC0 PD6/ICP1 OC2/PD7 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 1 3 5 7 9 11 13 15 AREF GND AVCC TDI TDO TMS TCK 1 3 5 7 9 11 13 15 17 DIP18 DIP16 J3 2 4 6 8 10 12 14 16 18 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PD7 J1 2 4 6 8 10 12 14 16 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7