AVR单片机秒节拍设计.docx
- 文档编号:2422641
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:12
- 大小:630.67KB
AVR单片机秒节拍设计.docx
《AVR单片机秒节拍设计.docx》由会员分享,可在线阅读,更多相关《AVR单片机秒节拍设计.docx(12页珍藏版)》请在冰豆网上搜索。
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]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR 单片机 节拍 设计