《CVAVR教程.docx》由会员分享,可在线阅读,更多相关《CVAVR教程.docx(95页珍藏版)》请在优知文库上搜索。
1、AVR单片机实习教学指导书保定电力职业技术学院动力工程系热自教研室2007年4月18日目录一自延时与数据移位(IKn-M02)二健控分支(M03-M04)三自动计数(M05-M06)四健控计数(M07-M08)五、嵬辑控制(M09-M1.O)(一)由设辑图编程(-由逻辑命题编程六动态显示与数据转换(MU-M13)七外中断使用(M14-M15)八定时/计数舞使用(M16-M19)(一)定时零设汽:(二)定时中断控制九定时/计数器应用(M20-M20B)(一)实时钟显示(二)高侦测Ift(三)低频测显十脉宽调制PWM(M21-M22)十一显示驱动7219集成块使用(M23-M27)(一)数码显示:
2、8位8段数码管巡回0示多参数(二)点阵显示:8X8点阵字符汉字显示控制十二模数转换A/D功能的使用(M28-M29)十三液晶显示器的使用(M3OM33)十四4X4短阵健盘的使用(M34-M37)十五异步通信(M38)十六模拟比较器(M39)十七常数设(Mo)十八教学演示综合测试程序(IM1.-M42)十九AVR毕业论文”考课题二十AVR毕业论文叁考框架附图h实习系统连接图附图2:AVR芯片引脚图附图3:实习板电路原理图附录1.自定义文件头应用说明.附录2:CVAVR编译叁简介I一、标示符二、数据类型三、关键字四、附用内部函数.附录3;实习命题介考程序:一、自定义文件头程序命题程序(M1.-M1
3、.O)三、演示程序PA0-PA7PCO-Pe7PINAPB0PB7PD0PD7实践教学说明:1命题路径及文件名:如D:GY1MO1O1(含义高职仪表-学号-命题编号其中:命题M,考题K2考核模式及分值:1上电时状态(20分)2控制状态1(30分)3控制状态2(30分)4状态返回(20分)一、延时显示与移位M01.试编程序,使8个发光管和8个数码管全部按0.5秒间隔闪光。MO1.A试编程序,使单个发光管亮按0.2秒时间间隔向左循环移动。M02.试编程序,使发光管按0.5秒向左逐位循环全部点亮。M02.A试编程序,使单个数码管显示台号尾数并按0.3杪时间间隔向左循环移动.教学提示:1 .I/O口设
4、置提示:编写程序中必须先说明0的状态:如下图每个口有三个地址。2 .闪光提示:使数码管闪光有3种方法D.亮灭分别延时2)使用取反语句3)使用异或语句3 .内部自延时提示:延时函数(微杪级):文件头:#inc1.udede1.ay,h*格式:de1.ay_us(1.65535)deIayjns(65535)例:de1.ayUS(100)/100微妙de1.ayms(100)100毫秒4 .发光管移位提示:chari;for(i=0;ii:de1.ay_ns500);5 .数码管移位提示:chari:for(i=0:ii);de1.ay_ms(500);二、健控分支M03.试编程序,上电后,显示台
5、标尾数,发光管全灭。按左1键后使八个发光管向左逐个全部点亮,循环进行。按右1犍后使八个发光管向右逐个全部点亮,循环进行。(05秒)。M04.试编程序,上电后,03秒闪光显示台号尾数,按右1键发光管由中间向两边依次全亮,按右2键由两边向中间全亮。按左I键后返回显示分号尾数。教学提示:按键控制的几种模式1 .程序等待按后通过:whi1.e(PIND.O=D;2 .按住时等待或执行1定程序;whiIe(PIND.O=O):3,按一使后执行覆定程序时if(PIND.0=0)whi1.e(1.)()程序参考框架:if(PIND.7=0)Whi1.e(PIND.0=1)(左移if(P1.ND.0=0)Wh
6、iIe(P1.ND.7=1)佑移三、自动计数留)5.试编程序,使右1数码管间隔03秒显示0、F不断循环。M06.试编程序,使两头数码管0、9不断循环中小于5时发光管低四位亮,等于5时全亮,大于5时高四位亮.(以上间隔0.5S)教学提示:1 .解题思路建个全局型单维数组变员并绐出0F对应的数码管代码,然后将数组值通过循环语句按顺序延时赋给PB口。2 .共阴极数码管字段显示原理HPB.7PB.6PB.5PB.4PB.3PB.2PB.1PB.0O11O11O1(6D)3 .数码管代码表1.EDJB1.示的字段码显示字符共阴极码共阳极码03FHCOH106HF9H25BHA4H34FHBOH466H9
7、9H56DH92H67DH82H707HF8H87FH80H显示字符共阴极码共阳极码96FH90HA77H88Hb7CH83HC39HC6Hd5EHA1.HE79H86HF71H8EHP73H8CH熄灭OOHFFH四、健控计数M07.试编程序,上电后使八个发光管全灭,每按右1键一次使八个发光管以亮1灭零方式记-个数。M08.试编程序,每按一次左1键数码管加一个数,数码管到9时归0继续不断循环计数。教学提示:1 .使控抖动波形图,OI-T1.-2mS2mS2 .总计数消抖程序1if(PIND.O=O)等待键按下whi1.e(P1.M0=0)等待犍松开de1.ayms(2);前沿延时消抖/de1.
8、ay_ms(2);后沿延时消抖PORTC-:上介沿有效3 .帼计数消抖程序2(见教材)bitp1.;PI=PIND.0:if(PIND.O=OApi=1.)PORTC-;p1.=PIND.O:de1.ayJnS(20);五、嵬辑控制()由退辑图编程如果用拨动开关左1和右1二位代表逻辑输入A、B,发光管最高位左1位代表逻辑输出Y.试编程序实现下述逻辑关系:留)9.与非逻辑&3-YBI_M09A.同或逻辑B-&O-教学提示:1.与或非逻辑图为例(使用PA输入和PC口输出)IA-Y1)文件头中定义三个位变量:bitA,B,Y2)输入变量赋值:=PIN.O;B=PINA.7;3)变量逻辑运算:Y=!(
9、B);4)输出变量送出赋值:PORTC.7=Y;(二)由嵬辑命题编程如果用拨动开关左1、左2、左3代表逻辑输入A、B、C,发光管左1、左2、左3位指示其状态,用数码管1和。指示输出状态试编程序实现下述逻辑关系:M10.模拟少数服从多数表决器(三取二)。M1.OA.模拟举重电子表决器(加权三取二).说明:三个举重战判:一个主裁判两个副裁判,主裁具有否决权,即当主裁不同意时则此举无效。只有主裁再加上至少一个副裁同点:则此举有效。M1.oB.模拟电源负荷智能分配(三对二变量)。如果用拨动开关左1、左2、左3代表逻辑输入A、B、C,发光管左1、左2、左3位指示其状态,用数码管左I和右1位亮灭指示输出Y
10、A、YB状态状编程序实现下述逻辑关系:如下图有3个用电户:A1.、B1.、C2,其中A与B用电量相同,C2则是2倍A1.的用电量。这些用电户分别由2台发电机Y1.、Y3供电,发电机Y1.的最大功率等于B1.的功率消耗,发电机Y3的最大功率是Y1.的3倍。试用拨动开关分别代表A1.、B1.、C2用电户,用发光管代表发电机YhY3运行状态“编写控制程序,能根据各用电户的启动与关闭情况,以最节约电能的方式自动启停发电机。*-11S)IOMW发电机Y330MW发电机ABCY00000010010001111000101111011111000111io000100(111Y=AB+AC+BC教学提示I
11、1 .解逻辑命题步事D按命题定义变量并建其值表:2)由真值表直接列逻辑式并简化逻辑式;或由真值表建卡诺图由卡诺图列简化逻辑式:3)根据逻辑式编写程序:2 .M10.解题要点按命题定义变量、建总值表、化筒如以下图:Y=ABC+ABC+ABC+ABC其中3+A)=1.公式化简:y=ab+ac+bc或用卡诺图化简:3 MK)B.解题要点按命题定义变量、建真值表、公式化荷如以卜图:Y3=C2+AiBiM1.OC水箱水位自动显示及控制如果用拨动开美右1、右2、右3代表水位低中高检测开关A、B、C,发光管右1、右2、右3则指示开关状态.数码管显示0-1-2-3分别代表水位指示,数码管显示E则代表故障,如下
12、图,试编程序实现下述功能:无水时数码管显示0,且发光管左1位0.4秒闪光报警。水位漫过A数码管显示1,水位漫过B数码管显示2.水位漫过C数码管显示3,且发光管左2位0.4秒闪光报警。否则数码管显示E表示线路故障且发光管左3位0.4秒闪光报警.教学提示1.连接方法:在实习板上,PB口接口与数码管字段1.EDDI接口用扁平线相连,PD接口与数碣管字位1.EDW1.接口用扁平线相连。PCr1.与开关插口连接,P八门红灯插门连接。2.水箱控制流程图参考:六、动态显示与转换MI1.试编程序,使数码管显示:(M1.1.A:08-00-00).M12.试编程序,使数码管循环高速显示:“00009999当数字
13、小于2006时发光管低四位亮否则发光管高四位亮。M12A.试编程序,使数码管循环显示OOOO-FFFF,方式为“-数字-,当数字小于8000时发光管单灯循环右移否则循环左移.教学提示:显示原理及弁考程序1 .要显示的数据:PORTD.3-P0RTD.0(低电平有效2 .显示数据过程:PORTB=Iedbuff0/=tabIe(4)=0x66100000010OoO(三)OO1.PORTD=(10)=11111110PORTB=Iedbuff(1Z=tabIe(3)=0x4FPoRTB=0X4F+J11j1.-3Ii口I6口1PORTD=11111110110000011OOOOOOI0PORTB=Iedbuff2/=tabIe(2)=0x5B120000012OoOOO100P0RTD=(K2)=11111011PORTB=Iedbuff3/=tabIe(I)=0x06PORTB0X06PORTD=1111011113OOOO(XX)13(HMX)I(MH)P0RT(13)=11110111PORTD=-(11)=1111111013 .显示子程序voiddisp1.ay(void)文件名(unsignedchari:for(i=0;i8;i+)(PORTB=Ied