AVR单片机秒节拍设计.docx

上传人:b****1 文档编号:2422641 上传时间:2022-10-29 格式:DOCX 页数:12 大小:630.67KB
下载 相关 举报
AVR单片机秒节拍设计.docx_第1页
第1页 / 共12页
AVR单片机秒节拍设计.docx_第2页
第2页 / 共12页
AVR单片机秒节拍设计.docx_第3页
第3页 / 共12页
AVR单片机秒节拍设计.docx_第4页
第4页 / 共12页
AVR单片机秒节拍设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

AVR单片机秒节拍设计.docx

《AVR单片机秒节拍设计.docx》由会员分享,可在线阅读,更多相关《AVR单片机秒节拍设计.docx(12页珍藏版)》请在冰豆网上搜索。

AVR单片机秒节拍设计.docx

AVR单片机秒节拍设计

AVR单片机秒节拍设计

一:

设计任务:

实现AVR单片机的秒节拍功能

二:

设计要求:

1、实现单片对LED灯和数码管的秒节拍控制

2、编写控制单片机秒节拍的C语言程序

3、完成系统整体电路的设计、绘制以及电路板的焊接

三:

所需原件

元件名称

数量

9cm*15cm的实验电路板

1

电源插座

1

470uF电容

2

104pF电容

2

L7805稳压器

1

8M石英晶体

1

22pF电容

2

ATmega16单片机

1

SPI程序下载端口

1

LED发光二极管

2

拨动式开关

1

按键式开关(带锁)

2

560Ω电阻

1

5.1kΩ电阻

1

共阴型数码管

1

集成电路插座40脚

1

数据下载线

1

排针、跳线

若干

四:

设计步骤

硬件设计

设计要点

1、汽车上的蓄电池基本上是12V电压,而ATmega16需要的是5V电压,所以首先要放置一个12V转5V电路,电压转变电路由电容、电解电容和L7805稳压器组成。

2、本系统中,在ATmega16引脚XTAL1和XTAL2上外接了8M石英晶体和电容的谐振回路,并配合片内的OSC(Oscillator)振荡电路构成振荡源作为系统时钟,这样要比片子自带的时钟系统要精确的多,受温度变化的影响也相对较小。

3、程序下载端口有ISP编程下载口,该口的2、3、4、5脚与芯片SPI接口的MOSI(PB5)、MISO(PB6)、SCK(PB7)和RESET引脚连接。

4、本系统中含有两个LED发光二极管,一个是由原始电源供电,另一个是由单片机供电,一个是PC0置0时发光,一个是PC0置1时发光,所以两个灯的亮灭是相间的。

5、数码管为共阴型的,控制数码管的按键在数码管接地管脚与地之间,这样就可以避免使用六位同步开关了。

电路图

图中,顶层部分为12V转5V电路,Y3为L7805稳压器,两边分别安装有一个电容和一个电解电容,起到滤波作用;左下部分是外部晶振,为单片机提供8MHz的晶振源;右下部分是数码管,本试验中为共阴型;其中发光二极管D1和D2,工作原理不同,D1是依靠外部电源,当P0口置0时发光,而D2是依靠单片机提供的自身电流,当P0口置1时发光;单片机型号为ATmega16。

PCB板(未铺地)

PCB板(已铺地)

实物图

软件设计

功能:

设计一套简单的程序,使单片机能够控制LED发光二极管一秒闪烁两次,并控制数码管进行自加变化。

程序说明:

1、首先要对程序头文件进行设置,使得其与使用的单片机型号相对应;

2、其次要编写延时程序,在本次编程中,使用的是软件中自带的延时程序,使用比较方便;

3、进入主程序,首先要对初值和和输出方式进行设置;

4、进入秒节拍控制循环,使单片机实现对LED发光二极管和数码管的控制

程序内容:

本程序比较简单,可以独立完成。

/*****************************************************

Thisprogramwasproducedbythe

CodeWizardAVRV1.25.7aEvaluation

AutomaticProgramGenerator

?

Copyright1998-2007PavelHaiduc,HPInfoTechs.r.l.

Project:

Version:

Date:

2011-10-3

Author:

Freeware,forevaluationandnon-commercialuseonly

Company:

Comments:

 

Chiptype:

ATmega16

Programtype:

Application

Clockfrequency:

4.000000MHz

Memorymodel:

Small

ExternalSRAMsize:

0

DataStacksize:

256

*****************************************************/

#include//设置程序的头文件

#include//调用延时函数的头文件

flashunsignedcharsmg[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

//定义数码管显示数字时对应的十六进制数

voidmain(void)//主程序开始

{

unsignedchari=0;//定义unsignedchar型变量i

PORTA=0x00;//PA口全部赋为0值

DDRA=0xFF;//定义PA口为输出的工作方式

PORTC=0x01;//PC口第0位输出为“1”,LED灯不亮

DDRC=0x01;//定义PC口第0位为输出的工作方式

while

(1)//进入LED闪烁循环

{

PORTC.0=~PORTC.0;//对PC口第0位输出取反

delay_ms(500);//调用CVAVR提供的毫秒延时函数,延时500ms

PORTA=smg[i];//对PA口赋值,使得数码管显示数字

PORTC.0=~PORTC.0;//对PC口第0位输出取反

delay_ms(500);//调用CVAVR提供的毫秒延时函数,延时500ms

i++;//i进行自加运算

if(i==16)i=0;//当i自加到16是,对i进行置0,使数码管在

0~F(15)之间进行变化

}

}

五:

AVR单片机秒节拍设计测试

1:

将编写好的程序烧入ATmega16单片机中

在此系统中运用的是PROGISP程序烧入软件,首先在打开的对话框中选择“向导方式”,并在弹出的选项中进行设置,并在“选择芯片”中选用ATmega16型号,而后点击“调入FLASH”按键,选择所要烧入的程序,最后点击右下角的“自动”按钮。

这样,程序就烧到单片机内了。

2:

结果观测

在最后测试中,观测到了LED发光二极管每隔500ms就自动闪烁一下,数码管每隔1s自动变化一次,说明调试成功。

下面两张图片分别是单片机控制LED灯亮时和不亮时的情况。

①:

只有数码管工作的状态

②:

数码管和单片机控制的LED灯工作的状态

③:

数码管和两个发光二极管全部工作时的状态

六:

总结

在本次系统设计中,主要的收获是对电路板的设计、各元件在电路板上的排列以及电路板的焊接,并运用了新的编程和程序烧入软件,在期间对AVR单片机有了进一步认识,并温习了C语言和Protel的练习。

主要不足是,在实验室只找到了9V电源,所以前面的电源转换电路是用9V转换为5V的,不过两者原理相同,稍作改变即可实现12V转换为9V电压。

七:

参考文献

[1]马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:

北京航空航天大学出

版社,2009.

[2]Protel相关视频资料

[3]

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1