您好,欢迎访问三七文档
AVR实习践教学指导书第1页(共105页)AVR单片机实习教学指导书保定电力职业技术学院动力工程系热自教研室2007年4月18日AVR实习践教学指导书第2页(共105页)目录一自延时与数据移位(M01-M02)二键控分支(M03-M04)三自动计数(M05-M06)四键控计数(M07-M08)五、逻辑控制(M09-M10)(一)由逻辑图编程(二)由逻辑命题编程六动态显示与数据转换(M11-M13)七外中断使用(M14-M15)八定时/计数器使用(M16-M19)(一)定时器设置:(二)定时中断控制九定时/计数器应用(M20-M20B)(一)实时钟显示(二)高频测量(三)低频测量十脉宽调制PWM(M21-M22)十一显示驱动7219集成块使用(M23-M27)(一)数码显示:8位8段数码管巡回显示多参数(二)点阵显示:8×8点阵字符汉字显示控制十二.模数转换A/D功能的使用(M28-M29)十三.液晶显示器的使用(M30-M33)十四4×4矩阵键盘的使用(M34-M37)十五异步通信(M38)十六模拟比较器(M39)十七常数设置(M40)十八教学演示综合测试程序(M41-M42)十九AVR毕业论文参考课题二十AVR毕业论文参考框架附图1:实习系统连接图附图2:AVR芯片引脚图附图3:实习板电路原理图附录1.自定义文件头应用说明。附录2:CVAVR编译器简介:一、标示符二、数据类型三、关键字四、常用内部函数.附录3:实习命题参考程序:一、自定义文件头程序二、命题程序(M1-M40)三、演示程序AVR实习践教学指导书第3页(共105页)实践教学说明:1命题路径及文件名:如D:\GY1\M0101(含义高职仪表-学号-命题编号)其中:命题M,考题K2考核模式及分值:1上电时状态(20分)2控制状态1(30分)3控制状态2(30分)4状态返回(20分)一、延时显示与移位M01.试编程序,使8个发光管和8个数码管全部按0.5秒间隔闪光。M01A.试编程序,使单个发光管亮按0.2秒时间间隔向左循环移动。M02.试编程序,使发光管按0.5秒向左逐位循环全部点亮。M02.A试编程序,使单个数码管显示台号尾数并按0.3秒时间间隔向左循环移动。教学提示:1.I/O口设置提示:编写程序中必须先说明I/O口的状态:如图所示每个口有三个口地址。2.闪光提示:使数码管闪光有3种方法1).亮灭分别延时2)使用取反语句3)使用异或语句3.内部自延时提示:延时函数(微秒级):文件头:#includedelay.h格式:delay_us(1~65535)delay_ms(1~65535)例:delay_us(100)//100微妙AVR实习践教学指导书第4页(共105页)delay_ms(100)//100毫秒4.发光管移位提示:chari;for(i=0;i=8;i++){PORTC=0xFFi;delay_ms(500);}5.数码管移位提示:chari;for(i=0;i8;i++){PORTD=~(0X80i);delay_ms(500);}二、键控分支M03.试编程序,上电后,显示台标尾数,发光管全灭。按左1键后使八个发光管向左逐个全部点亮,循环进行。按右1键后使八个发光管向右逐个全部点亮,循环进行。(0.5秒)。M04.试编程序,上电后,0.3秒闪光显示台号尾数,按右1键发光管由中间向两边依次全亮,按右2键由两边向中间全亮。按左1键后返回显示台号尾数。教学提示:按键控制的几种模式1.程序等待按后通过:while(PIND.0==1);2.按住时等待或执行预定程序:while(PIND.0==0){…};3.按一键后执行预定程序时if(PIND.0==0)while(1){…}程序参考框架:if(PIND.7==0)while(PIND.0==1){左移}if(PIND.0==0)while(PIND.7==1){右移}三、自动计数M05.试编程序,使右1数码管间隔03秒显示0~F不断循环。M06.试编程序,使两头数码管0~9不断循环中小于5时发光管低四位亮,等于5时全亮,大于5时高四位亮。(以上间隔0.5S)教学提示:1.解题思路建一个全局型单维数组变量并给出0~F对应的数码管代码,然后将数组值通过循环语句按顺序延时赋给PB口。AVR实习践教学指导书第5页(共105页)2.共阴极数码管字段显示原理3.数码管代码表四、键控计数M07.试编程序,上电后使八个发光管全灭,每按右1键一次使八个发光管以亮1灭零方式记一个数。M08.试编程序,每按一次左1键数码管加一个数,数码管到9时归0继续不断循环计数。AVR实习践教学指导书第6页(共105页)教学提示:1.键控抖动波形图:2.键控计数消抖程序1if(PIND.0==0)//等待键按下{while(PIND.0==0)//等待键松开delay_ms(2);//前沿延时消抖//delay_ms(2);//后沿延时消抖PORTC--;}//上升沿有效3.键控计数消抖程序2(见教材)bitp1;p1=PIND.0;if(PIND.0==0&&p1==1)PORTC--;p1=PIND.0;delay_ms(20);五、逻辑控制(一)由逻辑图编程如果用拨动开关左1和右1二位代表逻辑输入A、B,发光管最高位左1位代表逻辑输出Y,试编程序实现下述逻辑关系:M09.与非逻辑M09A.同或逻辑教学提示:1.与或非逻辑图为例(使用PA口输入和PC口输出)AVR实习践教学指导书第7页(共105页)1)文件头中定义三个位变量:bitA,B,Y2)输入变量赋值:A=PINA.0;B=PINA.7;3)变量逻辑运算:Y=!(A||B);4)输出变量送出赋值:PORTC.7=Y;(二)由逻辑命题编程如果用拨动开关左1、左2、左3代表逻辑输入A、B、C,发光管左1、左2、左3位指示其状态,用数码管1和0指示输出状态试编程序实现下述逻辑关系:M10.模拟少数服从多数表决器(三取二)。M10A.模拟举重电子表决器(加权三取二)。说明:三个举重裁判:一个主裁判两个副裁判,主裁具有否决权,即当主裁不同意时则此举无效。只有主裁再加上至少一个副裁同意则此举有效。M10B.模拟电源负荷智能分配(三对二变量)。如果用拨动开关左1、左2、左3代表逻辑输入A、B、C,发光管左1、左2、左3位指示其状态,用数码管左1和右1位亮灭指示输出YA、YB状态试编程序实现下述逻辑关系:如图所示有3个用电户:A1、B1、C2,其中A与B用电量相同,C2则是2倍A1的用电量。这些用电户分别由2台发电机Y1、Y3供电,发电机Y1的最大功率等于B1的功率消耗,发电机Y3的最大功率是Y1的3倍。试用拨动开关分别代表A1、B1、C2用电户,用发光管代表发电机Y1、Y3运行状态。编写控制程序,能根据各用电户的启动与关闭情况,以最节约电能的方式自动启停发电机。教学提示:1.解逻辑命题步骤1)按命题定义变量并建真值表;2)由真值表直接列逻辑式并简化逻辑式;或由真值表建卡诺图由卡诺图列简化逻辑式;3)根据逻辑式编写程序;2.M10.解题要点按命题定义变量、建真值表、化简如下图:AVR实习践教学指导书第8页(共105页)3M10B.解题要点按命题定义变量、建真值表、公式化简如下图:M10C水箱水位自动显示及控制如果用拨动开关右1、右2、右3代表水位低中高检测开关A、B、C,发光管右1、右2、右3则指示开关状态。数码管显示0-1-2-3分别代表水位指示,数码管显示E则代表故障,如图所示,试编程序实现下述功能:无水时数码管显示0,且发光管左1位0.4秒闪光报警。水位漫过A数码管显示1,水位漫过B数码管显示2,水位漫过C数码管显示3,且发光管左2位0.4秒闪光报警。否则数码管显示E表示线路故障且发光管左3位0.4秒闪光报警。教学提示AVR实习践教学指导书第9页(共105页)1.连接方法:在实习板上,PB口接口与数码管字段LEDD1接口用扁平线相连,PD接口与数码管字位LEDW1接口用扁平线相连。PC口与开关插口连接,PA口红灯插口连接。2.水箱控制流程图参考:六、动态显示与转换M11.试编程序,使数码管显示:“12345678”。(M11A:08-00-00)。M12.试编程序,使数码管循环高速显示:“0000~9999”当数字小于2006时发光管低四位亮否则发光管高四位亮。M12A.试编程序,使数码管循环显示0000~FFFF,方式为“--数字--”,当数字小于8000时发光管单灯循环右移否则循环左移。教学提示:显示原理及参考程序1.要显示的数据:AVR实习践教学指导书第10页(共105页)2.显示数据过程:3.显示子程序voiddisplay(void)//文件名{unsignedchari;for(i=0;i8;i++){PORTB=ledbuff[i];//将缓冲区数据送PORTB口PORTD=~(1i);//开始显示delay_ms(1);//每一位显示保持一定时间}}4.BCD转换程序ledbuff[0]=tabel[XX%10];ledbuff[1]=tabel[XX/10%10];ledbuff[2]=tabel[XX/100%10];ledbuff[3]=tabel[XX/1000%10];语句1例:XX=1234:除10取余等于4。语句2例:XX=1234:除10取商等于123.4,再除10取余等于3。其它类推。5.HEX转换程序ledbuff[0]=tabel[XX%16];AVR实习践教学指导书第11页(共105页)ledbuff[1]=tabel[XX/16%16];ledbuff[2]=tabel[XX/256%16];edbuff[3]=tabel[XX/256/16%16];M13.试编程序,使点阵管动态显示“甲”字。M13A.试编程序,使点阵管动态间隔约1秒轮流显示“电”、“力”两字。…..教学提示:点阵动态显示字位与字段排列如下:如甲的代码。七、外中断使用M14.试编程序,上电后,发光管不显示,按住中断0键手离开后发光管低4位亮。按住中断1键手离开后发光管高4位亮。M15.试编程序,用外中断0和1分别控制发光管左右循环依次全部点亮的方向,中断0右循环,中断1左循环。教学提示:1.中断原理AVR实习践教学指导书第12页(共105页)2.中断消抖程序1delay_ms(20);if(PIND.2==1)PORTC=0X0F;GIFR|=0X40;3.中断消抖程序2while(PIND.2==0)delay_ms(20);delay_ms(20);PORTC=0X0F;八、定时/计数器使用(一)定时器设置:M16.试编程序,用定时/计数器0查询方式使8个发光管间隔0.5秒闪亮。M17.用定时/计数器0中断方式实现数码管低4位显示-00-到-60-秒循环计时。M17A.同上题,分别用定时/计数器0,64分频,1ms时基(t),中断方式实现数码管低4位显示-00-到-60-秒循环计时教学提示1.T0中断原理图:2.T0查询法初始化PORTC=0xFF;DDRC=0xFF;TCCR0=0x02;//接内部RC震荡器,8分频。TCNT0=56;//计数器初装X=FF-t/T//注:T为分频后周期,t为计数器溢出周期。3.T0查询法编程for(i=250;i0;i--)//查询次数统计{while(!(TIFR&0x01));//查询是否溢出AVR实习践教学指导书第13页(共105页)TIFR|=0x01;//清溢出位TCNT0=56;//重新置数}4.T0中断法服务程序interrupt[TIM0_OVF]T0_INT()//中断函数{TCNT0=56;//预置数secdd++;//200usIf(secdd==50)secdd=0;secd++;//10msIf(secd==100)secd=0;sec++;//1sIf(sec==60)sec=0;min++;//1m}(二)定时中断控制用定时器0中断方式实现:M18.试编程序,使数码管
本文标题:CVAVR教程
链接地址:https://www.777doc.com/doc-24014 .html