您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 基于AVR单片机的端口控制系统
1基于ATmega8单片机的端口控制系统一、产品概述:通过对ATmega8单片机的初步学习,掌握了其部分功能。此次作品主要是以ATmega8单片机的普通I/O端口和同步串行接口(SPI)对外围电路进行控制。如用PD3~PD7端口对5位流水灯进行控制;用PB2、PB3、PB5端口加上74HC595芯片控制5位数码管。此外,利用光栅扫描,让蜂鸣器进行音乐演奏。总之,是以ATmega8单片机为主控,通过软件对外围电路进行操作。二、主控部分原理图:以下为Protel99SE中的截图1.主控部分SCH图2.PCB图TopLayer(顶层)图23.PCB图BottomLayer(底层)图三、功能简介:31.此次作品的硬件系统结构如下图所示:2.主控芯片用的是贴片的mega8单片机,其引脚设置如下图所示。基于ATmega8单片机的主要控制系统模块PA3~PA7端口控制5位流水灯5个74HC595芯片5个8段数码管光栅检测模块蜂鸣器电源供电模块SIP通信及ISP下载和普通I/O端口43.主控部分的供电模块通过78L05先将5~18V的直流电源,转化为5V给外围电路供电,再用1117将5V电源转化为3.3V给单片机供电,在电源转化的过程中采用100uF和104的电容对其进行高通和低通的滤波。4.外围电路的控制其它外围电路的功能都是基于主控部分而实现的。通过软件对ATmega8单片机的端口进行控制,使其实现5位流水灯的循环闪烁,即从第一位到第五位,然后再返回来,并且每个灯熄灭的时间是相同的;利用单片机的PB端口对74HC595芯片进行控制,使8段数码管显示“2009”,这样可以实现只用5根线对5个数码管进行控制;另外对光栅进行控制,当有障碍物位于光栅的发射端与接收端之间时,蜂鸣器响起,奏出“生日快乐”歌曲,当两个端口之间没有障碍物时,蜂鸣器铃声自动停止,这相当于一个报警系统。四、部分程序源代码:#includeiom8v.h#includemacros.h#defineuintunsignedint#defineucharunsignedcharucharconstDISP_TAB[16]=5{//01234567890x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,//0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,//AbCdEF0x77,0x7c,0x39,0x5e,0x79,0x71};voidport_init(){DDRD=0xFF;PORTD=0xFF;PORTB|=0x00;//ÉèÖÃPB¿ÚDDRB|=(1DDB3)|(1DDB5)|(1DDB2);//SCK,MOSI,SSÊä³ö}voiddelay_ms(inttime){intj;for(;time0;time--)for(j=0;j800;j++);}/*ÑÓʱ×Ó³ÌÐò*/voidspi_init(void){SPCR=0X5a;//setupSPIÖ÷»úģʽ,0101,1000,SPE,DORD=0,MSTR,CPOLSPSR=0x00;//setupSPIsck=7.3728MHz/16}voidspi_txd(ucharm)//·¢ËͳÌÐò{SPDR=m;while(!(SPSR&(1SPIF)));//µÈ´ý·¢ËͽáÊø}voiddisplay()6{intT;for(T=2;T8;T++){PORTD=(1T);delay_ms(800);}for(T=8;T4;T--){PORTD=(1T-2);delay_ms(800);}PORTD=0x00;delay_ms(800);}voidmain(){longt;unsignedchara[5],i;port_init();spi_init();DDRD=0xFF;while(1){display();t=2009;a[0]=(t/10000)%10;a[1]=(t/1000)%10;a[2]=(t/100)%10;a[3]=(t/10)%10;7a[4]=(t/1)%10;PORTB=(0PB2);for(i=0;i5;i++){spi_txd(DISP_TAB[a[i]]);}PORTB=(1PB2);delay_ms(200);if(t=99999){t=0;}}}五、制作体会:通过亲自动手用Protel99SE画好原理图、转换为PCB图、用打印机和转印纸对图进行打印、用熨斗往覆铜板上转印、用三硫化铁对板进行腐蚀、打孔、选元器件进行焊接、写程序对电路进行调试,经过好多次,终于调试,终于初见成效,有说不出的欣喜。在此过程中又熟悉了制作手工板的全过程,同时对与Protel99SE、ICCV7forAVR、AVRStudio,以及ISIS7Professional仿真等软件的运用又有了新的提高。通过和队友合作,使自己有更好的团队协作精神,最重要的还是因为兴趣而辛勤的劳动之后的欣喜!由于是初学AVR单片机,同时对于单片机的编程不是很擅长,因此只能对主控模块的部分功能进行操作。相信在今后的学习过程中,会逐步对其功能进行扩展,在软件方面有所提高,同时继续在自己的兴趣指引下向新的更大的目标前进!
本文标题:基于AVR单片机的端口控制系统
链接地址:https://www.777doc.com/doc-2568647 .html