AVR单片机C语言程序设计实验指导书
AVR单片机实验报告PCF8563
SystemMode = RTCTIMEMODE;
}
函数PowerOnInitial的作用是初始化按键,PCF8563,并初始化时钟的时间。
void KeyProcess(void)
{
BYTE KeyCode;
if( SystemMode == SETTINGMODE && flgFlash == TRUE ){//闪烁控制
switch( SetStep ){
case SETYEAR:
LCM1602BufferLine0[LINEONEBASIC] = ' ';
LCM1602BufferLine0[LINEONEBASIC+1] = ' ';
case SETMONTH:
if( ++PCF8563Time.PCF8563Data.Month == 12+1 ){
PCF8563Time.PCF8563Data.Month = 1;
}
break;
case SETDAY:
if( ++PCF8563Time.PCF8563Data.Day == 31+1 ){
if( ++PCF8563Time.PCF8563Data.Minute == 59+1 ){
PCF8563Time.PCF8563Data.Minute = 0;
}
break;
case SETSECOND:
if( ++PCF8563Time.PCF8563Data.Second == 59+1 ){
AVR单片机C语言项目开发实践教程项目一 AVR单片机系统开发与设计工具
图2-14 进入调试状态
二、程序编译及下载
1.工程文件的建立与编译
点击全速运行
图2-15 程序全速仿真
二、程序编译及下载
1.工程文件的建立与编译
单步运行查看 单口状态
程序指针
点击单步运行 执行每条语句
图2-16 单步执行后的IO状态
二、程序编译及下载
2.示例程序说明
程序使用芯片ATmega16,频率为8MHz。如使用其他 芯片,需修改模拟调试选项中的芯片型号,并修改程序中 的头文件包含。程序所完成的功能:PC0接一LED。以 2Hz的频率闪烁。
图2-20 程序下载界面
三、AVR单片机软件仿真
如果在没用硬件实训箱,也可以利用软件仿真的形式 进行学习。本书简单介绍Proteus软件。
在单片机学习过程中,同学们更应该实际动手设计、 制作、调试,才能从硬件上真正提高自己的水平。
Proteus软件使用方法参照课本演示步骤进行操作。
AVR单片机(C语 言)项目开发实践 教程项目一 AVR单 片机系统开发与设
计工具
目录
一、WinAVR+AVR Studio软件开发环境使用 二、程序编译及下载 三、AVR单片机软件仿真
一、WinAVR+AVR Studio软件开发环境使用
1.AVR单片机嵌入式系统的开发平台AVR Studio ATMEL公司为开发使用AVR单片机提供了一套免费的
1.工程文件的建立与单步执行语句 单步执行语句或函数 跳出当前函数 运行到光标处 自动单步运行 在当前位置添加断点 取消所有断点 快速查看变量
图2-13 运行工具栏
二、程序编译及下载
1.工程文件的建立与编译
3、MCU运行监视
avr单片机gcc程序设计
AVR单片机GCC程序设计1. 介绍AVR单片机是一种基于哈佛架构的8位微控制器,具有高性能、低功耗和广泛的应用领域。
GCC是一种开源的编译器套装,可用于编译C、C++和其他编程语言。
本文将介绍AVR单片机的GCC程序设计,包括开发环境的搭建、程序的编写和调试等内容。
2. 开发环境搭建为了进行AVR单片机的GCC程序设计,我们需要搭建相应的开发环境。
以下是搭建开发环境的步骤:2.1 安装AVR工具链AVR工具链是AVR单片机编程的基础,它包含了编译器、汇编器、链接器等工具。
可以从AVR官方网站上下载并安装AVR工具链。
2.2 安装开发环境在进行AVR单片机GCC程序设计之前,需要安装一个适合的开发环境。
常用的开发环境有AVR Studio和Atmel Studio等。
可以根据个人需求选择一个适合的开发环境进行安装。
2.3 配置编译器在开发环境中配置编译器是非常重要的步骤。
需要将AVR工具链的路径添加到系统环境变量中,以便编译器能够找到相应的工具。
3. GCC程序编写在搭建好开发环境后,就可以开始编写GCC程序了。
以下是GCC程序编写的基本步骤:3.1 编写主函数GCC程序的入口是一个名为”main”的函数。
可以在这个函数中进行初始化操作和主程序的编写。
#include <avr/io.h>int main() {// 初始化代码while (1) {// 主程序代码}}3.2 配置引脚AVR单片机的GPIO引脚可以作为输入或输出使用。
可以使用AVR提供的头文件来配置引脚。
#include <avr/io.h>int main() {DDRB = 0xFF; // 将PB引脚配置为输出while (1) {// 主程序代码}}3.3 读写引脚可以使用AVR提供的函数来读写引脚的电平。
#include <avr/io.h>int main() {DDRB = 0xFF; // 将PB引脚配置为输出while (1) {PORTB = 0xFF; // 将PB引脚输出高电平// 延时PORTB = 0x00; // 将PB引脚输出低电平// 延时}}3.4 中断处理AVR单片机支持外部中断,可以在需要的时候触发中断处理函数。
《C语言程序设计实验》指导书
《C语言程序设计实验》指导书以下是为大家整理的《c语言程序设计实验》指导书的相关范文,本文关键词为c语言程序设计实验,指导书,c语言程序设计实验,简明版,中北,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
《c语言程序设计实验》指导书(简明版)中北大学软件学院20XX年10月实验一顺序结构程序设计(2学时)一、实验目的1、熟悉c编译环境、简单c程序结构及书写方式、以及c程序的编辑、编译、连接、运行、调试的步骤;2、掌握c语言的基本数据类型及其输入输出格式,以及输入输出函数的使用方法;3、掌握c语言的算术运算符(特别是自增、自减运算符)、赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符的使用;4、掌握c语言顺序结构程序的执行流程、设计方法,能够根据实际问题灵活使用顺序结构,画出程序的算法流程图,设计出逻辑合理、思路清晰、结果正确的顺序结构程序。
二、实验内容及要求1、实验内容包括8道题目,分为基本内容和选做内容两部分。
要求:(1)基本内容中的实验题目是必须要完成的,选做内容中的实验题目可以根据自己的情况选做或全做(越多越好,适当加分);(2)在实验之前编写出基本内容、选做内容中的所有程序,实验前检查(视未完成情况适当扣分);(3)对于设计型题目,要求画出程序流程图(传统流程图和n-s 图);(4)在上机实验过程中,注意总结和体会上机步骤(编辑、编译、连接、运行、调试、结果分析),注意培养观察、分析和排除编译错误、连接错误和程序逻辑错误的初步能力;(5)上机结束后,应按要求认真书写实验报告(格式见附件)。
2、基本内容(1)[验证型]编辑下列程序,然后进行编译、连接和运行,观察结果,并简要总结简单c程序的结构、书写格式以及上机过程;#includeintmain(){printf(\return0;}(2)[验证型]通过运行下列程序,分析各种格式符的使用方法。
AVR单片机(C语言)项目开发实践教程项目6 按键识别应用
if((PIND&0X20)==0) { delay(5); if((PIND&0X20)==0) {
while((PIND&0X20)==0); return key; break; } } key++; if((PIND&0X40)==0) { delay(5); if((PIND&0X40)==0) { while((PIND&0X40)==0); return key; break; } } key++;
图中的4输入与门用于产生按键中断,其输入端
与各列线相连,再通过上拉电阻接至+5V电源,输出
端接至16的外部中断输入端。具体工作如下:当键
PB0
盘无键按下时,与门各输入端均为高电平,保持输
PB1
PB2
出端为高电平;当有键按下时,端为低电平,向
PB3
PB4
CPU申请中断,若CPU开放外部中断,则会响应中
PB5
PB6
断请求,转去执行键盘扫描子程序。
PB7
五、矩阵键盘的接口实例
ATmega16单片机的PB口作为 键盘I/O口,键盘的列线接到PB口的 高4位,键盘的行线接到PB口的低4 位。作为输入时要打开内部上拉电阻 功能。在按键和I/O之间有一排限流 电阻。4根行线和4根列线形成16个 相交点,即:4*4键盘。
AVR单片机(C语言)项目开发实践 教程项目6 按键识别应用
项目六 按键识别应用
❖ 任务1 项目知识点学习 ❖ 任务2 多功能按键控制LED灯 ❖ 任务3 矩阵式键盘键值识别 ❖ 任务4 电话拨号显示控制
AVR单片机实验教学指导书.
A VR单片机实习教学指导书保定电力职业技术学院动力工程系热自教研室2007年4月18日目录一自延时与数据移位(M01- M02)二键控分支(M03- M04)三自动计数(M05- M06)四键控计数(M07- M08)五、逻辑控制(M09- M10)(一) 由逻辑图编程(二) 由逻辑命题编程六动态显示与数据转换(M11- M13)七外中断使用(M14- M15)八定时/计数器使用(M16- M19)(一) 定时器设置:(二) 定时中断控制九定时/计数器应用(M20- M20B)(一) 实时钟显示(二) 高频测量(三) 低频测量十脉宽调制PWM(M21- M22)十一显示驱动7219集成块使用(M23- M27)(一) 数码显示:8位8段数码管巡回显示多参数(二)点阵显示:8×8点阵字符汉字显示控制十二.模数转换A/D功能的使用(M28- M29)十三.液晶显示器的使用(M30- M33)十四4×4矩阵键盘的使用(M34- M37)十五异步通信(M38)十六模拟比较器(M39)十七常数设置(M40)十八教学演示综合测试程序(M41- M42)十九 AVR毕业论文参考课题二十 AVR毕业论文参考框架附图1:实习系统连接图附图2:AVR芯片引脚图附图3:实习板电路原理图附录1.自定义文件头应用说明。
附录2:CVAVR编译器简介:一、标示符二、数据类型三、关键字四、常用内部函数. 附录3:实习命题参考程序:一、自定义文件头程序二、命题程序(M1- M40)三、演示程序实践教学说明:1命题路径及文件名:如D:\GY1\M0101(含义高职仪表- 学号- 命题编号)其中:命题M,考题K2考核模式及分值:1上电时状态(20分) 2控制状态1(30分) 3控制状态2 (30分) 4状态返回(20分)一、延时显示与移位M01.试编程序,使8个发光管和8个数码管全部按0.5秒间隔闪光。
M01A.试编程序,使单个发光管亮按0.2秒时间间隔向左循环移动。
AVR单片机C语言编程
高性能
AVR单片机的功耗较低,适用于电池供电的设备。
低功耗
AVR单片机可以通过C语言编程实现不同的功能。
可编程
AVR单片机的外设接口丰富,如ADC、DAC、UART、SPI等,便于实现各种通信和控制功能。
丰富的外设接口
AVR单片机的应用领域
AVR单片机可以通过外设接口实现与传感器的通信和控制,适用于智能仪表领域。
AVR Studio简介
AVR Studio可从Atmel官方网站下载安装,支持Windows、Linux和Mac等多种操作系统。
AVR Studio安装
AVR Studio简介及安装
AVR Studio的使用方法
使用AVR Studio进行单片机编程,需先创建一个工程,然后编写代码、编译、链接和下载程序到单片机中。
调试技巧
使用AVR Studio的调试功能,可以实时监控单片机内部寄存器和IO口状态,支持串口调试和JTAG调试等多种方式。
AVR Studio的使用方法及调试技巧
AVR单片机的开发流程
先确定单片机型号及所需外围器件,然后编写程序、编译、链接、下载并调试,最后进行系统测试。
注意事项
在进行AVR单片机开发时,要注意代码规范、注释明确、变量命名规则和模块化设计等基本问题,提高代码可读性和可维护性。同时,要避免使用未经Atmel认证的芯片和元器件,以确保系统稳定可靠。
01
02
03
01
总结词:熟练掌握
AVR单片机实现液晶显示控制
02
液晶显示控制程序:利用AVR单片机的串行通信接口,实现液晶显示的控制,同时采用C语言编写相应的程序。
03
程序逻辑:利用AVR单片机的USART串行通信接口,通过发送相应的指令控制液晶显示器的显示内容和显示位置,同时采用中断处理的方式对液晶显示器的状态进行实时监控,实现液晶显示的控制功能。
avr单片机gcc程序设计
avr单片机gcc程序设计一、前言AVR单片机是一种常见的嵌入式系统处理器,广泛应用于各种电子设备中。
GCC是一款常用的C语言编译器,也可以用于AVR单片机程序设计。
本文将介绍如何使用GCC进行AVR单片机程序设计。
二、准备工作1. 安装GCC编译器GCC编译器可以在Linux、Windows和Mac OS X等操作系统上安装。
安装方法请参考相关文档。
2. 安装AVR-GCC工具链AVR-GCC工具链包括编译器和调试器等工具,可以在Linux、Windows和Mac OS X等操作系统上安装。
安装方法请参考相关文档。
3. 准备开发板选择一款支持AVR单片机的开发板,并连接到计算机上。
4. 编写代码使用C语言编写程序,并保存为.c文件。
三、编译过程1. 编译源代码打开命令行终端,进入.c文件所在目录,执行以下命令:avr-gcc -mmcu=atmega328p -Wall -Os -o main.o main.c其中,-mmcu选项指定了目标单片机型号;-Wall选项启用所有警告信息;-Os选项启用优化;-o选项指定输出文件名。
2. 生成可执行文件执行以下命令:avr-gcc -mmcu=atmega328p -o main.elf main.o其中,-mmcu选项指定了目标单片机型号;-o选项指定输出文件名。
3. 生成HEX文件执行以下命令:avr-objcopy -j .text -j .data -O ihex main.elf main.hex其中,-j选项指定要复制的段;-O选项指定输出格式。
四、烧录过程使用AVR ISP编程器将HEX文件烧录到目标单片机中。
五、调试过程可以使用AVR-GDB进行调试。
首先需要在编译源代码时添加-g选项,生成带有调试信息的可执行文件。
然后执行以下命令:avr-gdb main.elf进入GDB调试界面后,可以使用各种GDB命令进行调试。
六、结语本文介绍了AVR单片机GCC程序设计的基本过程,包括准备工作、编译过程、烧录过程和调试过程。
AVR单片机(C语言)项目开发实践教程项目8.5 音拍发生器
比较匹配发生后,将置位相应的中断请求标志OCF1A和OCF1B。、掌握单片机系统内部定时/计数器1和定 时的使用方法,并能合理运用到实际项目 中;
2、通过C语言和汇编语言编程实现对单片机 内部定时计数器的操作;
3、系统硬件设计的实现,功能的软件技术实 现以及功能实现的综合调试能力。
【项目知识准备】
1、16位定时器/计数器T/C1特点 ATmega16的T/C1是一个16位的多功能定时计数器.
TOP
TOP
6 7
位004~3:11波形发11生0 模式101。该两1 位190位位与快快速速WPPWcWlGMkMI/OM/64(1来1自、00分xx00频13WFF器FF)GM10(TTOO位PP 于TCCRTTOO1PPA)
8 相1组合,0用于控0制1 T/C001的计P0W数M,和相位工、c频作lk率I/O可/方2调56式(来。自I分CR频1器)
【项目知识准备】
定时/计数器1的寄控制寄存器A(TCCR1A)
76 5 4 3 2 1 0
COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10
位7~6:T/C1比较匹配A输出模式。这两位决定了T/C1比较匹配发生 时输出引脚OC1A的输出行为。 位5~4:T/C1比较匹配B输出模式。这两位决定了T/C1比较匹配发生 时输出引脚OC1B的输出行为。 位3:强制输出比较A。 位2:强制输出比较B。 位1~0:波形发生模式。该两位与WGM13、 WGM12(位于TCCR1B) 相组合,用于控制T/C1的计数和工作方式。
AVR单片机(C语言)项目开发实践教程项目4 ATmega16单片机IO接口应用
【知识目标】
1. 了解LED发光二极管的驱动控制方法 2. 了解ATmega16单片机数字I/O口的结构 3. 了解ATmega16单片机数字I/O口的相关寄
存器功能
2021/8/3
【项目知识点与技能点】
1. 掌握单片机控制LED发光二极管驱动电 路的连接方法
2. 掌握ATmega16单片机数字I/O口的相关 寄存器功能的设置
位 PORTA.7 PORTA.6 PORTA.5 PORTA.4 PORTA.3 PORTA.2 PORTA.1 PORTA.0
复位值 0
0
0
0
0
0
0
0
2021/8/3
二、I/O接口的寄存器
• 端口输入寄存器:PINX(PINA)-----只读
位 PINA.7 PINA.6 PINA.5 PINA.4 PINA.3 PINA.2 PINA.1 PINA.0 复位值 N/A N/A N/A N/A N/A N/A N/A N/A
①DDRA为A口数据方向寄存器,用来定义A口的通讯方 向(输入/输出);
②PORTA为A口数据寄存器,用来输出数据(输入时, PORTX为高,打开上拉电阻);当PORTx=1时,I/O引脚高 电平,可提供输出20mA电流;当PORTx=0时,I/O引脚低电 平,可吸纳20mA电流。因此,AVR的I/O在输出方式下提供 了比较大驱动能力,可以直接驱动LED等小功率外围器件。
AVR单片机(C语言)项目开发实践 教程项目4 ATmega16单片机IO接口应
用
项目四 ATmega6单片机I/O口应用
• 任务一 项目知识点学习 • 任务二 LED闪烁灯控制 • 任务三 LED开关灯控制 • 任务四 汽车转向灯控制 • 任务五 霓虹灯控制 • 任务六 继电器控制照明设备
AVR单片机C语言编程
输入输出端口的电压范围通常为0-5V。
输入输出端口的编程实例
• 以下是一个简单的AVR单片机输入输出端口的C语言编程示例
输入输出端口的编程实例
```c
int main(void)
输入输出端口的编程实例
{
DDRB |= (1 << DDB0); // 设置PB0为输出端口
串口发送数据
使用AVR单片机的发送缓冲寄存器,可以将数据发送到串口。
串口接收数据
使用AVR单片机的接收缓冲寄存器,可以接收来自串口的数据。
串口通信的扩展方法
扩展串口通信协议
根据实际需要,可以扩展串口通信协议,增加数据 传输的效率和可靠性。
多设备串口通信
通过多设备串口通信技术,可以实现多个设备之间 的数据传输和共享。
网络化串口通信
将串口通信与网络技术结合,可以实现远程控制和 数据传输。
06
AVR单片机的中断处理控 制
中断处理的工作原理
中断源
01
02
03
中断优先级
中断向量
AVR单片机具有多种中断源,包 括定时器/计数器中断、外部中 断、串行通信中断等。
多个中断同时发生时,需要根据 中断优先级来决定哪个中断先被 处理。
看门狗定时器控制
总结词
通过AVR单片机的C语言编程,可以实现看门狗定时器的控制。
详细描述
AVR单片机的看门狗定时器是一种用于系统恢复的机制。在C语言编程中,可 以使用内置的定时器/计数器或外部中断,实现对看门狗定时器的控制。
系统时钟设置控制
总结词
通过AVR单片机的C语言编程,可以实现对系统时钟 的设定和控制。
avr单片机实验报告
avr单片机实验报告AVR单片机实验报告一、引言AVR单片机是一种常用的微控制器,广泛应用于各种电子设备中。
本实验报告旨在对AVR单片机进行实验研究,通过实际操作和测试,探索其功能和性能。
二、实验目的1. 了解AVR单片机的基本原理和结构。
2. 学习使用AVR单片机进行输入输出控制。
3. 掌握AVR单片机的编程和调试技巧。
4. 实现简单的实际应用,如LED灯控制、温度传感器等。
三、实验器材1. AVR单片机开发板2. 电脑3. USB数据线4. LED灯5. 温度传感器四、实验过程1. 硬件连接将AVR单片机开发板与电脑通过USB数据线连接,并将LED灯和温度传感器分别连接到开发板上。
2. 软件设置在电脑上安装AVR单片机开发环境,并进行相关设置,包括选择开发板型号、端口设置等。
3. 编写程序使用C语言编写程序,实现对LED灯和温度传感器的控制。
通过AVR单片机的输入输出引脚,控制LED灯的亮灭,并读取温度传感器的数值。
4. 烧录程序将编写好的程序通过USB数据线烧录到AVR单片机中,确保程序能够正确运行。
5. 实验测试通过实验测试,验证程序的正确性和可靠性。
观察LED灯的亮灭情况,检查温度传感器读取的数值是否准确。
五、实验结果与分析经过实验测试,我们成功控制了LED灯的亮灭,并能够读取温度传感器的数值。
通过调试程序,我们发现AVR单片机具有较高的稳定性和可靠性,能够准确地执行我们编写的指令。
六、实验总结本次实验使我们深入了解了AVR单片机的原理和应用,学习了使用AVR单片机进行输入输出控制的方法。
通过实验操作,我们掌握了AVR单片机的编程和调试技巧,提高了我们的实际操作能力。
七、实验心得通过本次实验,我们不仅学到了理论知识,还亲自动手进行了实际操作。
这不仅加深了我们对AVR单片机的理解,还提高了我们的实践能力。
在今后的学习和工作中,我们将能够更好地应用AVR单片机进行各种电子设备的开发和控制。
任务五 霓虹灯控制_AVR单片机(C语言)项目开发实践教程_[共3页]
五、项目实施
//开关在中间位置
//左右灯均熄灭
//开关在下位置
//左灯点亮 //右灯熄灭
//开关在下位置
//右灯点亮 //左灯熄灭
1.根据元器件清单选择合适的元器件。 2.根据硬件设计原理图,在万能电路板进行元器件布局,并进行焊接工作。 3.焊接完成后,重复进行线路检查,防止短路、虚接现象。 4.在 AVR Studio 软件中创建项目,输入源代码并生成*.hex 文件。 5.在确认硬件电路正确的前提下,通过 JTAG 仿真器进行程序的下载与硬件在线调试。
49
任务五 霓虹灯控制
一、任务要求
利用 ATmega16 单片机数字 I/O 口,编程实现 8 个 LED 灯的左右来回循环点亮,形成走马 灯形式。(也可根据需要编程实现多种花样的 LED 灯点亮形式)
二、硬件设计
将 8 个 LED 发光二极管的阴极经限流电阻连接到 PC0~PC7,进行控制,如图 4-13 所示。
if((PIND&0xE0)==0xA0) {
PORTB|=0xC0; }
else if((PIND&0xE0)==0x60) {
PORTB&=~_BV(7);
PORTB|=_BV(6); }
else if((PIND&0xE0)==0xC0) {
PORTB&=~_BV(6);
} } }
ቤተ መጻሕፍቲ ባይዱ
PORTB|=_BV(7);
项目四 ATmega16 单片机 I/O 口应用
四、参考程序
#define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> int main() {
AVR单片机(C语言)项目开发实践教程项目十二 ATmega16单片机I2C通信接口应用
【任务1】 项目知识点学习
❖二、I2C总线的协议
3、I2C总线的仲裁 在仲裁过程中,一旦有个主控器低电平时钟信号,则
SCL也变为低电平状态,它将影响所有有关的主控器,并 使它们的计时器复位。如果有一个主控器首先由低电平向 高电平转换,这时由于还有其他主控器处于低电平状态, 因此它只能处于高电平状态等待状态,直至所有主控器都 结束低电平状态,SCL才转为高电平。仲裁过程中的具体 时序同步如图所示。
❖二、I2C总线的协议
2、I2C总线接口的特性 在I2C总线上,SDA上的数据传输必ቤተ መጻሕፍቲ ባይዱ以字节为单位
(最高位最先传送),每个传送字节后还必须跟随一应答 位。这个应答信号由发送器发出。整个数据传送过程中, 传输的字节数目是没有限制的。但是若数据传输一段时间 后,接收器无法继续接收时,主控器也可以终止数据的传 送。
【任务1】 项目知识点学习
【任务1】 项目知识点学习
❖四、液晶模块介绍
LCD是一种常用的显示器件,它是一种将液晶显示器 件、连接件、集成电路、PCB线路板、背光源、结构件装 配在一起的组件。LCD有显示容量大、耗能低、人机交流 界面更加友好等优点,现在广泛应用于便携式仪器仪表、 智能电器、消费类电子产品等领域。本项目将采用常用的 DM12864M来说明LCD的使用。DM12864M汉字图形点阵 液晶显示模块可显示汉、字图形,内置中文字库,和单片 机配合使用非常方便。
【任务2】 应用PCF8563制作电子时钟
二、硬件设计
图12-10 电路原理图
【任务2】 应用PCF8563制作电子时钟
二、硬件设计
图12-11 LCD应用电路
【任务2】 应用PCF8563制作电子时钟
三、程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写入单片机(在此之前,须将单片机实验板按要求与 PC 机连接正确,并接通电源)。 8.验证硬件实现的结果是否与功能要求一致。
四、参考程序(实现 8 个 led 灯的自动顺序(加法)和逆序(减法)点亮的
PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7
1 2 3 4 5 6 7 8
PB0/T0/XCK PB1/T1 PB2/AIN0/INT2 PB3/AIN1/OC0 PB4/SS PB5/MOSI PB6/MISO PB7/SCK
22 23 24 25 26 27 28 29
PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP PD7/OC2
14 15 16 17 18 19 20 21
AVCC AREF
30 32
C1
+2.50
1nF
Volts
50%
注意:由于用 proteus ISIS 仿真时,数码管模型显示的闪烁现象和缓存现象,需要对其 进行短延时和清屏,否则,显示将出现乱码现象。可在 main()主函数里加入两条语句:
实验一 发光二极管的移动控制
一、实验目的
1.熟悉并行接口的设置与应用; 2.进一步熟悉编译软件和下载软件的使用; 3.熟悉 C 语言中移位、延时、数组等指令的应用; 4.增强学习单片机的兴趣。
二、实验内容
1.参考课本 P128“发光二极管的移动控制”实验程序,实现发光二极管循环点亮的按键控 制。
)
2.设计一个完整程序(另建一个文档),实现 8 个 led 灯的自动顺序(加法)点亮和逆序 (减法)点亮。见参考程序,并在程序中添加必要的解释文字。
3.保存程序,并将程序源文件添加到项目里。见下图 1。
图1
(
4.设置项目属性,选择目标芯片等,见下图 2,3。
图2
图3
5.编译程序。将所输入的程序进行编译(菜单 Project→ Make 命令),或者在工具栏单击
按钮),若编译时下方出现错误提示,说明程序有语法错误,此时必须根据编译器所列
出的错误消息,逐条查改,重新编译,直到错误消除并生成*.hex 文件。 6.功能仿真。利用 proteus 或 AVR studio 的仿真功能对程序进行功能性仿真,验证程序
1 2 3 4 5 6 7 8
PB0/XCK/T0 PB1/T1 PB2/INT2/AIN0 PB3/OC0/AIN1 PB4/SS PB5/MOSI PB6/MISO PB7/SCK
ATMEGA16
PC0/SCL PC1/SDA PC2/TCK PC3/TMS PC4/TDO PC5/TDI PC6/TOSC1 PC7/TOSC2
@
二、实验内容
1. 参照课本 P383 页“0~5V 数字式直流电压表实验”程序,并编译、仿真,见下图所示。
RV1
1k
U1
9 RESET
13 12
XTAL1 XTAL2
40 39 38 37 36 35 34 33
PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7
ATMEGA16
PC0/SCL PC1/SDA PC2/TCK PC3/TMS PC4/TDO PC5/TDI PC6/TOSC1 PC7/TOSC2
22 23 24 25 26 27 28 29
PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP1 PD7/OC2
部分程序)
>
/*********************** 系统外接 8M 晶振
************************/ unsigned char i;
while (1) { for (i = 0; i < 8; i ++) { PORTB = ~(1 << i); delay_ms(200);
注意数码管的位选端排列顺序,实验板与课本电路图中数码管排序不同,故需要调整
位选端。 3.如果想观察 ADC 转换后的数字结果,则需将数码管显示改为: PORTA=SEG7[adc_val%10]; ……… 依次类推。
三、拓展实验
把数码管显示改为 LCD1602 液晶显示。(可参考 P240“0~5V 数字电压调整器”lcd 部分程 序内容)
。
} for (i = 8; i > 0; i --) {
PORTB = ~(1 << i-1); delay_ms(200); } }
…
实验二 0~99 数字的加减控制
一、实验目的
1.熟悉并行接口的设置与应用; 2. 进一步熟悉编译软件和下载软件的使用; 3.熟悉十进制数各个位在数码管上显示的编程方法;
PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP PD7/OC2
14 15 16 17 18 19 20 21
AVCC AREF
30 32
S1 S2
ATMEGA16
图 1 键控计数电路
@
四、实验步骤
参照实验一的实验步骤过程。 1.参照课本 P131,通过 ICCAVR 编译后生成*.HEX 文件,并利用 proteus ISIS 仿真程序实 现的功能。 2.在不修改数码管位选端的情况下,观察程序执行结果。 3.分别修改数码管的个位和十位位选端,使数码管上显示的结果正常。 4.如要使数字的显示从数码管的最低位开始显示,重新设计数码管的个位和十位位选端编 码。 5.若要控制 0~999 数字的加减控制,设计数码管的 BCD 转换。
二、实验内容
1.参照课本 P234“PWM 测试实验”的程序,实现按键 S1、S2 对 PWM 的输出控制。
&
(1)编译通过后,进行软件仿真。在 Proteus ISIS 里利用 LCD1602 观察显示内容是否正 确,并用虚拟示波器(OSCILLOSCOPE)观察 OC2 引脚(PD7)输出的 PWM 信号是否正常。见下图。
ATMEGA16
二、实验内容
1.参照课本 P131“0~99 数字的加减控制”的程序,实现按键对数字的加减控制功能(因 实验板上数码管与 PC 口的连接方式和书本中的连接不一致,须修改源程序,具体见实验电路 分析部分)。
2.假如需要控制 0~999 数字的加减控制,请重新设计一个程序实现该功能。
:
三、实验电路
本实验的电路连接如下图所示 1。注意:本图中高位数码管连接低位 PC 口,低位数码管连 接高位 PC 口,即图中第 1 位(最左边)数码管连接 PC0,第 2 位数码管连接 PC1,…,第 8 位(最 右边)数码管。与课本的实验电路连接方式不一致,故在程序设计中需要修改数码管的位选 端。
注意:因使用 PA7 为输入端口,而 PA 口为原电路中 LCD1602 的数据端口,故把数据端口 改为 PC 口,注意要把 lcd1602 液晶的驱动程序“”中的语句“#define DataPort PORTA”改 为“#define DataPort PORTC”。Proteus ISIS 仿真图如下图。
三、实验步骤
1.以班级和姓名为文件夹名称在 D 盘根目录下新建一个子目录文件夹,用来保存每次实验 的项目和程序。(注意:每次实验的位置固定,即下次实验的计算机还是上次的计算机。)
2.再在这个子目录下以实验题目为名新建一个文件夹。打开 ICCAVR 开发编程软件,新建 一个工程文件项目,参照程序清单或根据实验要求自己重新修改设置并输入程序。
/*******LCD1602 液晶驱动程序***************/ #include <>
·
#include <> #define xtal 8 #define PB0 0 #define PB1 1 #define PB2 2 掌握 A/D 转换程序的设计; 2. 掌握数据采集与显示的应用; 3.掌握数据处理的方法;
14 15 16 17 18 19 20 21
AREF AVCC
32 30
S1 S2
A B C D
(2)用数字万用表检测 OC2 脚(PD7),观测输出电压是否与 LCD 指示的相符,并填入下
表。
OCR2 值
LCD 显示的电压值(
数字万用表显示的电压值(V) )
"
[
\
2.修改源程序(P234~P236),使输出脉宽是自动变化的。部分参考程序如下: while (1) {
高位 数码管
低位 数码管
X1
X1 X2
CC1RYSTAL C2
1nF
1nF
U1
RN1
1
16
2
15
3
14
4
13
5
12
6
11
7
10
8
9
RX8
9
X1 13 X2 12
40 39 38 37 36 35 34 33
1 2 3 4 5 6 7 8
RESET
XTAL1 XTAL2
PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7
&
五、部分参考程序
1.实验板上各个数码管的位选端数组为: ACT[8] ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} 码管 BCD 转换: