- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章内容
(对应课本第6、10、11章)
§4.1 ATmega16(L)的I/O接口结构
§4.2 ATmega16(L)的I/O接口的配置
§4.3 ATmega16(L)的I/O接口的第二功能
§4.4 应用举例
§4.5 数码管显示技术
§4.6 行列式矩阵键盘技术
§4.7 蜂鸣器驱动
第四章 I/O接口及应用
作为通用I/O接口使用时,AVR单片机所有I/O接口都具有真正的读-修改-写功能。
所有的端口都具有与电压无关的上拉电阻。
§4.2 AVR单片机I/O接口的配置
作为通用数字I/O口使用时,每个I/O接口都具有3个寄存器:
1、端口寄存器及配置
如果希望读取引脚的逻辑电平值,一定要读取PINX,而不是PORTX。注意:PINX是只读的,不能对其赋值。
例如: temp=PINB; //将PB口引脚信号读入变量temp中。
设置DDRx方向寄存器
设置PORTx数据寄存器
设置PINx输入引脚寄存器(只读寄存器)
DDRxn
PORTxn
I/O
上拉电阻
说明
0
0
输入
无
高阻态
0
1
输入
有
带上拉的输入
1
0
输出
无
输出低电平
1
1
输出
无
输出高电平
表6-1 端口的引脚配置
(对上拉电阻的理解,可参照下图理解)
悬空(高阻态)很容易受干扰
图中单片机的三个I/O口PC7、PC6、PC5作为输入口(输入方式),分别与K3、K2、K1三个按键连接。
K2是标准的连接方式,当没有按下K2时,PC6的输入为高电平,按下K2输入为低电平。PC6引脚上的电平值反映了按键的状态(外部上拉)。
按键K1是一种经济的接法,它充分利用了AVR单片机I/O口的内部上拉特点。在K1的连接中,除了把PC5定义为输入方式时(DDRC=0xDF),同时设置PC5口的上拉电阻有效(PORTC |=BIT(5)),这样当K1处在断开状态时,PC5引脚在内部上拉电阻的作用下为稳定的高电平(如果上拉电阻无效,则PC5处在高阻输入态,PC5的输入易受到干扰,不稳定),按下K1输入为低电平。
与K2连接方式比较,K1连接电路中省掉了一个外部上拉电阻,而在K2的连接方法中,由于外部使用了上拉电阻,所以只要设置PC6口为输入方式即可,该口内部的上拉电阻有效与否则不必考虑了。
而对于K3的连接方式,我们不提倡使用,因当K3按下闭合时,PC7口直接与Vcc接通了,有可能会造成大的短路电流流过PC7引脚,从而把端口烧毁。
2、配置实例
当然,特殊情况下也不带上拉输入。
如A/D中的模拟信号输入、功能模块(中断、定时器等)的输入可以是低电平触发。
(4)读取某一位的操作(使用“PINX”)
例://假设PB7通过一个10K的上拉电阻接5V电源,并且PB7还接有一个按键,按键的另一端接地。如果按键按下,执行程序语句1,否则执行程序语句2。
if((PINB 0x80)==0) 程序语句1;
else 程序语句2;
或 if(PINB (17)==0)程序语句1;
else 程序语句2;
3、I/O接口配置技巧
在AVR单片机的I/O接口中,每个端口位的输入/输出都有一个方向寄存器位进行控制。
使用赋值语句(如DDRA=0x0F)可以设置端口的方向。但是在改变其中一位的值的时候,同时还要考虑其他7位的状态,并且要小心翼翼地避免不小心改变了其他位的值。
技巧:可以使用单片机C语言中的位运算符。
如:DDRA|=(1PA5);
或 DDRA|=BIT(5);
DDRA=0X10;
DDRA|=BIT(5);
区别!!
ATmega16单片机除了具有通用I/O功能之外,大多数端口还具有第二功能。
见课本P76 表6-2
§4.3 I/O接口的第二功能
一、『例4-1』:彩灯控制
ATmega16
硬件电路分析:
采用开关语句switch/case实现:
void main(void)
{
uint i;
uchar j;
PORTB = 0xFF;
DDRB = 0xFF; //设置PB口为输 出口
while(1)
{ //无限循环
for(i=0;i4;i++)
{
switch(i)
{
case 0: PORTB=0xEE; //1110 1110
break;
case 1: PORTB=0xDD; //1101 1101
break;
case 2: PORTB=0xBB;
您可能关注的文档
- 化工项目技术交流文件试卷.ppt
- 第四章__高压电力线路试卷.ppt
- 2016版《红对勾讲与练》高三物理人教版总复习配套:第五章机械能及其守恒定律第4节功能关系讲稿.ppt
- “岁月时光机”长征公益策划案讲稿.pptx
- “提升工程”远程培训在线测0925讲稿.docx
- “网络打赏”现象讲稿.pptx
- “文革中的两个音乐家”作文讲评讲稿.ppt
- 江苏远泰YU8知识培训试卷.ppt
- 2016版阿长与《山海经》讲稿.ppt
- 第四章__焊接结构的脆性断裂试卷.ppt
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库附答案详解(模拟题).docx
- 2025年广西物流职业技术学院辅导员招聘考试笔试备考题库及1套完整答案详解.docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库附答案详解(名师推荐).docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库附答案详解(完整版).docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库附答案详解(典型题).docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库附答案详解.docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库有答案详解.docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库完整参考答案详解.docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库及答案详解(考点梳理).docx
- 2025年广西水利电力职业技术学院辅导员招聘考试笔试备考题库带答案详解.docx
文档评论(0)