您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 《实战AVR单片机C语言》
盛世电子科技867285659@qq.com《实战AVR单片机C语言》前言(必读)在本教程当中,所有的程序都是以GCCAVR来编写,而且全部利用硬件调试通过,在没有特殊指明的情况下使用内部1M晶振。本教程的全部硬件实验都是以分立元件为主。因为:第一﹑学习板的硬件电路已经固定好了,从而限制了你的逻辑思维,相对来讲分立元件则非常灵活;第二﹑当你学习完一款单片机之后只要更换另外一款单片机芯片就可以继续学习,其它的外围元件可以完全兼容;第三﹑学习过程中全部电路都是由自已亲手搭建,这样可以加强自己的动手能力,因为你学习单片机是为了什么啊!不就是为了成为一名高薪电子工程师吗!要想成为一名高薪电子工程师昀重要的就是有较强的动手能力。你要知道,一名电子工程师在实际的工作中是用分立元件来搭建电路进行调试从而研发出产品的,而并不是用学习板。第四﹑当你学会了之后,想业余开发些产品赚些外快,那个时候电子元件就会有大派用场了,而学习板就只能放在一边,再也起不到任何的作用。基于以上等多方面的原因,所以本教程决定用分立元件来作为实验的演练。下面图1-1是本教程使用到的全部元件实物图,而表1-1则为元件清单。在本教程当中的第四章第四节与第五节有部分的截图出自数据手册,其产权归原作者所有。如果读者觉得本教程当中对芯片的资料讲解得不够详细,可以参考芯片的原资料手册。(本教程使用到的全部元件实物图)图1-1表1-1元件参数数量电阻10k8发光二极管白发红光8电阻1K11按键直插16ATmega8DIP封装1盛世电子科技867285659@qq.com(一套)1串口线一条三芯串口线1米MAX232CPEDIP封装1连接导线9芯2米(合共18米)74HC595NDIP封装1可调电位器10K(5W)1三极管90124蜂鸣器5伏1电阻10012LED数码管3位7段带小数点(共阳)1电阻5.1K624C02DIP封装1液晶显示屏16021DS18B20DIP封装1晶振32.768K1DS1302时钟芯片1电池盒3节5号1下载线USB_ASP1面包板4.5cm×19cm2光盘关于AVR的较多内容1就以上的电子元件,可以说是完全熟透AVR单片机的各个功能模块了。但是因为是分立元件,所以除此之外利用此元器件可以搭架的电路还远不止这些,在此则不一一说明了。关于电子元件的更多信息读者可以点击以下的连接:://shop58796262.taobao.com/第一章GCCAVR初步在对AVR单片机内部模块了解之前!我们先来了解一下如何使用GCC编绎器!盛世电子科技867285659@qq.com。(如图1-1)图1-2新建一个文件,将其保存为.c文件,在这里命名为“MYLED.c”。注意:“c”应为小写(如盛世电子科技867285659@qq.com)图1-3然后在同一个文件夹中存放一个Makefile文件,如图1-3。图1-4而Makefile文件可以用“MFile[WinAVR]”来生成。图1-4为“MFile[WinAVR]”的界面,盛世电子科技867285659@qq.com。以下就是一个基于Atmeag8单片机的“Makefile”文件。(为了便于理解!其中红色字体部分为本人添加)而Makefile文件只需更改[单片机类型][目标文件名][C源文件名][系统时钟频率]即可,然后执行[makeall]命令,如图1-5所示。之后编绎器会自动生成烧录FLASH的*.hex,烧录EEPROM的*.eep,调试用的*.elf文件。图1-5以下为“MFile[WinAVR]”所生成的Makefile”文件。即从1-4界面所生成。#HeyEmacs,thisisa-*-makefile-*-#----------------------------------------------------------------------------#WinAVRMakefileTemplatewrittenbyEricB.Weddington,J鰎gWunsch,etal.##ReleasedtothePublicDomain##Additionalmaterialforthismakefilewaswrittenby:#PeterFleury#TimHenigan#ColinO'Flynn#ReinerPatommel#MarkusPfaff#SanderPool#FrederikRouleau#CarlosLamas##----------------------------------------------------------------------------#Oncommandline:##makeall=Makesoftware.##makeclean=Cleanoutbuiltprojectfiles.盛世电子科技867285659@qq.com,usingavrdude.#Pleasecustomizetheavrdudesettingsbelowfirst!##makedebug=Starteithersimulavroravariceasspecifiedfordebugging,#withavr-gdboravr-insightasthefrontendfordebugging.##makefilename.s=Justcompilefilename.cintotheassemblercodeonly.##makefilename.i=Createapreprocessedsourcefileforuseinsubmitting#bugreportstotheGCCproject.##Torebuildprojectdomakecleanthenmakeall.#----------------------------------------------------------------------------#此为单片机类型,填写的格式:at90s8515/attiny15/atmega8等等.....#在这里我们选用“atmega8”#MCUnameMCU=atmega8#Processorfrequency.#Thiswilldefineasymbol,F_CPU,inallsourcecodefilesequaltothe#processorfrequency.Youcanthenusethissymbolinyoursourcecodeto#calculatetimings.DoNOTtackona'UL'attheend,thiswillbedone#automaticallytocreatea32-bitvalueinyoursourcecode.#Typicalvaluesare:#F_CPU=1000000#F_CPU=1843200#F_CPU=2000000#F_CPU=3686400#F_CPU=4000000#F_CPU=7372800#F_CPU=8000000#F_CPU=11059200#F_CPU=14745600#F_CPU=16000000#F_CPU=18432000#F_CPU=20000000#以下为填写单片机的晶振率频,按实际况情填写,盛世电子科技867285659@qq.com:_delay_us()_delay_ms()#具体请参见delay.h文件。在这里我们选用“1M”精振。F_CPU=1000000#Outputformat.(canbesrec,ihex,binary)FORMAT=ihex#以下为一个项目工程名,在编绎之后会生成:.hex/.eep/.elf/等文件#具体可以参见编绎后的当前文件夹。#在这里我们选用工程名为“MYLED”#Targetfilename(withoutextension).TARGET=MYLED#Objectfilesdirectory#Toputobjectfilesincurrentdirectory,useadot(.),doNOTmake#thisanemptyorblankmacro!OBJDIR=.#ListCsourcefileshere.(Cdependenciesareautomaticallygenerated.)#如果一个工程当中包含多C源文件,只需要以SRC=file1.cfile2.cfile3.c这种形式#来填写,其中文件名与文件名之只需要用空格键相隔,这里我们只有一个文件,就无需填#写SRC=$(TARGET).c#*************在正常使用情况下,以下的内容基本不用修改**************************#ListC++sourcefileshere.(Cdependenciesareautomaticallygenerated.)CPPSRC=#ListAssemblersourcefileshere.#Makethemalwaysendinacapital.S.Filesendinginalowercase.s#willnotbeconsideredsourcefilesbutgeneratedfiles(assembler#outputfromthecompiler),andwillbedeleteduponmakeclean!#EventhoughtheDOS/Win*filesystemmatchesboth.sand.Sthesame,#itwillpreservethespellingofthefilenames,andgccitselfdoes#careabouthowthenameisspelledonitscommand-line.盛世电子科技867285659@qq.com。此程序为在PB0端口闪烁点亮一个LED灯,其昀重要是让初学者了解GCC编绎器的使用。以下为“MYLED.c”的源程序。/*******************************************此程序为在PB0端口闪烁点亮一个LED灯,其昀重要的就是了让大家了AVRGCC的使用。********************************************/#includeavr/io.h#includeavr/delay.h/*a为要操作的寄存器,b为要操作的位数*/#defineSET_1(a,b)a|(1b)//置1#defineCLE_0(a,b)a&~(1b)//置0#defineuintunsignedint#defineucharunsignedcharintmain(void){DD
本文标题:《实战AVR单片机C语言》
链接地址:https://www.777doc.com/doc-26008 .html