项目8单片机应用技能实训C语言教案Word格式文档下载.docx
- 文档编号:17328878
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:27
- 大小:334.25KB
项目8单片机应用技能实训C语言教案Word格式文档下载.docx
《项目8单片机应用技能实训C语言教案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《项目8单片机应用技能实训C语言教案Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
有什么功能?
本项目的终极目标是制作一个单片机控制的能显示倒计时时间的交通灯控制电路。
提问导思
导入
在项目6中用数码管显示时间,为了不造成资源浪费,我们利用串行口方式0进行输出口扩展。
但利用串行口方式0扩展并行输出口,在使用上有一定局限性,所以,我们在进行项目制作之前,学习MCS-51单片机简单I/O口的扩展方法。
启发学习积极性
讲授新课
一、并行I/O端口的扩展
由于简单I/O端口扩展方法简单实用,下面对该方法加以介绍。
1、简单I/O端口扩展芯片简介
通常采用三态缓冲器(例如74LS244、74LS541)来扩展并行输入,用8D锁存器(例如74LS373、74HC573)来扩展并行输出。
图8-2是74LS541和74HC573的逻辑符号图。
74LS541是三态缓冲器,74HC573是8D锁存器,采用20脚双列直插封装。
图8-274LS54174HC573逻辑符号图
2、简单I/O端口扩展举例
例8.1利用两个8D锁存器74HC573扩展两个8位并行输出口。
单片机扩展两个8位并行输出端口的硬件电路如图10-3所示,在预处理命令中将p20定义为P2.0,将p21定义为P2.1。
当需要将A中数据从U2输出时,执行如下指令:
p20=0;
//U2锁存数据
p21=0;
//U3锁存数据
P0=ACC;
//将ACC数据送给P0
p20=1;
//数据从U2输出
当需要将A中数据从U3输出时,执行如下指令:
p21=1;
//数据从U3输出
图8-3扩展并行输出
采用本例方法,利用P0、P2最多可扩展8个8位并行输出端口。
例8.2采用74LS541和74LS373为单片机扩展8位并行输入和8位并行输出端口。
扩展输入输出端口的硬件电路如图8-4所示,将74LS541和74LS373作为单片机的外部数据存贮器单元来进行操作。
由于74LS541和74LS373通过逻辑电路只与16位地址线中的P2.0相连,都是在P2.0为0时被选通的,所以二者的口地址都为FEFFH。
图8-4
当需要输入和输出数据时可通过如下程序完成。
charxdata*p1=0xfeff;
//定义外部数据地址
unsignedchara=0x02;
a=*p1;
//将74LS541对应端口数据输入
*p1=a;
//输出数据给74LS373对应端口
二、C51中插入与汇编语言程序
1、在C51中直接插入汇编语言程序方法
当需要在C51源程序中插入汇编语言程序时,可使用#pragmaasm和#pragmaendasm语句包含插入的汇编语言程序。
格式如下:
#pragmaasm
汇编语言程序
#pragmaendasm
例如编写程序从P2.7输出方波,要求在C51程序中直接插入汇编语言程序。
程序如下:
#include<
reg51.h>
sbitp27=P2^7;
voidmain()
{
while
(1)
P27=!
p27;
#pragmaasm
MOVR1,#250
D1:
DJNZR1,D1
#pragmaendasm
}
图8-5激活SRC_CONTROL
2、使用keilc进行编译注意事项
(1)将SRC_CONTROL激活。
激活方法是:
在Project窗口中包含汇编语言程序的C文件上右击鼠标,从弹出的快捷菜单中选择Optionsforfile命令,双击右边的GenerateAssemblerSRCFile和AssembleSRCFile,使复选框由无效变为有效状态。
如图8-5所示。
(2)根据选择的编译模式,把相应的库文件(如Small模式,库文件为\keil\C51\LIB\C51S.LIB)加入的工程中。
用多媒体展示图8-2进行介绍。
重点介绍引脚使用。
用多媒体展示图8-3,介绍连接方法,重点介绍编程方法。
用多媒体展示图8-4,介绍连接方法。
重点介绍编程方法。
课堂小结
1、简单I/O端口扩展方法及芯片介绍。
2、简单I/O端口扩展的接线及编程。
3、C51中插入与汇编语言程序。
课后作业
自我测评1题、2题。
任务2数字显示交通灯控制电路硬件、软件设计
数字显示交通灯控制电路硬件、软件设计
课件、单片机应用制作成品
1、掌握简单I/O端口扩展的应用。
2、掌握数字显示交通灯控制电路的整体构成。
3、理解应用程序的编程思路。
1、应用I/O扩展完成数字显示交通灯控制电路设计。
2、应用程序的编程思路。
1、应用程序的编写思路。
1、复习提问简单I/O端口扩展方法,讨论交通灯控制特点。
2、介绍项目任务要求。
3、根据项目任务要求引导设计硬件电路。
4、应用程序流程图绘制。
5、应用程序设计。
1、检查学生出勤情况并做好记录。
2、调整学生的注意力,为上课作准备。
1、I/O端口的扩展有哪几种方法?
2、数码管的动态显示方法?
3、讨论交通灯控制的功能特点?
在学习了简单I/O口扩展方法后,我们利用所学知识进行项目硬件电路设计。
项目要求如下:
(1)东西、南北各用两位数码管显示相应路口的倒计时时间。
(2)东西、南北各用三个灯(红、黄、绿)来指挥交通。
(3)装一个紧急事件按键(或开关),当该按键闭合时,进入紧急事件状态,使各方向均亮红灯。
一、项目硬件电路设计
1、电路构成方案设计
根据项目要求,本项目硬件由按键电路(紧急事件)、单片机最小应用系统、扩展输出电路、数码管显示电路和交通灯电路(发光二极管代替)构成。
扩展输出用芯片74HC73来完成。
2、电路设计
根据电路构成方案进行设计,关键是扩展输出及显示电路的设计。
硬件原理图如图8-7所示。
图8-7交通灯控制电路原理图
3、元件选择
(1)复习晶振电路元件及复位电路元件的选择。
(2)复习发光二极管电路元件选择。
(3)数码管及限流电阻的选择。
(4)扩展芯片选择:
74HC573,上拉电阻R2~R9:
10K。
二、应用程序编写
1、应用程序流程图绘制
根据交通灯的实际转换规律,每隔一定时间要进行倒计时时间及灯控数据的变换,由4组数据周期交替变换,其变化规律如表8-1所示。
当紧急事件按键按下时,东西南北均亮红灯。
表8-1交通灯控制信号变化规律表
数组
灯控信号数据
变换数据时间间隔
东西倒计时时间
南北倒计时时间
第一组
东西绿灯、南北红灯
25秒
30秒
第二组
东西黄灯、南北红灯
5秒
第三组
东西红灯、南北绿灯
第四组
东西红灯、南北黄灯
该程序设计可考虑由倒计时时间显示函数、外部中断0的中断函数、定时器T0的中断函数、交通灯状态查询与转换控制函数、主函数等几部分组成。
关键是交通灯状态查询与转换控制函数,其作用是:
不断的查询交通灯的状态,当倒计时时间为0时,进行交通灯状态的转换,该函数的参考流程图如图8-8所示。
图8-8
在该流程图中,交通灯状态用变量dzt值来表示。
定义如下:
2、程序设计
由于程序比较大,课上只进行关键程序的编写。
#include<
intrins.h>
//含_nop_()函数
#defineEWGNSR0//东西绿南北红
#defineEWYNSR1//东西黄南北红
#defineEWRNSG2//东西红南北绿
#defineEWRNSY3//东西红南北黄
#defineLINIT4//初始化
#defineJJSJ5//紧急事件
sbitNS_R=P2^7;
//南北红
sbitNS_G=P2^5;
//南北绿
sbitNS_Y=P2^6;
//南北黄
sbitEW_R=P2^4;
//东西红
sbitEW_G=P2^2;
//东西绿
sbitEW_Y=P2^3;
//东西黄
sbitU2_LE=P2^1;
//锁存
sbitU3_LE=P2^0;
//
sbitp10=P1^0;
unsignedchart0cs;
//1秒定时次数
unsignedcharNSsj;
//南北倒计时时间
unsignedcharEWsj;
//东西倒计时时间
unsignedchardzt;
//交通灯状态
unsignedcharcode_data[10]={0xc0,0xf9,0xa4,
0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//显示数字段码数组
voidLight(void);
//交通灯状态查询及转换控制子函数
voidDisplay(void);
//倒计时时间显示子函数
voiddelay(void);
//延时子函数
voidEmergency()interrupt0;
//外部中断0
/***以下是交通灯状态查询及转换控制子函数***/
voidLight(void)
if(dzt==EWGNSR)//东西绿南北红
{
if(EWsj==0)//东西25s时间到
EWsj=5;
//5s东西黄灯
NSsj=5;
dzt=EWYNSR;
//转换交通灯状态
NS_R=1;
//南北红亮
NS_G=0;
//南北绿灭
NS_Y=0;
//南北黄亮
EW_R=0;
//东西红灭
EW_G=0;
//东西绿灭
EW_Y=1;
//东西黄亮
}
elseif(dzt==EWYNSR)//东西黄南北红
if(EWsj==0)//东西5s时间到
dzt=EWRNSG;
//转换交通灯状态
EWsj=30;
NSsj=25;
NS_R=0;
NS_G=1;
NS_Y=0;
EW_R=1;
EW_G=0;
EW_Y=0;
elseif(dzt==EWRNSG)//东西红南北绿
if(NSsj==0)//南北25s时间到
dzt=EWRNSY;
NSsj=5;
EWsj=5;
NS_R=0;
NS_G=0;
NS_Y=1;
EW_Y=0;
elseif(dzt==EWRNSY)//东西红南北黄
if(NSsj==0)//南北5S时间到
dzt=EWGNSR;
NSsj=30;
EWsj=25;
NS_R=1;
EW_G=1;
elseif(dzt==LINIT)//初始化中
if(NSsj==0)//初始状态时间到
NSsj=30;
EWsj=25;
EW_R=0;
elseif(dzt==JJSJ)//紧急事件
NSsj=30;
EWsj=30;
EW_R=1;
/******以下是主函数***********/
voidmain(void)
IP=0x02;
TMOD=0x01;
TL0=(65536-50000)%256;
//50TH0=(65536-50000)/256;
TCON=0x51;
//启动T0计数,外中断0边沿触发。
IE=0x83;
//T0中断开,开总中断位。
U2_LE=0;
//使U2处数据锁存状态
U3_LE=0;
t0cs=10;
//置定时次数
dzt=LINIT;
//初始化状态
NSsj=5;
EWsj=5;
EW_Y=1;
while
(1)
Light();
//调用灯状态查询及转换控制函数Light()
Display();
//调用时间显示函数
3、讨论应用程序可否进行修改
老师和同学共同讨论电路构成方案。
由老师讲解,老师和同学共讨论设计,用多媒体展示图8-7。
通过提问或讨论方式由同学进行使用练习。
。
用多媒体展示图8-8。
1、数字显示交通灯控制电路设计。
2、C语言相关指令使用。
3、应用程序设计,关键是程序流程图设计。
1、自我测评6题。
2、编写交通灯应用程序之倒计时时间显示函数、外部中断0的中断函数、定时器T0的中断函数。
任务3数字显示交通灯控制电路的计算机仿真
数字显示交通灯控制电路的计算机仿真
老师演示、学生练习
机房、多媒体、相关课件
1、数字显示交通控制电路设计的计算机仿真验证。
2、提高工具软件的使用熟练程度。
3、熟练相关指令的使用及电路应用程序设计。
1、数字显示交通灯控制电路设计的计算机仿真验证。
2、程序编写与修改。
1、仿真电路运行出错时的修改调试。
1、proteus仿真电路绘制步骤复习。
2、用keil进行程序汇编步骤复习。
3、布置练习作业,学生进行练习并验证电路效果,老师进行指导。
1、数字显示交通灯控制电路都有哪些功能?
刚才同学们对数字显示交通灯控制电路的功能作了叙述,下面就根据上次课进行的电路设计及程序编写,用计算机仿真验证本次项目设计的正确性和运行效果。
一、使用proteus绘制仿真电路图的步骤
参照图8-6进行仿真电路绘制。
图8-6交通电路原理图
1、将所需元器件加入到对象选择器窗口
电阻、电容、电解电容、按键、晶振的英文符号分别是“RES”、“CAP”“CAP-ELEC”、“BUTTON”、“CRYSTAL”;
共阳红色两位数码管的英文符号是“7SEG-MPX2-CA”;
交通灯的英文符号是“TRAFFICLIGHTS”。
2、放置元器件至图形编辑窗口
3、移动对象和调整对象朝向
4、放置电源及接地符号
5、元器件之间的连线
6、编辑对象的属性设置元件参数
二、使用keil进行程序汇编的步骤
1、源文件的建立
输入完源程序后,保存该文件,注意必须加上扩展名.c。
2、建立工程文件
点击“Project--NewProject…”菜单,出现一个对话框,要求给将要建立的工程起一个名字,---。
3、工程的设置
在OutPut页面,勾选“CreatHexfile”选项。
4、编译、连接
在设置好工程后,即可进行编译、连接。
点击按钮
,对当前工程中的文件进行编译然后再连接,生成目标代码。
编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现。
三、布置作业学生练习,老师指导。
1、数字显示交通灯控制电路仿真验证。
2、紧急事件处理是否能不采用中断方式?
在电脑上仿真试试。
利用多媒体机房相关软件进行操作演示。
讲解个步骤的含义。
1、proteus的基本操作步骤。
2、keil的操作步骤。
3、数字显示交通灯控制电路的仿真验证。
技能反复训练与思考题3题、4题。
任务4数字显示交通灯控制电路的制作与调试
数字显示交通灯控制电路的制作与调试
学生动手操作、老师指导
万用表、电烙铁等
实训设备、电路制作成品
数字显示交通灯控制电路PCB板、相关电子元件采购、准备。
1、掌握项目相关元件的测试方法。
2、掌握使用相关工具进行电路制作的操作方法。
3、掌握使用仪表进行电路测试方法,提高仪表使用的熟练程度。
4、掌握数字显示交通灯控制电路构成及硬件、软件调试。
1、掌握相关元件测试方法。
2、掌握数字显示交通灯控制电路构成及硬件、软件调试。
1、电路调试中的故障查找。
1、强调实训室操作规程,注意操作安全。
2、数字显示交通灯控制电路各元件及使用工具简介。
3、学生进行元件测试。
4、分组进行硬件电路制作。
5、分组进行硬件电路调试。
6、根据硬件电路实际对应用程序进行修改并进行运行调试。
1、紧急事件按键可否不采用中断方式?
2、如何对数码管进行简单测试?
强调操作纪律及操作安全注意事项。
经过前面几个项目的制作,同学们已经有了制作经验,但本项目比较复杂,我们用PCB板进行硬件制作,同学们在2学时内完成项目制作调试并有满意的效果。
由学生分组展开实际操作。
建议每组2人,最好每组不超过3人。
项目制作
一、认识项目相关元件及元件测试
1、复习发光二极管、电阻等元件测试方法并进行操作练习。
2、复习4位一体数码管测试方法并进行测试。
二、按元件高低层次依次进行插装与焊接
1、电阻的插装与焊接。
2、电容、晶振的插装与焊接。
3、40脚及20脚IC插座插装与焊接。
4、按键及数据线插座的插装与焊接。
5、电解电容、发光二极管、数码管的插装与焊接。
三、电路连接
完成各元件的连接后,将电源线引出或将USB座焊接在电路板上,使用电脑上的5V电源。
往届学生制作成品如图所示。
四、硬件电路调试
1、通电之前,先用万用表检查各电源线与地线之间是否有短路现象,测试40脚及20脚IC插座各脚对地电阻值并记录,分析各电阻值是否合理。
若发现有不合理值,则要进行分析查找及处理。
点按控制按键,测量相应引脚电阻是否为0。
2、不插单片机芯片,接通电源,检查所有插座或器件的电源端是否有符合要求的电压值,如发现电压值偏离较多,应立即中断供电并检查处理。
接地端电压是否为0V,测试40脚及20脚IC插座各脚对地电压并记录,分析各电压值是否合理。
3、在不插上单片机芯片时,接通电源,模拟单片机输出低电平(将对应引脚接地),检查相应的外部电路是否正常(观察发光二极管是否点亮)。
模拟74HC573输出相应电平,检查数码管相应位是否点亮。
五、写入应用程序试运行
学生动手实际操作,根据硬件电路实际对应用程序进行修改后,编译生成目标文件写入单片机芯片进行运行调试。
运行正常后,再对应用程序进行修改以期能有更好的效果实现。
学生分组进行动手制作,老师巡回指导或示范操作。
由学生动手操作,老师进行巡回指导,必要时进行示范操作。
将所测试数据列表记录并妥善保存。
项目制作小结
1、元件测试方法。
2、元件插装与焊接及电路连接。
3、硬件电路调试。
4、程序写入与运行调试。
1、将项目制作调试时测试数据列表并分析。
2、总结本项目制作中出现问题及解决方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 单片机 应用 技能 语言 教案