1.05k likes | 1.27k Views
AVR 单片机应用实习 电子教案. 实习准备:微机软硬件检查. 硬件配置是否齐全与完好: 主机、显示器、键盘、鼠标 单片机实训板、微机电源、扁馈线 软件配置是否齐全与完好: 仿真软件、下载软件、 avr 目录 清除垃圾文件(游戏及其它文本文件). 机位规范性检查与认定. 硬件规范性: 1 完整性与完好性 主机、显示器、键盘、鼠标 实训板、电源、通 信线、终端桌椅。 2 布局摆放位置 软件规范性:显示器界面统一,硬盘 D/E/F 文件应 全部清除;只有 zdh0501/ 文件夹。 3 各设备卫生整洁(含抽屉内) 每天早晨对照表格进行检查记录.
E N D
AVR单片机应用实习 电子教案
实习准备:微机软硬件检查 硬件配置是否齐全与完好: 主机、显示器、键盘、鼠标 单片机实训板、微机电源、扁馈线 软件配置是否齐全与完好: 仿真软件、下载软件、avr目录 清除垃圾文件(游戏及其它文本文件)
机位规范性检查与认定 硬件规范性: 1 完整性与完好性 主机、显示器、键盘、鼠标 实训板、电源、通信线、终端桌椅。 2 布局摆放位置 软件规范性:显示器界面统一,硬盘D/E/F文件应 全部清除;只有zdh0501/文件夹。 3 各设备卫生整洁(含抽屉内) 每天早晨对照表格进行检查记录
常用软件的安装与使用 • AVRC编译器安装与设置(实际操作)。 • SLISP下载软件安装与设置(实际操作)。 • AVRC编译器使用(用代码生成器)。 • SLISP下载软件使用(实际操作)。
AVR C 编译软件使用步骤: 1)先用编译器的代码生成向导建立新的工程文件框架(lx1.prj) 2)进行编译界面文件字形、字号、颜色设置 3)为便于解读可根据程序内容精简源文件 (只保留口地址的默认设置) 4)进行工程文件的编译可形成调试码(默认)或目标码 5)成功后全选转成文本文件进行备份(最好中文标题) 6)根据命题编辑文件框架 7)对编辑好的文件再次进行编译。(操作练习)
实习讲课:一、实训电路板简介 1. 实训电路板外观:见图1 2. 电路原理框图:见图2 3. M16引脚连接图:见图3 4. 系统接线图:见图4
二、电路板测试 1.运行并设置C软件 2.编制测试程序 1)用PC口访问LED:使八个LED指示全亮。 方法:程序初始化 DDRC=0XFF; //设置PC口为输出 PORTC =0X00;//使PC口锁存器为低电平。 while (1) //主程序 步骤:1硬件及连线图,2软件编辑、编译, 3调试-下载-运行后检查结果。
电路板测试续1 2) 用PA、PB口访问数码管,使数码管全亮(显示8.)。 方法:程序初始化 DDRA=0XFF;//设置PA口为输出 PORTA =0XFF;//使PA口锁存器为高电平。 DDRB=0XFF;//设置PB口为输出 PORTB =0X00;//使PB口锁存器为低电平。 while (1)//主程序 步骤:1硬件及连线图,2软件编辑、编译, 3调试-下载-运行后检查结果。
电路板测试续2 3) 用PA、PC口访问点阵管:使点阵管全亮,部分亮及不同数字。 方法:程序初始化 DDRA=0XFF;//设置PA口为输出 DDRC=0XFF;//设置PC口为输出 PORTA =0XFF;//使PA口锁存器为高电平。 PORTC =0XFF;//使PC口锁存器为高电平。 while (1)//主程序 步骤:1硬件及连线,2软件编辑、编译, 3调试-下载-运行后检查结果。
电路板测试续3 4) 用PD口访问按钮:分别检查8个按钮好坏 即:分别按动8个按钮使相应的指示灯亮 a.运行并设置C软件;(循环程序) b.编制测试程序 方法:DDRD=0X00;//设置PD口为输入图 PORTD=0XFF;//使PD口锁存器为高电平(上拉)。图 DDRC=0XFF;//设置PC口为输出 PORTC =0Xff;//使PC口锁存器为高电平(灯灭)。 while (1)//主程序 { PORTC=PIND;} //检测D口,将D口状态送到C口。 编辑-编译-调试-下载-运行后检查结果。
电路板综合测试 作业:编写整合程序。 要求: 1)上电后数码管、发光管均灭。 2)当8个拨动开关“ON”后其对应的数码管、发光管亮。(或当按动按键时其对应的数码管、发光管亮。)
接D口 PD2(INT0) PD3(INT1)
三、知识点命题练习 • 第一阶段主要内容: • 1延时显示与移位(延时及<<符号) • 2键控分支(按键控制) • 3自动计数(数组代码) • 4键控计数(消抖程序) • 5逻辑控制 (列逻辑式) • 6动态显示与转换(原理使用)
1延时显示与移位 M01.试编程序,使8个发光管和8个数码管全部按0.5秒间隔闪光。 M02.试编程序,使单个发光管亮按0.2秒时间间隔向左循环移动(单灯移)。 M03.试编程序,使发光管按0.5秒向左逐位循环全部点亮(流水灯)。 M04.试编程序,使单个数码管显示台号尾数并按0.3秒时间间隔向左循环移动。 (延时提示) (移位提示)
延时提示: 延时函数 (微秒级): 文件头: #include <delay.h> 格式: delay_us(1~65535) delay_ms(1~65535) 例:delay_us(100); //100微妙 delay_ms(100); //100毫秒
发光管移位提示: char i; for (i=0;i<=8;i++) { PORTC =0xFF>>i; delay_ms(500);}
数码管移位提示: char i; for (i=0;i<8;i++) {PORTD = ~(0X80>>i); delay_ms(500);}
应用题: Y01:试设计一交通灯:发光管最左边三 个灯为绿黄红。上电后,绿灯亮7秒,然后绿灯灭,黄灯闪3秒,红灯亮7秒,绿灯亮,重复上述过程。 Y02:试设计一节日彩灯:上电后,红灯单灯0.2秒左右循环一次;然后,绿灯0.2秒左右循环一次;红绿灯左右流水。重复上述过程。
2键控分支 提示1 M05.试编程序,上电后,显示台标尾数,发光管全灭。按左1键后使八个发光管向左逐个全部点亮,循环进行。按右1键后使八个发光管向右逐个全部点亮,循环进行。(0.5秒)。 M06.试编程序,上电后, 0.3秒闪光显示台号尾数,按右1键发光管由中间向 两边依次全亮,按右2键由两边向中间全亮。按左1键后返回显示台号尾数。(提示2:建两个数组,然后用for循环程序调用。)
按键控制提示1: 1.按下时执行一次预定程序:if(PIND.0==0) { …程序… } 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) {右移}
3自动计数 M07.试编程序,使右1数码管间隔0.3秒 显示0~F不断循环。 M08.试编程序,使两头数码管0~9不断循环中小于5时发光管低四位亮,等于5时全亮,大于5时高四位亮。(以上间隔0.5S) 思路:建一个全局型单维数组变量table[]并给出0 ~ F对应的数码管代码,然后将数组值通过循环语句按顺序延时赋给P口。
4键控计数 M09.试编程序,上电后使八个发光管全灭,每按右1键一次使八个发光管以亮1灭零方式记一个数。 M10.试编程序,每按一次左1键数码管加一个数,数码管到9后归0继续不断循环计数。 说明
键控参考图: 返回
键控计数程序1: if (PIND.0==0) //等待键按下 { while (PIND.0==0) //等待键松开 delay_ms(2); //前沿延时消抖 // delay_ms(2);//后沿延时消抖 PORTC--; //上升沿有效 }
键控计数程序2(见教材) bit p1; p1=PIND.0; if(PIND.0==0&p1==1) PORTC--; p1=PIND.0; delay_ms(20);
5逻辑控制 提示 如果用拨动开关左1和右1二位代表逻辑输入A、B,发光管最高位左1位代表逻辑输出Y,试编程序实现下述逻辑关系: 11.与非逻辑。 12.异或逻辑。 A & Y B A =1 Y B
逻辑控制2 提示 如果用拨码开关左1、左2、左3代表逻辑输入A、B、C,发光管左1、左2、左3位指示其状态,用数码管1和0指示输出状态试编程序实现下述逻辑关系: 13模拟少数服从多数表决器(三取二)。 14模拟举重电子表决器(加权三取二)。 说明:三个举重裁判:一个主裁判两个副裁判 ; 1):主裁具有否决权,即当主裁不同意时则此举无效。 2):只有主裁再加上至少一个副裁同意则此举有效。
解逻辑命题步骤: 1.按命题定义变量并建真值表; 2.由真值表直接列逻辑式并简化逻辑式;或由真值表建卡诺图由卡诺图列简化逻辑式; 3.根据逻辑式编写程序;
应用题: 课外作业 Y03:水箱水位监测(M10B) Y04:电力负荷逻辑控制(M10C)
模拟电源负荷智能分配(三对二变量)。 如果用拨码开关左1、左2、左3代表逻辑输入A、B、C,发光管最高位(左1位)和最低位(右1位)分别代表逻辑输出YA、YB,试编程序实现下述逻辑关系:
38题文字说明 如图所示有3个用电户:A1、B1、C 2,其中A与B用电量相同,C2则是2倍A1的用电量。这些用电户分别由2台发电机Y1、Y3供电,发电机Y1的最大功率等于B1的功率消耗,发电机Y3的最大功率是Y1的3倍。试用拨码开关分别代表A1、B1、C2用电户,用发光管代表发电机Y1、Y3运行状态。编写控制程序,能根据各用电户的启动与关闭情况,以最节约电能的方式自动启停发电机。
命题38图示 Y1 10MW用户 ~ A1 10MW发电机 10MW用户 B1 Y3 ~ 20MW用户 30MW发电机 C2
5动态显示与转换 M15.试编程序,使数码管显示: “12345678”。按右2键则显示07-05-30。 M16.试编程序,使数码管循环高速只显示:“000~999”当数字小于500时发光管低四位亮否则发光管高四位亮。 M17.试编程序,使数码管循环显示000~FFF,方式为“--P数字--”,当数字小于800时发光管单灯循环右移否则循环左移。 显示提示 转换提示
显示原理 返回 PORTA.7-PRTDA.0 (高电平有效) + 1 2 3 4 - 1 1 1 0 PORTB.3-PORTB.0 (低电平有效)
- 1 1 1 0 显示原理1 PORTA=ledbuff[0]//=table(4)=0x66 PORTA= 0X66 + 4 4 4 4 - PORTB=11111110 00000001<<0 1<<0 00000001 PORTB= ~(1<<0)=11111110
显示原理2 PORTA=ledbuff[1]//=table(3)=0x4F PORTB= 0X4F + 3 3 3 3 - 1 1 0 1 PORTB=11111110 1<<1 00000001<<1 00000010 PORTB= ~(1<<1)=111111101
1 0 1 1 显示原理3 PORTA=ledbuff[2]//=table(2)=0x5B PORTB= 0X5B + 2 2 2 2 - PORTB=10111111 00000001<<2 1<<2 00000100 PORTB= ~(1<<2)=11111011 返回
0 1 1 1 PORTA=ledbuff[3]//=table(1)=0x06 PORTB= 0X06 + 1 1 1 1 - PORTB=11110111 1<<3 00000001<<3 00001000 PORTB= ~(1<<3)=11110111
显示原理 返回 ledbuff[3] ledbuff[1] ledbuff[2] ledbuff[0] PORTA=ledbuff[i]; (高电平有效) 1 2 3 4 PORTB=~(1<<i); (低电平有效)