




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AVRAVR单片机(单片机(C C语言)项目开发实践语言)项目开发实践教程项目教程项目4 ATmega164 ATmega16单片机单片机IOIO接口接口应用应用v任务一 项目知识点学习v任务二 LED闪烁灯控制v任务三 LED开关灯控制v任务四 汽车转向灯控制v任务五 霓虹灯控制v任务六 继电器控制照明设备项目四 ATmega6单片机单片机I/O口应用口应用【知识目标知识目标】v了解LED发光二极管的驱动控制方法v了解ATmega16单片机数字I/O口的结构v了解ATmega16单片机数字I/O口的相关寄存器功能【项目知识点与技能点】【项目知识点与技能点】v掌握单片机控制LED发光二极管驱动
2、电路的连接方法v掌握ATmega16单片机数字I/O口的相关寄存器功能的设置v掌握单片机控制数字I/O口进行开关量控制的程序编写、调试方法 任务一任务一 项目知识点学习项目知识点学习ATmega16单片机有单片机有32个通用个通用I/O接口,分为接口,分为PORTA、PORTB、PORTC、PORTD四个四个8位接口,分位接口,分别对应于芯片上的别对应于芯片上的32个个I/O引脚。所有的引脚。所有的I/O接口都有复接口都有复用功能。第一功能均作为数字通用用功能。第一功能均作为数字通用I/O接口使用,而复用接口使用,而复用功能分别用于中断、定时功能分别用于中断、定时/计数器、计数器、USART、
3、I2C、SPI、模拟比较、捕捉等应用。模拟比较、捕捉等应用。ATmega16单片机的外部引脚:单片机的外部引脚:Vcc, GND 2XTAL1, XTAL2 2RESET 1AVCC,GND 2AREF 1PA0PA7 8PB0PB7 8 PC0PC7 8PD0PD7 8DIP封装封装40脚脚一、一、 I/O端口的基本结构端口的基本结构从图中可以看出,每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=ABCD)。I/O口的工作方式和表现特征由这3个I/O口寄存器控制。 在GCCAVR C环境中,头文件“io.h”中定义了许多用
4、于控制I/O接口输入/出操作的宏,这些宏与I/O寄存器同名,通过这些宏可以控制A、B、C、D接口的输入输出操作。 当A、B、C、D接口用于数据I/O口时,通过DDRx、PORTx和PINx三个宏控制接口的输入与输出(其中x为A、B、C或D)。例如: DDRA为A口数据方向寄存器,用来定义A口的通讯方向(输入/输出); PORTA为A口数据寄存器,用来输出数据(输入时,PORTX为高,打开上拉电阻);当PORTx=1时,I/O引脚高电平,可提供输出20mA电流;当PORTx=0时,I/O引脚低电平,可吸纳20mA电流。因此,AVR的I/O在输出方式下提供了比较大驱动能力,可以直接驱动LED等小功
5、率外围器件。 PINA用来读取A口数据(只读)。二、二、I/O接口的寄存器接口的寄存器二、二、I/O接口的寄存器接口的寄存器v数据方向寄存器:DDRX(DDRA)-可读写DDRA.0DDRA.00DDRA.1DDRA.10 0DDRA.2DDRA.20 0DDRA.3DDRA.30 0DDRA.4DDRA.40 0DDRA.5DDRA.50 0DDRA.6DDRA.60 0DDRA.7DDRA.70 0复位值复位值位位v数据寄存器:PORTX(PORTA )-可读写PORTA.0PORTA.00PORTA.1PORTA.10 0PORTA.2PORTA.20 0PORTA.3PORTA.30
6、0PORTA.4PORTA.40 0PORTA.5PORTA.50 0PORTA.6PORTA.60 0PORTA.7PORTA.70 0复位值复位值位位二、二、I/O接口的寄存器接口的寄存器v端口输入寄存器:PINX(PINA)-只读PINA.0PINA.0N/APINA.1PINA.1N/APINA.2PINA.2N/APINA.3PINA.3N/APINA.4PINA.4N/APINA.5PINA.5N/APINA.6PINA.6N/APINA.7PINA.7N/A复位值复位值位位v特殊功能寄存器:SFIORPSR10PSR100PSR2PSR20 0PSR1PSR10 0PUDPUD0
7、 0- -0 0ADTS0ADTS00 0ADTS1ADTS10 0ADTS2ADTS20 0复位值复位值位位 BIT3PUD:Pull up disable置位时,禁用上拉电阻,即使是将寄存器置位时,禁用上拉电阻,即使是将寄存器DDxn 和和PORTxn 配置为使配置为使能上拉电阻,能上拉电阻,I/O端口的上拉电阻也被禁止。端口的上拉电阻也被禁止。 当DDRA的某位为0时,送到方向锁存器的输出端为0,相应位只能作输入。 char a;DDRA=0 x00;PORTA=0 x0F; a=PINA;/ A口作为输入/ 低4位使用内部上拉电阻/ 读取A口的值到变量a二、二、I/O接口的寄存器接口的
8、寄存器当DDRA的某位为1时,送到方向锁存器的输出端为1,相应位只能作输出。如程序段: char a; a=0 x11; DDRA=0 xFF; PORTA=a;/ 赋值00010001/ A口8脚都作输出/将a的值通过PA口输出接口名称接口名称方向控制宏方向控制宏引脚输入宏引脚输入宏引脚输出宏引脚输出宏接口性质接口性质PADDRAPINAPORTAI/OPBDDRBPINBPORTBI/OPCDDRCPINCPORTCI/OPDDDRDPINDPORTDI/O 注:因为所有IO接口都具有不同的第二功能,因此实际的接口电路都与前面介绍的有所不同,要详细了解请查阅相关资料。 与A口类似,用于对P
9、B口控制三个特定宏为:DDRB、PINB、PORTB;用于对PC口控制三个特定宏为: DDRC、PINC、PORTC;用于对PD口控制三个特定宏为: DDRD、PIND、PORTD。综上所述,4个并行接口的情况如表所示。ATmega16单片机的单片机的IO引脚结构图:引脚结构图:AVR I/O口引脚配置表DDRXnDDRXnPORTXnPORTXnPUDPUDI/OI/O方向方向上拉电阻上拉电阻引脚状态说明引脚状态说明0 00 0X X输入输入无效无效高阻态高阻态0 01 10 0输入输入有效有效外部引脚拉低时外部引脚拉低时将输出电流将输出电流0 01 11 1输入输入无效无效高阻态高阻态1
10、10 0X X输出输出无效无效输出低电平(吸输出低电平(吸收电流)收电流)1 11 1X X输出输出无效无效输出高电平(输输出高电平(输出电流)出电流)ATmega16 单片机单片机I/O端口的主要特点端口的主要特点 双向可独立位控的I/O口。 ATmega16有A、B、C、D四个并行(8位字长)输入输出端口。能一次输入/输出一个字节的数据。 Push-Pull大电流驱动(最大40mA)。每个I/O口输出方式均采用推挽式缓冲器输出,提供大电流的驱动,可以输出(吸入)20mA的电流,因而能直接驱动LED显示器。 可控制的引脚内部上拉电阻。 DDRx可控的方向寄存器。首先要根据系统的硬件设计情况,
11、设定各个I/O口的工作方式:输入或输出工作方式输入或输出工作方式,即先正确设置DDRx方向寄存,再进行I/O接口的读/写操作。当将当将I/O接口定义为数字输入口时,还应注意是接口定义为数字输入口时,还应注意是否需要将该口内部的上拉电阻设置为有效。否需要将该口内部的上拉电阻设置为有效。在设计电路时,如果能利用ATmega16单片机内部的I/O接口上拉电阻,则可节省外部的上拉电阻。在GCCAVR中,可以直接使用C语言对I/O接口寄存器进行操作。三、通用数字三、通用数字I/O接口的设置与读写操作接口的设置与读写操作C语言:位操作语言:位操作v“按位或按位或”用于打开某一位或某几位,即用于打开某一位或
12、某几位,即置位置位#includeunsigned char gtmpAvoid main() unsigned char tmpB; PORTA|=0 x80; tmpB|=0 x80; /将端口将端口A的第七位置的第七位置“1”/将局部变量的第七位置将局部变量的第七位置“1”/将全局变量的第七位置将全局变量的第七位置“1”v“按位取反按位取反”用于关闭某一位或某几位,即用于关闭某一位或某几位,即清零清零#includeunsigned char gtmpA;void main() unsigned char tmpB; PORTA &=0 x80; tmpB &=0 x80
13、; gtmpA &=0 x80;/将端口将端口A的第七位清零的第七位清零/将局部变量的第七位清零将局部变量的第七位清零/将全局变量的第七位清零将全局变量的第七位清零C语言:位操作语言:位操作v“按位异或按位异或”用于翻转(用于翻转(取反取反)某一位或某几位)某一位或某几位#includeunsigned char gtmpAvoid main() unsigned char tmpB; PORTA = 0 x80; tmpB = 0 x80; gtmpA = 0 x80;/将端口将端口A的第七位翻转的第七位翻转/将局部变量的第七位翻转将局部变量的第七位翻转/将全局变量的第七位翻转将全局
14、变量的第七位翻转C语言:位操作语言:位操作v“按位与按位与”用于检查某一位或某几位是否为用于检查某一位或某几位是否为1 #includeunsigned char gtmpAvoid main() unsigned char tmpB; while(tmpB&0 x80) if(PINA&0 x80) PORTA &=0 x80; else /查询局部变量第七位是否为查询局部变量第七位是否为“1”/查询查询PA.7是否为是否为“1”/关闭关闭A端口第七位端口第七位C语言:位操作语言:位操作vDDRA=0 xFF;/PA口的07位设置为输出vPORTA0 x0F;/PA口
15、的03位输出为高电平,47位输出为低电平 在GCCAVR的头文件中定义#define_BV(PXx) (1 (x)1(x)表示逻辑“1”左移x位,_BV(PX1)为逻辑“1”左移1位,结果为0b00000010,_BV(PX7)为逻辑“1”左移7位0b10000000。 vDDRA|=_BV(PA1)|_BV(PA7);/PA口的第1位和第7位置高电平输出vPORTA|=_BV(PA1);/PA口第1位输出高电平vPORTA&=BV(PA7);/PA口第7位输出低电平1、设置I/O接口为输出方式vDDRA=0 x00;/PA口的07位设置为输入vPORTA0 xF0;/PA口的47位设
16、置内部上拉电阻使能,03位的内部上拉电阻没有使用,外部引脚呈现三态高阻输入状态vif(PINA&0 x80) /判断PA口第7位的高低电平状态2、设置I/O接口为输入方式需求分析:在试验装置上有8只发光二极管接在PC口,每只发光管低电平点亮。如果按图所示的方式点亮,每次点亮两只发光管,间隔0.2秒后,再换成点亮相邻的两只,依此类推,4次后,再回到第一次,周而复始,形成彩灯的移动。第一次第二次第三次第四次76543210四、举例四、举例任务任务2 LED闪烁灯控制闪烁灯控制v一、任务要求:一、任务要求:利用ATmega16单片机数字I/O口,编程实现控制一个LED发光二极管的闪烁亮灭,通
17、过编写程序,可改变LED发光二极管闪烁的频率。v二、硬件电路v三、程序流程任务任务3 LED开关灯控制开关灯控制v一、任务要求:一、任务要求:利用ATmega16单片机数字I/O口,编程实现用一个开关控制LED发光二极管的亮灭,开关闭合时LED亮,开关断开时LED熄灭。v二、硬件电路v三、程序流程任务任务4 汽车转向灯控制汽车转向灯控制v一、任务要求:一、任务要求:利用ATmega16单片机数字I/O口,编程实现模拟汽车转向灯的控制,当开关在中间原位时左右两个转向灯均不亮,当开关拨到上面时右转向灯闪烁点亮,当开关拨到下面时左转向灯闪烁点亮。v二、硬件电路v三、程序流程任务任务5 霓虹灯控制霓虹灯控制v一、任务要求:一、任务要求:利用ATmega16单片机数字I/O口,编程实现8个LED灯的左右来回循环点亮,形成走马灯形式。(也可根据需要编程实现多种花样的LED灯点亮形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 剧团戏服赠与合同范例
- 减糖鱼脯甜味感知影响因素与调控机制研究
- 共同债务转让合同范例
- 出口营销合同范例
- 买卖兜底合同范例
- 激光超声高效率光声转换机理及应用研究
- 公费师范生履约合同范例
- 会展广告合同范例
- 保安开除员工合同范例
- 农村地皮赠送合同范例
- 2025年安徽电气工程职业技术学院单招职业技能考试题库汇编
- 19父爱之舟课件
- 2025年皖西卫生职业学院单招职业适应性测试题库附答案
- 2025年合肥财经职业学院单招职业适应性测试题库必考题
- 2025年阜新高等专科学校单招职业技能测试题库审定版
- 隧道智能照明控制系统研究
- 课件围术期下肢深静脉血栓的预防与护理
- 2025年菏泽家政职业学院单招职业技能测试题库完美版
- 清华大学告诉你普通人如何抓住DeepSeek红利
- 农业机械设备维护与质量保障措施
- 基于图像处理的CAD图纸比对算法
评论
0/150
提交评论