1 / 34

《 单片机应用技术 》

《 单片机应用技术 》. 电气自动化技术专业. 项目一 单片机输入输出接口. 项目功能 项目知识点与技能点 项目知识准备 项目实施. 【 项目功能 】. 1 、通过单片机的 IO 口点亮 LED 灯。 2 、 通过按键控制 LED 灯的不同点亮形式。 3 、 初步掌握 AVR 单片机的 C 语言编程和调试。. 【 项目知识点与技能点 】. 1 、 ATmega16 单片机数字 IO 口的结构。 2 、 ATmega16 单片机数字 IO 口的寄存器功能及设置方式。 3 、 74HC573 芯片的功能及使用。. 【 项目知识准备 】.

schuyler
Download Presentation

《 单片机应用技术 》

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 《单片机应用技术》 电气自动化技术专业

  2. 项目一 单片机输入输出接口 • 项目功能 • 项目知识点与技能点 • 项目知识准备 • 项目实施

  3. 【项目功能】 1、通过单片机的IO口点亮LED灯。 2、 通过按键控制LED灯的不同点亮形式。 3、 初步掌握AVR单片机的C语言编程和调试。

  4. 【项目知识点与技能点】 1、ATmega16单片机数字IO口的结构。 2、ATmega16单片机数字IO口的寄存器功能及设置方式。 3、74HC573芯片的功能及使用。

  5. 【项目知识准备】 ATmega16单片机有32个通用I/O接口,分为PORTA、PORTB、PORTC、PORTD四个8位接口,分别对应于芯片上的32个I/O引脚。所有的I/O接口都有复用功能。第一功能均作为数字通用I/O接口使用,而复用功能分别用于中断、定时/计数器、USART、I2C、SPI、模拟比较、捕捉等应用。

  6. ATmega16单片机的外部引脚: DIP封装40脚 Vcc, GND 2 XTAL1, XTAL2 2 RESET 1 AVCC,GND 2 AREF 1 PA0—PA7 8 PB0—PB7 8 PC0—PC7 8 PD0—PD7 8

  7. 一、 I/O端口的基本结构 • 从图中可以看出,每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。I/O口的工作方式和表现特征由这3个I/O口寄存器控制。

  8. 二、I/O接口的寄存器 在ICCAVR C环境中,头文件“iom16v.h”中定义了许多用于控制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等小功率外围器件。 ③PINA用来读取A口数据(只读)。

  9. PORTA.7 0 DDRA.7 0 DDRA.6 0 PORTA.6 0 PORTA.5 0 DDRA.5 0 PORTA.4 0 DDRA.4 0 DDRA.3 0 PORTA.3 0 PORTA.2 0 DDRA.2 0 DDRA.1 0 PORTA.1 0 DDRA.0 0 PORTA.0 0 二、I/O接口的寄存器 • 数据方向寄存器:DDRX(DDRA)-----可读写 位 复位值 • 数据寄存器:PORTX(PORTA )-----可读写 位 复位值

  10. ADTS2 0 PINA.7 N/A PINA.6 N/A ADTS1 0 ADTS0 0 PINA.5 N/A - 0 PINA.4 N/A PINA.3 N/A PUD 0 PSR1 0 PINA.2 N/A PINA.1 N/A PSR2 0 PINA.0 N/A PSR10 0 二、I/O接口的寄存器 • 端口输入寄存器:PINX(PINA)-----只读 位 复位值 • 特殊功能寄存器:SFIOR 位 复位值 ØBIT2-PUD:Pull up disable 置位时,禁用上拉电阻,即使是将寄存器DDxn 和PORTxn 配置为使能上拉电阻,I/O端口的上拉电阻也被禁止。

  11. 二、I/O接口的寄存器 当DDRA的某位为0时,送到方向锁存器的输出端为0,相应位只能作输入。 char a; DDRA=0x0; PORTA=0x0F; a=PINA; // A口作为输入 // 低4位使用内部上拉电阻 // 读取A口的值到变量a

  12. 当DDRA的某位为1时,送到方向锁存器的输出端为1,相应位只能作输出。当DDRA的某位为1时,送到方向锁存器的输出端为1,相应位只能作输出。 如程序段: char a; a=0x11; DDRA=0xFF; PORTA=a; // 赋值00010001 // A口8脚都作输出 //将a的值通过PA口输出

  13. 与A口类似,用于对PB口控制三个特定宏为:DDRB、PINB、PORTB;用于对PC口控制三个特定宏为: DDRC、PINC、PORTC;用于对PD口控制三个特定宏为: DDRD、PIND、PORTD。 综上所述,4个并行接口的情况如表所示。 注:因为所有IO接口都具有不同的第二功能,因此实际的接口电路都与前面介绍的有所不同,要详细了解请查阅相关资料。

  14. ATmega16单片机的IO引脚结构图:

  15. AVR I/O口引脚配置表

  16. ATmega16单片机I/O端口的主要特点 • 双向可独立位控的I/O口。 ATmega16有A、B、C、D四个并行(8位字长)输入输出端口。能一次输入/输出一个字节的数据。 • Push-Pull大电流驱动(最大40mA)。每个I/O口输出方式均采用推挽式缓冲器输出,提供大电流的驱动,可以输出(吸入)20mA的电流,因而能直接驱动LED显示器。 • 可控制的引脚内部上拉电阻。 • DDRx可控的方向寄存器。

  17. 三、通用数字I/O接口的设置与读写操作 • 首先要根据系统的硬件设计情况,设定各个I/O口的工作方式:输入或输出工作方式,即先正确设置DDRx方向寄存,再进行I/O接口的读/写操作。当将I/O接口定义为数字输入口时,还应注意是否需要将该口内部的上拉电阻设置为有效。在设计电路时,如果能利用ATmega16单片机内部的I/O接口上拉电阻,则可节省外部的上拉电阻。 • 在ICCAVR中,可以直接使用C语言对I/O接口寄存器进行操作。

  18. C语言:位操作 • “按位或”用于打开某一位或某几位,即置位 #include<iom16v.h> #include<macros.h> unsigned char gtmpA void main() { unsigned char tmpB; PORTA|=0x80; tmpB|=0x80; gtmpA|=0x80; } //将端口A的第七位置“1” //将局部变量的第七位置“1” //将全局变量的第七位置“1”

  19. C语言:位操作 • “按位取反”用于关闭某一位或某几位,即清零 #include<iom16v.h> #include<macros.h> unsigned char gtmpA void main() { unsigned char tmpB; PORTA &=~0x80; tmpB &=~0x80; gtmpA &=~0x80; } //将端口A的第七位清零 //将局部变量的第七位清零 //将全局变量的第七位清零

  20. C语言:位操作 • “按位异或”用于翻转(取反)某一位或某几位 #include<iom16v.h> #include<macros.h> unsigned char gtmpA void main() { unsigned char tmpB; PORTA ^= 0x80; tmpB ^= 0x80; gtmpA ^= 0x80; } //将端口A的第七位翻转 //将局部变量的第七位翻转 //将全局变量的第七位翻转

  21. C语言:位操作 • “按位与”用于检查某一位或某几位是否为1 #include<iom16v.h> #include<macros.h> unsigned char gtmpA void main() { unsigned char tmpB; while(tmpB&0x80) { if(PINA&0x80) PORTA &=~0x80; else …… } } //查询局部变量第七位是否为“1” //查询PA.7是否为“1” //关闭A端口第七位

  22. 1、设置I/O接口为输出方式 • DDRA=0xFF;//PA口的0~7位设置为输出 • PORTA=0x0F;//PA口的0~3位输出为高电平,4~7位输出为低电平 • 在ICCAVR的头文件macros.h中定义 #define BIT(x) (1 << (x)) 1<<(x)表示逻辑“1”左移x位,BIT(1)为逻辑“1”左移1位,结果为0b00000010,BIT(7)为逻辑“1”左移7位0b10000000。 • DDRA|=BIT(1)|BIT(7);//PA口的第1位和第7位置高电平输出 • PORTA|=BIT(1);//PA口第1位输出高电平 • PORTA&=~BIT(7);//PA口第7位输出低电平

  23. 2、设置I/O接口为输入方式 • DDRA=0x00;//PA口的0~7位设置为输入 • PORTA=0xF0;//PA口的4~7位设置内部上拉电阻使能,0~3位的内部上拉电阻没有使用,外部引脚呈现三态高阻输入状态 • if(PINA&0x80) //判断PA口第7位的高低电平状态

  24. 2 7 6 5 4 3 1 0 第一次 第二次 需求分析: 在试验装置上有8只发光二极管接在PC口,每只发光管低电平点亮。如果按图所示的方式点亮,每次点亮两只发光管,间隔0.2秒后,再换成点亮相邻的两只,依此类推,4次后,再回到第一次,周而复始,形成彩灯的移动。 第三次 第四次 彩灯点亮示意图 四、举例

  25. VCC PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 0 0 0 0 0 0 0 0 彩灯控制电路 硬件电路分析: ATmega16

  26. 跑马灯电路

  27. 74LS573简介: 74HC573是并行输入,并行输出接口的8数据锁存器器件,可用在单向的并行输出/并行地址锁存等. 主要用于数码管、按键等等的控制。其引脚分布如下图所示。其中: VCC:接电源。 GND:接地。 D0~D8:数据输入端。 Q0~Q8:数据输出端。 LE:锁存使能控制端。 /OE:输出使能控制端

  28. 74LS573真值表: 表1-2 74HC573功能表

  29. 程序清单: #include <mege16.h> #include <delay.h> void main(void) { char i,j; DDRB = 0xFF; PORTB = 0x0; while(1) { j=0x01; for(i=0;i<4;i++) { PORTB=~j; delay_ms(100); j=(j<<1); } } } //设置PB口为输出口 //无限循环 //j赋初值,00000001 //取反后(低电平点亮)输出 //延时200毫秒 //j值左移一位

  30. 功能: 流程图: 按键1按下时,8个数码管顺序点亮,否则逆时针点亮。

  31. 【项目实施】 • 项目要求: • 参考实例中IO口作为输入输出的使用方法,通过不同的按键实现不同的显示方式,比如闪烁,流水灯显示等等。

  32. 【项目实施】 1、各小组内部进行小组分工,确定项目内容和实施计划,项目的内容要有创新点。 2、打开AVR Stdio软件建立AVR-ICC项目,编写程序,进行编译(各小组自行设计按键控制LED灯的亮灭情况,使用尽量多的按键和LED)。 3、编译无误,在线调试。使实训箱电源按钮处于关闭状态,IC锁紧座中放入ATmega16单片机,将DC9V/1A电源插头插入电源孔,将USB延长线接头与JTAG硬件仿真器相连接,同时将JTAG仿真器连在实训箱的JTAG接口。 4、接通74LS573芯片锁存使能端PD1,拨码开关在PC3右侧;接通8个LED灯对应的数据端口PB,拨码开关在PB0~7左侧,作为输出;LED共阳极,低电平点亮;四个按键位于实训箱右上角喇叭下方,拨通在其右侧的拨码开关,四个按键分别对应于PD4~7引脚。

  33. 【项目实施】 5、按下实训箱电源开关,打开AVRstudio 4与实训箱单片机进行通信,将编译后的文件下载到实训箱单片机中,观察运行结果,运行结果达到实训要求实训完成。 6、实训完成后,切断实训箱电源,将拨动过的拔码开关拨回到原位置,将实训用到的跳线帽拔下,将实训用到的外部接线撤下,将实训用到的器件及连线完好的放回到实训箱储物阁中。 7、完成项目报告,就本组的项目进行总结。

  34. 谢 谢

More Related