400 likes | 494 Views
机电控制工程. AVR 单片机基础实验. 2012 年 04 月 25 日. 内容. 认识开发板. 1. 硬件连接. 2. 程序编写. 3. 实现功能. 4. 课程回顾. 5. 1. 认识开发板. 1. 认识开发板. 1. 认识开发板. 输入 按键 PD2 PD3 AD 采集 AD7 输出 LED PC0-PC3 L298 PB1-PB4 ZLG7289 PD5-PD7 通信
E N D
机电控制工程 AVR单片机基础实验 2012年04月25日
内容 认识开发板 1 硬件连接 2 程序编写 3 实现功能 4 课程回顾 5
1.认识开发板 • 输入 • 按键 PD2 PD3 • AD采集 AD7 • 输出 • LED PC0-PC3 • L298 PB1-PB4 • ZLG7289 PD5-PD7 • 通信 • 串口 Max3232PD0(RXD), PD1(TXD)
内容 认识开发板 1 硬件连接 2 程序编写 3 实现功能 4 课程回顾 5
USB口 串口 ISP 串口通信 220V +12V 2.硬件连接
2.硬件连接 • 注意事项 • 硬件 • 与电脑硬件连接的设备都需要安装驱动:下载线,USB转串口;若安装完成后仍有问题,则重启系统。 • 插拔电源线、下载线、串口线时先关闭开发板电源,关闭上位机软件(串口调试助手) • 下载线可以给开发板供5V电,变压器供12V电,不能采用两种方式同时供电,有可能会烧掉电脑的USB口。使用步进电机时,只能用12V供电。 • 串口和ISP(USB下载)请勿同时使用。 • 软件 • 编译程序之前,配置单片机型号。 • 烧写程序时,选择正确的单片机型号,配置以及熔丝位 • 调入Flash之前,可以查看.hex文件生成的时间来判断是否调入正确
内容 认识开发板 1 硬件连接 2 程序编写 3 实现功能 4 课程回顾 5
3.程序编写 • 编程软件 • ICCAVR • AVRStudio(仿真) • 烧写软件 • Progisp • 通信软件 • 串口调试助手
3.程序编写 • 注意事项 • 三种逻辑运算符:左右两边是关系表达式或者逻辑量 • && 逻辑与(and) • || 逻辑或(or) • ! 逻辑非(NOT) • 位运算:二进制位的运算 • & 按位与 • | 按位或 • ^ 异或 • ~ 取反 • << 左移 >> 右移
3.程序编写 • 注意事项 • 数制 • 二进制数 0b开头 不区分大小写 0b10100101 • 十六进制数 0x开头 不区分大小写 0xA5 • 十进制数 直接写 165 • 文件 • .c文件:编译的文件,实现功能 • .h文件,头文件:宏定义、全局变量、结构体、函数声明、外部调用
内容 认识开发板 1 硬件连接 2 程序编写 3 实现功能 4 课程回顾 5
4.实现功能 • 任务: • I/O输入/输出 • Timer定时计数器 • AD模数转换 • 数码管显示 • 串口通信
4.1 I/O 输入/输出 • 功能: • 按下按键S1,LED2与LED4亮,LED1与LED3灭; • 按下按键S2,LED2与LED4灭,LED1与LED3亮。 • 所用资源: • PC0-PC3 共阳极 LED1-LED4 • INT0(PD2),INT1(PD3) 下降沿 SW1,SW2 • 其他配置: • 单片机型号:ATMega8 • 晶振:11.0592MHz
4.1 I/O 输入/输出 1.新建Project,在指定的文件夹内
4.1 I/O 输入/输出 2.输入文件名,保存
4.1 I/O 输入/输出 • 3.使用向导 对程序进行初始化 • 设置CPU、晶振频率和中断 • 设置IO口 • 在“Options”中选择 • “Include “main()”” • 用“Preview”预览自动 • 生成的初始化函数和主函数
4.1 I/O 输入/输出 4.保存生成的.c文件
4.1 I/O 输入/输出 5.将新建的.c文件添加到Project的Files中,编译
4.1 I/O 输入/输出 6.在工作区域添加自己的程序 bit 7654 3210 PORTC = 0x05; (0b 0000 0101) bit 7654 3210 PORTC = 0x0A;(0b 0000 1010)
4.1 I/O 输入/输出 7. Project->Options…->Target->Device Configuration 选择单片机的型号
4.1 I/O 输入/输出 8.编译程序 编译成功
4.1 I/O 输入/输出 • 9.烧写程序 • 选择ATmega8 • 编程位选择 • 熔丝位 • 调入.hex文件 • (注意生成时间)
4.1 I/O 输入/输出 • 编程步骤 • 1. 新建Project,保存 • 2.使用向导配置资源,生成初始化函数,“include main()” • 3. 保存为.c文件 • 4. 添加.c文件到Files中,编译 • 5. 编写自己的代码 • 6. 设备配置,选择单片机型号 • 7. 将.hex文件烧写到单片机中
4.2 Timer定时计数器 • 功能: • 5Hz的速度控制流水灯LED1-LED4,即每个灯亮0.2s,依次循环 • 所用资源: • PC0-PC3 共阴极 LED1-LED4 • 16位Timer1工作在普通模式下,定时时间5Hz,1024分频,中断使能 • 其他配置: • 单片机型号:ATMega8 • 晶振:11.0592MHz
4.2 Timer定时计数器 • 向导生成初始化程序
4.2 Timer定时计数器 • 添加自己的代码 • 单片机主频:f=11.0592MHz • 16位Timer1计数范围:0-65535 • 经1024分频后,Timer1频率为f1=11.059MHz/1024=10799Hz • Timer1计数个数Count=f1/5Hz=2159 • Timer1初值= • 65536-Count=63377=0xF791 • 全局变量step控制灯亮顺序
4.3 AD模数转换 • 功能: • 采集模数转换的输入(10bit, 0-1023),采集值ad • 所用资源: • PC0-PC3 共阴极 LED1-LED4 • AD7为输入通道,AREF为参考电压源,使能AD开始连续转换,使能中断,选择分频,默认右对齐 • 其他配置: • 单片机型号:ATMega8 • 晶振:11.0592MHz 0<=ad<200 全灭 200<=ad<400 LED4亮 400<=ad<600 LED43亮 600<=ad<800 LED432亮 800<=ad<=1023 LED4321均亮
4.3 AD模数转换 • 向导生成初始化程序
4.3 AD模数转换 • 添加自己的代码 • 全局变量 int temp=1023; • 选择通道7:ADMUX • 默认右对齐,temp=ADCL+(ADCH<<8)
4.4 数码管显示 • 功能: • 按下按键S1,数码管显示“1234”; • 按下按键S2,数码管显示“5678”; • 按下复位,数码管显示“0000”。 • 所用资源: • PC0-PC3 共阴极 LED1-LED4 • INT0(PD2),INT1(PD3) 下降沿 SW1,SW2 • PD5-PD7为数码管驱动芯片提供控制信号 #include “g7289.h” • 其他配置: • 单片机型号:ATMega8 • 晶振:11.0592MHz
4.4 数码管显示 • 向导生成初始化程序
4.4 数码管显示 • 添加自己的代码 • #include "g7289.h" • 头文件< >与“”的区别: • 寻找头文件时候的路径顺序不同 • 使用尖括号,先去找系统库目录 • 使用分号,先去找当前目录 • 为了更快的找到头文件,加快编译速度, • 建议系统头文件用尖括号 • 自定义头文件用引号
4.5 串口通信 • 功能: • 上位机(笔记本)通过串口调试助手发送数据给下位机(单片机),下位机返回同样的数据到上位机显示。 • 所用资源: • UART0:TXD0, RXD0 • 波特率:9600 • 使能发送、接收以及接收中断 • 其他配置: • 单片机型号:ATMega8 • 晶振:11.0592MHz
4.5 串口通信 • 向导生成初始化程序
4.5 串口通信 • 添加自己的代码 • 在串口接收中断中,将收到的数据发送出去。
回顾我们今天学习的内容: AVR开发工具 实验样例 单片机开发板 输入输出实验 编译器ICC 开发板架构 仿真软件AVR Studio 定时器实验 各个功能模块 下载软件progisp 模数转换实验 电源 最小系统 LED 数码管实验 按键 AD采集 数码显示 串口实验 串口通信 电机模块
下周内容: • 步进电机基础知识与控制 • 时间地点: • 下周四(5月3日)上午10点 B307,带上实验箱与笔记本 • 复习课件内容,爱惜设备!