AVR单片机实验教材.docx
- 文档编号:28791475
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:40
- 大小:1.26MB
AVR单片机实验教材.docx
《AVR单片机实验教材.docx》由会员分享,可在线阅读,更多相关《AVR单片机实验教材.docx(40页珍藏版)》请在冰豆网上搜索。
AVR单片机实验教材
单片机与接口技术实验
刘东卓
西南大学电子信息工程学院
2019年9月
第1章实验箱简介
单片机综合实验箱BigAVRM16-3.5是AVRVI集多年开发经验,精心设计生产的一款AVR学习开发平台。
秉承模块积木式架构和资源完全开放的设计理念,集成了大量实用的外围电路和接口器件,配以丰富的实验教学例程和独具特色的课程设计项目,提供完整的源代码和详细的开发文档,涵盖单片机基础实验教学,工程开发,用户二次研发应用等领域,由浅入深,面面俱到。
本实验箱可用于新手学习,工程师开发,加速产品开发进程,特别适合高校实验教学,电子大赛,课程设计和毕业设计,提高学生的自主学习和原始创新能力。
第2章单片机实验箱资源
2.1硬件资源
1.电源模块:
在12V输入电压,开发板上提供高稳定的3.3V、5V和12V的电源,配有电源指示灯、极性保护电路及开关。
同时板上有多个高频和低频的电源滤波电容。
2.ISP下载接口:
标准的10PIN的ISP下载接口,用于AVR程序的下载。
3.JTAG仿真接口:
JTAG在线仿真调试接口,使用JTAGICE进行在线调试。
4.芯片插座:
PORTA、PORTB、PORTC、PORTD分别引出32个插座,JTAG&ISP、复位、晶振、电源引脚都直接链接与芯片连接。
部分只能使用固定引脚的外部功能通过跳线连接,如串口,I2C,AT45DB041。
5.晶振复位电路:
开发板提供一个7.3728M晶振以及一个晶振插槽,可由实验者自己选用。
6.扩展插槽:
板上预留三条扩展槽,按照Power、Control、Port、NC的格式进行预定义,其中Power提供3.3V、5V和12V两种。
扩展槽与扩展功能板兼容,可以实现其他的特殊功能扩展,完全兼容ATmega128功能板。
7.串口:
使用MAX232芯片作串口通讯控制,标准RS232接口。
8.4位独立按键
9.4*4矩阵键盘:
16个按键可以接成4×4的矩阵键盘,Int中断接口,完全实现键盘中断扫描的要求。
10.8位独立LED
11.18B20:
温度传感器芯片。
12.24C01:
外部扩展EEPROM,通过I2C方式与单片机通讯。
13.ADC:
模数转换电路,其中接有多个可调电阻用于分压及测试。
14.DAC:
数模转换电路,实现DDS功能。
可以用于产生正弦波,锯齿波,方波以及其他波形,模拟信号等
15.蜂鸣器:
用一个PNP的三极管去控制的无源蜂鸣器,用于发出声音,程序报警或播放音乐。
16.5110:
诺基亚5110液晶显示屏,可用于显示文字、图片和动画。
17.8*8点阵
18.4位七段数码管:
四位一体集成数码管显示,采用动态扫描实现显示。
19.高驱动能力的I/O外接口:
1.ULN2803提供8路I/O接口。
2.P521提供4路光耦电路。
20.AT45DB041:
外部4Mflash存储芯片,通过SPI与单片机通讯。
2.2软件资源
本实验箱配套资料光盘提供如下内容:
datasheet--板上用到的器件的数据手册
democode--开发板配套例子程序,每个程序有说明和对应原理图
software--开发软件
Schematics--原理图,提供SCH格式和PDF格式,可以直接用于项目中
AVR_Datasheet--AVR单片机数据手册
Book--AVR单片机电子书
protel_libs--常见器件的protel封装库
并且赠送实验讲义一本,有各实验的详细说明。
注意,配套的实验讲义的每一个实验通常对应多个例子程序,最主要和详细的说明是程序代码中,大部分复杂一些的应用,都有模块化的库函数程序,直接将lib文件夹下的文件复制到工程中即可进行项目设计,大大加快开发速度。
第3章开发快速入门
3.1软件安装
AVR的第三方开发软件支持丰富,我们在实验箱配套光盘\software目录里面提供了四种相关的软件,并在软件说明.txt里面有详细说明。
一、安装iccavr6.31A.exe,注意在下图所示的界面中将路径设为d:
\icc以方便后面的操作。
安装完成后可以按照ICC注册机文件夹下的文件说明进行注册。
二、安装aStudio4.14b589.exe,全部默认即可。
三、(此步骤可选)安装SLISP_V1527_plugs.exe,全部默认即可。
3.2程序编译
一、将光盘内的democode目录复制到D:
\avrvi\democode\,并且去掉只读属性,即光盘里面的实验说明文档的路径为D:
\avrvi\democode\实验说明.txt。
重要,以避免路径不同带来的麻烦。
二、运行ICCAVR,执行菜单命令,project->open,打开D:
\avrvi\democode\IO_1\source\main.prj如下图
四、查看程序代码,编译。
可以用Project->Rebuildall命令或者点击编译图标,或者快捷键F9,以及Shift+F9。
五、以上操作即可完成程序编译过程,并在信息窗口能看到编译成功的信息,如果出现错误,通常是路径错误引起的。
请检查Project->options->paths,路径和你安装ICC的路径以及程序的路径需要对应,所以为了避免这个麻烦,前面建议统一使用我们约定的路径D:
\icc,D:
\avrvi\democode.
六、编译完成之后在D:
\avrvi\democode\IO_1\output目录下有main.hex文件,这个就是我们用来烧录到芯片里面的二进制文件,有main.cof文件,用来在AVRstudio里仿真。
3.3下载程序
这里以AVR单片机综合实验箱配的并口下载线为例,如果有购买其他仿真或者下载工具,可以参看对应的说明书进行操作。
硬件链接:
并口ISP下载线连接PC的并口和AVR实验箱的ISP接口,并且用配套的电源给实验箱供电,打开开关,然后从计算机上进行操作。
下图所示为ISP下载接口
方法一、使用ICCAVR加AVRstudio下载,全部在ICCAVR软件里面完成,方便。
执行菜单Tools>>EnvironmentOptions……>>ISP进入如下界面,根据您的安装路径为STK500.EXE文件指定位置,默认在C:
\ProgramFiles\Atmel\AVRTools\STK500\Stk500.exe
运行ICCAVR菜单Tools->Insystemprogrammer,进入到编程界面,按下图所示进行设置,点击对应的按钮进行可以对flash,eeprom,熔丝位,锁定位等进行操作。
操作结果会在ICCAVR的信息窗口有提示,如果有错误请根据提示排错。
方法二、使用SLISP下载软件,操作简单。
运行SLISP下载软件,按下图所示方法进行设置,通讯模块,芯片型号,要烧录的HEX文件路径,然后点击编程即可将程序写入到单片机中。
注:
以上下载程序的过程,如果有购买其他的下载或者仿真工具,参看对应的说明书进行操作。
3.4观察效果
程序下载完成后,需要连接硬件才能观察到运行效果。
开发板的每个实验例程都有详细说明,如本例中打开D:
\avrvi\democode\IO_1\readme.txt可以看到连接方式:
PA0--LED0,PA1--LED1,使用配套的实验连接线按照说明连接,即可看到LED交替闪烁的现象。
在每个实验的SCH目录下有实验相对应的电路原理简图,如本实验的原理图路径为:
D:
\avrvi\democode\IO_1\sch\IO_1.pdf,如下图。
3.5开发流程及仿真
通过以上对软件安装,程序编译,程序下载,硬件连接,观察效果的简单说明,展示了基于本实验箱的软件开发的一个基本流程,通过举一反三,通读其他实验内容,学习过程中修改调试程序,学习硬件的连接方式,达到熟悉基于AVR单片机开发的目的。
有时为了系统的了解程序流程或者找出程序错误,需要对程序进行仿真,仿真可以有软件仿真和在线调试两种方式,AVR的JTAG在线调试需要另行购买专用的AVR仿真器,操作方法参考对应的说明书。
软件仿真方式可以使用AVRstudio进行,方法是运行AVRstudio,File->open,打开前面提到的cof文件,按照提示下一步。
出现下面选择仿真工具界面时选择AVRsimulator和ATmega16芯片。
点击finish即可进入下图的仿真界面。
在这个界面有程序区,信息区,右侧可以展开查看芯片的各种资源的运行状态。
你可以通过菜单栏上的按钮和命令进行单步调试,设置断点,观察变量,查看寄存器,查看程序空间数据等操作。
如果您在学习开发中遇到任何问题,可以联系我们解决,也可以到论坛发帖。
第4章硬件模块说明
4.1电源模块
电源部分使用两片LM1117,稳压输出5V和3.3V,引出VCC和GND两个接线座。
输入电压范围7~9V,默认标配电源7.5V,3.5标准圆孔插座,内正外负。
4.2ISP和JTAG接口
实验箱上有标准10针ISP下载接口,标准10针JTAG下载和仿真接口,用户可以参考设计。
4.38位独立LED
8位独立LED通过电阻连接到VCC,引出8个接线座,低电平点亮,用于跑马灯,LED指示等实验,并且可以用于大型程序调试的过程和状态指示。
IO操作是学习任何一款芯片的基本功,学会了IO控制就懂了一半,通过对DDRn、PORTn、PINn的设置和操作,实现单片机IO口的输入输出,针对本部分配有多个实验例程。
4.4晶振与复位
实验箱上有晶振选择电路,既可以使用板上已经焊接好的7.3728M晶振,也可以自己根据自己的需求扩展,晶振的切换通过跳线JP7实现。
Y1方式(1和2连接)使用板载7.3728M晶振,Y2方式(2和3连接)使用用户扩展的晶振,默认Y1,使用板载晶振,另外,芯片时钟的选择还和熔丝位有关。
4.5串口-RS232
串行通讯是电子类产品之间通讯常用的方法之一,比如仪器与计算机通讯,设备控制,数据传输等,会单片机就一定要会串口通讯,串行接口也是几乎每一种单片机必备的功能。
ATmega16有1路USART接口,Max232电平转换芯片有2路转换电路,本实验箱综合两方面因素,最大限度的利用资源,将Max232的两路接口均引出,在DB9座上,二三五为一组,七八五为第二组,TTL电平端一路通过跳线JP3连接到AVR单片机的TXD和RXD引脚,另外一路引出2个插座,通过JP1、JP2、JP3跳线可以控制其使用。
JP1和JP2的1和2连接,3和4连接为直连方式;1和3连接,2和4连接为交叉方式,JP1和JP2分别控制一路。
JP3短接用于连接Max232和AVR芯片。
4.6独立按键
键盘是最常用的人机接口之一,是学习单片机必须掌握的知识,本实验箱拥有4个独立按键,通过电阻接地,键盘按下时为低电平,释放为高电平,直接连接使用,引出4个连接座。
4.7矩阵键盘
当按键数量比较多时,独立按键不能再满足要求,实验箱上设计了4×4矩阵键盘,可以用8个IO口扫描16个按键,加上组合按键可以实现更多的功能。
矩阵键盘的电路图如下,键盘之间互相连接并且接入1k的限流电阻,四条线都通过二极管接到INT连接座上,可以用于按键触发中断,设计中断键盘,减少单片机查询键盘的时间消耗,矩阵键盘一共引出9个连接座,配套有模块化的驱动程序,只需简单配置即可应用。
4.8DS18B20及单总线接口
本实验箱有1-WIRE单总线接口,可以连接单总线设备,如DS18B20温度传感器。
接口在开发板的右上角处,使用标准KF396,使用方便,也可以直接插在板子上的单排座中。
使用传感器时请根据图示仔细辨别正负极,正确连线,此部分电路引出一个接口座。
4.9EEPROM24C01和时钟PCF8563
AT24C系列串行EEPROM具有I2C总线接口功能,功耗小,宽电源电压(根据不同型号2.5V~6.0V),工作电流约为3mA,静态电流随电源电压不同为30μA~110μA,是比较常用的外部串行EEPROM,AVR单片机内部EEPROM不够用时,可以使用IIC接口的外部串行EEPROM保存掉电需要保留的数据,节省IO口,性能稳定。
PCF8663是常用时钟芯片之一,同样使用IIC接口,使用32.768Khz的晶振为PCF8563提供时钟,PCF8563可以用于精确电子钟的设计。
在各种有时间显示的设备上均可以应用,如电子大屏,倒计时牌,仪表等。
PCF8563和AT24C01一起挂接在TWI总线上,通过跳线JP12控制与主芯片的通断,PCF8663的INT和CLK引脚引出接线座,需要的时候可以连接到单片机上,方便编程。
4.10ADC:
模数转换
ADC转换是电子产品中最常用的功能之一,AVR单片机片内集成10位AD转换器,ATmega16有8路,这是AVR单片机优势之一,这里实验箱引出其中两路。
因需要测试的电压通常不在0~5V范围内,AD转换中必不可少的是信号调理,放大或者缩小等,这里我们设计了非常成熟的信号调理电路,通过调节可调电阻电位器调节信号放大的倍数,对于AD转换,我们提供了3个实验。
LM358里面包括有两个高增益、独立的、内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运放的地方使用。
注意:
如果AD输入信号悬空,这个电路没有意义,要进行实验,需要在输入端接电压输入。
4.11DAC:
数模转换
AVR单片机有一个独特的优势,大部分的AVR芯片都具有PWM接口,ATmega16有4路PWM输出,本实验箱使用其中的两路PWM用于DA输出,PWM通过调节占空比,然后由LM358跟随器和阻容组合的电路即可输出指定DA电压,这种操作方式节约成本,操作简单,有非常大的实际用途,但精度略低,并且最高输出电压受到一定限制。
4.12蜂鸣器
蜂鸣器使用一个8050三极管驱动,引出一个接线座,通过IO即可控制。
4.135110液晶
诺基亚5110液晶显示屏,可用于显示文字、图片和动画,手机大家都不陌生了,这里把手机屏幕当成一个学习的对象,更显示出学习和应用的紧密性。
在实际产品开发过程中,大批量的液晶通常都需要定制,比如三表的显示液晶,通常都是定制的。
只要熟悉液晶的操作方法,举一反三,可以在实际的开发过程中得心应手。
NOKIA5110LCD使用的是SPI驱动方式,使用时需要按照实验说明里面的连线方式进行连线,因为占用SPI口线,所以在下载程序时需要注意断开SPI引脚的连接。
4.148*8点阵
点阵显示屏是常用的显示器件之一,因其亮度高的特点,常用于户外和公共场合的信息发布,如广场的幕墙,银行的通知,火车站售票窗口信息等。
实际应用中,通常由众多八乘八点阵拼接起来共同组成一个大的显示区,这里开发板仅提供一种思路。
电路中使用一片HC164串转并,一共引出11个接线座,如下图,针对本硬件有2个实验例子,展示点阵的静态显示和动态显示。
4.15七段数码管
七段数码管是电子设备开发中最常用的人机显示设备,通过轮询刷新的方式点亮。
电路中实用8050放大驱动电流,引出四个位选和八个段选接口。
4.16ULN2803输出
ULN2803是八组NPN型达林顿功放三极管集成芯片,典型的输入电压是5V,集电极输出功率可达50V×600mA。
可直接驱动步进电机,控制继电器,数码管驱动等,非常实用。
我们有提供驱动步进电机的例程。
JP11控制公共端电压,可以选择VCC和VCC,电路和实物图如下,一共提供了8路输出驱动。
4.17P521光耦输入
光耦,亦称光电隔离器,是电子以光为媒介传输电信号,它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用,如电流互感器,高压通断检测等。
P521是最常用的典型光耦型号之一,这里我们采用的是TLP521GB,输入电压范围100~600V,总共四路,电路相同,方便实际应用。
4.18AT45DB041
AT45DB041是ATMEL公司的4M串行SPI接口Flash,常用于存储大量的测试测量数据,ATMEL官方有一个用它来存放音乐的应用,外部串行Flash有广泛的用途。
AT45DB041使用3.3V供电,使用电阻分压可以接到工作在5V的单片机上,与主芯片之间通过JP10跳线连接,使用时需要短接JP10跳线,电路如下图所示
注意:
短接JP10后可能会对ISP程序下载造成影响,用ISP下载时应将JP10跳线断开。
4.19扩展插槽
在实验箱左上角扩展了三条总线接口(megabus),引出所有IO口和VCC,GND等,足够mega128的引脚数量,多出的PE,PF,PG引出连接座,标准2.0间距,方便用户扩展。
第5章跳线功能说明
本实验箱采用资源完全开放的思路设计,所有器件与主CPU分离,可以独立使用。
但部分特定功能的器件需要指定的引脚才能工作,以及部分需要硬件设置的功能,采用跳线方式。
实验箱上共有跳线九处,其中JP1、JP2、JP3紧邻。
跳线功能说明:
ØJP1:
第一路串口设置1和2连接,3和4连接直连;1和3连接,2和4连接交叉
ØJP2:
第二路串口设置1和2连接,3和4连接直连;1和3连接,2和4连接交叉
ØJP3:
MAX232与AVR芯片是否连接控制
ØJP4:
AD转换参考电压源选择,ADJ
(1)与AREF
(2)短接,选择TL431生成的电压为参考;AREF
(2)与AVCC(3)短接,选择AVCC为参考;默认断开,使用AVR内部2.56V参考电压。
ØJP5:
短接后将32.768Khz时钟接入到TC2的外部时钟引脚,用于定时器2精确定时,默认断开。
ØJP6:
DA输出控制,连接到PWM引脚,默认断开。
ØJP7:
芯片时钟选择,Y1方式(1和2连接)使用板载7.3728M晶振,Y2方式(2和3连接)使用用户扩展的晶振,默认Y1,使用板载晶振,另外芯片时钟的选择还和熔丝位有关。
ØJP9:
AD输入控制,连接经过信号调理后的模拟量输入到AD输入端口PA0和PA1,默认断开。
ØJP10:
控制AT45DB041连接到芯片的SPI总线以及PB3,默认断开。
ØJP11:
选择ULN2803的供电方式,1和2短接使用VCC,2和3短接使用VDD,默认VDD。
ØJP12:
控制外部EEPROM芯片AT24C01和时钟芯片PCF8563连接到TWI总线上,默认断开。
第6章实验项目
实验一实验环境熟悉
实验目的:
1、熟悉编译环境的安装使用。
2、了解汇编语言编写程序的相关要点。
实验原理
编译器的安装和使用请见说明
实验内容
根据本电子文档的1、2、3的介绍,熟悉编译环境的安装使用,熟悉汇编语言编写程序的相关要点,连接好仿真器。
打开Avrstudio4,建立汇编语言新工程,编写汇编语言程序,如下面所示:
ldir18,$10
ldir19,$01
;ldir17,0x0e;Loadconstantinr17
ldir17,$0e;Loadconstantinr17
loop:
addr18,r19;Addr2tor1
decr17;Decrementr17
brneloop;Branchifr17<>0
nop;Continue(donothing)
利用编译器里面的单步执行或全速运行,查看寄存器数据变化:
运行完毕后,r18里面的值为0x1e。
自主编写汇编程序进行调试。
写出实验报告。
实验二汇编语言程序设计
实验目的:
1、进一步熟悉编译环境的安装使用。
2、熟悉汇编语言编写程序。
实验原理
编译器的安装和使用请见说明
实验内容
根据本电子文档的1、2、3的介绍,进一步熟悉编译环境的使用,熟悉汇编语言编写程序,连接好仿真器。
打开Avrstudio4,建立汇编语言新工程,编写汇编语言程序,如下面所示:
ldir16,$2
ldir17,$34
ldir18,0x10
ldir19,$1
ldir20,$80
loop1:
mulsr19,r20
loop2:
mulr19,r20
loop3:
addr17,r16
loop4:
subr17,r19
decr18
brneloop2
nop
利用编译器里面的单步执行或全速运行,查看寄存器数据变化:
通过编译器编译,请回答如下问题:
1、如果外接晶振为4M,请问这段代码运行完毕所需要多长时间?
2、第6行运完毕后R0、R1、R19和R20里面的值是多少?
3、第7行运完毕后R0、R1、R19和R20里面的值是多少?
4、全部运行完毕后R0、R1、R16、R17、R18、R19和R20里面的值是多少?
5、全部运行完毕后,loop1-loop4各执行多少次?
注:
所有值用16进制表示
自主编写汇编程序进行调试。
写出实验报告。
实验三基本的IO实验
实验目的:
1、熟悉IO口的基本控制,初步了解IO口的使用。
2、了解AVR单片机的开发过程。
实验原理:
原理图如下:
连线:
PA0--LED0
PA1--LED1
参考程序如下:
#include
//延时函数
voidDelay(void)
{
unsignedchari,j;
for(i=200;i>0;i--)
{
for(j=200;j>0;j--)
;
}
}
//主函数程序从这里开始运行
voidmain(void)
{
PORTA=0x03;
DDRA=0xff;
while
(1)
{
PORTA=0x55;//1脚为高,0脚为低,0脚灯亮
Delay();//延时
Delay();//延时
Delay();//延时
Delay();//延时
Delay();//延时
Delay();//延时
PORTA=0xaa;//0脚为高,1脚为低,1脚灯亮
Delay();//延时
Delay();//延时
Delay();//延时
Delay();//延时
Delay();//延时
Delay();//延时
}
}
程序位于D:
\avrvi\democode\IO_1文件夹,连接好仿真器,打开Avrstudio4,下载程序,运行完毕可看到两个LED闪烁。
实验四花样流水灯实验
实验目的:
1、进一步熟悉IO口的控制,熟悉IO口的使用。
2、掌握AVR单片机的开发过程。
3、了解移位算法的使用。
实验原理:
原理图如下:
连线:
PA(*)--LED(*),PA口与LED一一对应连接
本程序位于D:
\avrvi\democode\IO_3文件夹,连接好仿真器,打开Avrstudio4,下载程序,运行完毕可看到轮流点亮LED,实现跑马灯功能。
实验五蜂鸣器操作实验
实验目的:
1、继续熟悉IO口的使用
2、了解AVR蜂鸣器的操作
实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR 单片机 实验 教材