项目6单片机应用技能实训C语言教案.docx
- 文档编号:28792241
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:28
- 大小:110.92KB
项目6单片机应用技能实训C语言教案.docx
《项目6单片机应用技能实训C语言教案.docx》由会员分享,可在线阅读,更多相关《项目6单片机应用技能实训C语言教案.docx(28页珍藏版)》请在冰豆网上搜索。
项目6单片机应用技能实训C语言教案
单片机应用技能实训(C语言)教案—项目6
项目6数字时钟电路制作
任务1项目相关知识学习
一、案头
任务
项目相关知识学习
授课时间
年月日
授课班级
教学形式
讲授、讨论
授课时数
2课时
教学用具
教学资源
项目制作成品、课件
课前准备
教学目标
1、了解并行通信与串行通信。
2、理解串行口结构,工作方式。
3、掌握串行口工作方式0的应用。
4、了解LED数码管结构及显示方式。
教学重点
1、串行口控制寄存器的作用与用法。
2、串行口工作方式0的应用。
教学难点
1、对串行口发送启动和接收启动的理解。
教学过程
1、通过对生活中数字时钟的讨论,引出项目任务。
2、LED数码管结构及显示方式。
3、并行通信与串行通信。
4、MCS-51单片机串行口的结构。
5、用于串行口的专用寄存器介绍。
6、串行口工作方式0的应用。
教学后记
二、教学实施过程
实施环节
教学内容
导学方法
组织教学
1、检查学生出勤情况并做好记录。
2、调整学生的注意力,为上课作准备。
互动交流
复习提问
1、MCS-51定时器有哪几种工作方式?
2、如何用定时器来完成数字时钟的定时?
本项目的终极目标是制作一个单片机控制的LED数码管静态显示数字时钟电路。
提问导思
导入
在项目5中学习了单片机的定时器,本项目要用定时器定时,用数码管显示时间,至少要用4个数码管,每个数码管占用8位,4个LED数码管占用4个I/O端口。
所以,在本项目中要扩展用于显示电路的输出端口。
下面,我们在进行项目制作之前,学习LED数码管结构原理以及MCS-51单片机的串行口。
启发学习积极性
讲授新课
一、LED数码管结构及工作原理
1、LED数码管结构
通常使用的是七段LED显示器,这种显示器由8个发光二极管构成,有共阴极和共阳极两种,如图6-3所示。
图6-3数码管结构
2.LED数码管工作原理
共阴极LED数码管的8个发光二极管的阴极连在一起,接公共端COM。
使用时公共端接地,当发光二极管的阳极为高电平时,发光二极管点亮。
共阳数码管则与之相反。
从管脚a~g及dp输入不同的8位二进制数,可显示不同的数字或字符,把控制数码管显示不同字符的8位二进制数称为段码。
例如:
对于共阳极数码管,若要显示0,其段码为C0H。
二、LED数码管的显示方法
数码管的显示方式有静态显示和动态显示两种。
1、静态显示
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。
这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。
每个数码管的8个字段分别与一个8位I/O口相连。
2、动态显示
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
通常,各位数码管的相应段选线并联在一起,由一个8位的I/O口控制;各位数码管的位选线(公共阴极或阳极)由另外的I/O口线控制。
三、MCS-51单片机串行接口
1、并行通信和串行通信
并行通信是指将组成数据字节的各位同时发送或接收,不宜用于远距离通信。
串行通信是组成数据的字节中的各位按顺序逐一传送的方式,最少只需3根传输线即可,如图8-2所示。
串行通信适用于远距离通信,但通信的传送速度较低。
图6-4串行通信
2、MCS-51单片机串行接口
MCS-51单片机的串行接口由串行口缓冲寄存器SBUF、串行口控制寄存器SCON和电源控制寄存器PCON构成,通过引脚TXD(P3.1)、RXD(P3.0)来完成串行数据的发送和接收与外界进行串行通信。
(1)串行口缓冲寄存器SBUF
SBUF是按字节寻址的专用寄存器,它用来存放将要发送或接收到的数据。
在物理上有两个独立的SBUF寄存器,一个用于发送,一个用来接收。
(2)串行口控制寄存器SCON
SCON是一个可以位寻址专用寄存器,它用于串行口的方式选择、发送、接收控制及保存串行口的状态信息等。
SCON中各位的名称如表6-2所示。
SCON位
D7
D6
D5
D4
D3
D2
D1
D0
位名称
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SCON中各位的定义如下:
SM0、SM1:
串行口工作方式选择位。
4种不同取值对应4种工作方式如表6-3所示。
SM2:
在方式2、3中用作多机通信控制位。
REN:
允许接收控制位。
REN=0时禁止接收,REN=1时允许接收。
TB8:
发送数据的第九位。
RB8:
接收数据的第九位。
TI:
发送中断请求标志位。
RI:
接收中断请求标志位。
(3)电源控制寄存器PCON
PCON对串行口的影响是通过其SMOD位改变串行口的波特率。
SMOD位位于PCON的最高位,即PCON.7,当SMOD=1时串行口的波特率是SMOD=0时的两倍(方式0除外)。
PCON在单片机复位时,SMOD=0。
二、MCS-51单片机串行口工作方式0的应用
1、串行口方式0的发送与接收
串行口工作方式0是8位同步移位寄存器方式。
串行数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。
方式0主要用于I/O端口的扩展。
(1)方式0的发送
方式0的发送操作是在TI=0的情况下,执行以SBUF为目的字节的数据传送指令开始的。
例如:
SBUF=a;
8位数据发送完成后,由硬件将TI置1,向CPU请求中断。
若中断不开放,TI可作为发送完成的查询标志位。
TI=1后,必须用软件将其清0,以便再次发送数据。
(2)方式0的接收
方式0的接收操作是在RI=0的条件下,由REN置1指令来启动接收。
收到8位数据后,由硬件将RI置1,向CPU请求中断。
若中断不开放,RI可作为接收完成的查询标志位。
RI=1后,必须用软件将其清0,以便再次接收数据。
2、方式0应用举例
例1:
使用串入并出芯片74LS164与单片机相连,使用串行口方式0扩展8位并行输出,接线示意图如图6-5所示。
8位并行输出接8个发光二极管,要求控制8个发光二极管反复亮灭。
程序设计如下(采用查询方式):
图6-5方式0扩展并行输出
#include
#defineucharunsignedchar
voiddelay_ms(ucharxms);//定义延时函数
/*******以下是主函数****************/
voidmain()
{
uchara=0xff;
SCON=0;//置串行口方式0,相关标志位、控制位清0。
while
(1)
{
SBUF=a;//启动串行发送
while(!
TI);//等待串行发送完成
TI=0;//TI清0,准备再次发送数据
a=~a;
delay_ms(200);
}
}
用多媒体展示图6-3。
提问学生其他数字的段码。
介绍连接方法并说明静态显示的优缺点。
介绍连接方法并说明动态显示的优缺点。
重点说明SCON的使用。
对方式0的发送与接收详细说明。
用多媒体展示课件图6-5
简单介绍集成电路芯片74LS164工作特点。
对应用程序进行介绍,延时程序由学生进行编写。
课堂小结
1、LED数码管结构原理及显示方式。
2、并行通信、串行通信的概念。
3、MCS-51单片机串行口结构及SCON各位作用。
4、串行口方式0应用举例。
课后作业
自我测评1题、2题、3题、4题。
任务2数字时钟电路硬件、软件设计
一、案头
任务
数字时钟电路硬件、软件设计
授课时间
年月日
授课班级
教学形式
讲授、讨论
授课时数
2课时
教学用具
教学资源
课件、单片机应用制作成品
课前准备
教学目标
1、掌握串行口工作方式0的应用。
2、掌握数字时钟电路的整体构成。
3、掌握C语言数值计算的方法。
4、理解应用程序的编程思路。
教学重点
1、串行口工作方式0的应用。
2、应用程序的编程思路及相关指令使用。
教学难点
1、应用程序的编写思路及相关程序。
教学过程
1、复习提问串行口方式0的主要应用。
2、介绍项目任务要求。
3、根据项目任务要求引导设计硬件电路。
4、C语言数值计算方法。
4、应用程序流程图绘制。
5、应用程序设计。
教学后记
二、教学实施过程
实施环节
教学内容
导学方法
组织教学
1、检查学生出勤情况并做好记录。
2、调整学生的注意力,为上课作准备。
互动交流
复习提问
1、串行口控制寄存器SCON各位的作用?
2、如何用方式0扩展并行输出?
提问导思
导入
在学习了串行口结构及方式0应用后,我们应用串行口方式0扩展4个并行输出口来输出显示时间,项目要求如下:
(1)用4个LED数码管采用静态显示,分别显示时和分,用一个发光二极管表示秒。
(2)用两个按键,一个用来调小时,一个用来调分钟。
启发学习积极性
讲授新课
一、数字时钟电路设计
1、数字时钟电路构成方案设计
根据项目要求,本项目硬件由按键电路(调时)、单片机最小应用系统、扩展输出电路和数码管显示电路构成。
关键是扩展输出电路构成。
扩展输出用芯片74HC595来完成。
2、电路设计
根据电路构成方案设计,对各组成部分进行设计。
关键是扩展输出及显示电路的设计。
硬件电路原理图如图6-7所示。
图6-7数字时钟电路原理
2、元件选择
(1)复习晶振电路元件及复位电路元件的选择。
(2)复习发光二极管电路元件选择。
(3)数码管的选择。
二、应用程序编写
1、C语言数值计算的方法。
(1)算术运算
算术运算常用的有:
+、-、*、/、%五种。
“/”是除法运算,即两个整数相除,商仍为整数,舍去小数部分(余数)。
“%”为取模运算(取余运算),参与运算的两个整数,结果为两个数相除之后的余数。
例如:
unsignedinta,b,c,d;
a=12;b=8;
c=a/b;//结果是c=1。
d=a%b;//结果是d=4。
(2)复合运算
C语言中的复合运算符使得语句的书写更加简洁,符号左则的变量既是源操作数又是目的操作数。
例如:
unsignedchara=0x01,b=0x02,c=0x03,d=0x04;
a/=b;//a=a/b=0
b+=0x01;//b=b+1=0x03
c|=0x80;//c=c|0x80=0x83
d<<=1;//d=d<<1=0x08
2、应用程序流程图绘制
根据项目要求,分别绘制主程序和中断服务程序流程图如图6-8所示。
图6-8程序流程图
3、程序设计
根据流程图编写程序,参考程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharhour=12,min=0,sec=0;//定义小时、分钟、和秒变量
ucharcont_1s;//定义1S定时次数变量
sbitS1=P1^0;//定义S1键
sbitS2=P1^1;//定义S2键
sbitxskzw=P2^1;//定义显示控制位
sbitled=P2^0;
uchardisp_buf[4];//定义显示缓冲单元
ucharcodetab[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90,0x88,0xff};//定义段码表
/**********以下是初始化函数************/
voidstart()
{
TMOD=0x11;//定时器工作方式
TL0=(65536-20000)%256;//置定时器初值,一次定时20ms
TH0=(65536-20000)/256;
SCON=0x00;//串行口初始化
cont_1s=50;//置1S定时次数
EA=1;//开放中断
ET0=1;//开定时器中断
TR0=1;//启动定时器T0
}
/**********以下是时间显示函数*********/
voidsjxs()
{
uchari,tmp;//定义中间变量
xskzw=0;//控制位清0,准备串行发送显示段吗
for(i=0;i<4;i++)//循环发送4位
{
tmp=disp_buf[i];//显示数据送tmp
SBUF=tab[tmp];//查显示段吗送SBUF进行串行发送
while(TI==0);//等待发送完
TI=0;//为下次发送做好准备
}
xskzw=1;//控制位置1,将显示段吗送出显示当前时间
}
/**********下以是数据处理函数*********/
voidsjcl(ucharin1,in2)
{
ucharfen,shi;
shi=in1;
fen=in2;
disp_buf[0]=fen%10;//分钟个位
disp_buf[1]=fen/10;//分钟十位
disp_buf[2]=shi%10;//小时个位
disp_buf[3]=shi/10;//小时十位
}
/***以下是定时器TO中断函数,用于产生时、分、秒信号***/
voidsz()interrupt1
{
TL0=(65536-20000)%256;//重装定时器初值
TH0=(65536-20000)/256;
cont_1s--;//1S定时中断次数减1
if(cont_1s==0)//到1s定时了吗?
{
cont_1s=50;//重置cont_1s
led=1;//秒闪烁灭
sec++;//秒加1
if(sec==60)//到60秒否?
{
sec=0;//到60秒则秒清0
min++;//分钟加1
if(min==60)//到60分否?
{
min=0;//到60分钟则分清0
hour++;//小时加1
if(hour==24)//到24小时否?
hour=0;//到24小时则小时清0
}
}
sjcl(hour,min);//调用数据处理函数
sjxs();//调用时间显示函数
}
elseif(cont_1s==25)//到0.5S延时了吗?
led=0;//秒闪烁亮
}
/*********以下是主函数***************/
voidmain()
{
start();//调用初始化函数
while
(1)//大循环
{
if(S1==0)
{
delay_ms(10);//若S1按下则调用10ms延时函数去抖动
if(S1==0)
txs();//S1仍然按下则调用调小时函数
}
if(S2==0)//若S2按下则调用10ms延时函数去抖动
{
delay_ms(10);
if(S2==0)//S2仍然按下则调用调分钟函数
tfz();
}
}
}
4、是否需要去抖动处理?
老师和同学共同讨论电路构成方案。
老师讲解74HC593与单片机的连接及扩展级连方法。
老师和同学共同在黑板上绘制电路原理图。
对自述运算可多举几个例子。
在老师引导下由同学老师共同完成流程图绘制。
在老师引导下与同学一起完成应用程序设计。
延时子函数、调小时子函数、调分钟子函数由学生独立完成。
课堂小结
1、数字时钟电路设计。
2、C语言数值计算的方法。
3、应用程序设计,关键是程序流程图设计。
课后作业
自我测评5题、6题。
任务3数字时钟电路的计算机仿真
一、案头
任务
防盗报警器电路的计算机仿真
授课时间
年月日
授课班级
教学形式
老师演示、学生练习
授课时数
2课时
教学用具
教学资源
机房、相关课件
课前准备
教学目标
1、数字时钟电路设计的计算机仿真验证。
2、提高工具软件的使用熟练程度。
3、熟练C语言相关指令的使用及电路应用程序设计。
教学重点
1、数字时钟电路设计的计算机仿真验证。
2、程序编写与修改。
教学难点
1、仿真电路运行出错时的修改调试。
教学过程
1、proteus仿真电路绘制步骤复习。
2、用keil进行程序汇编步骤复习。
3、布置练习作业,学生进行练习并验证电路效果,老师进行指导。
教学后记
二、教学实施过程
实施环节
教学内容
导学方法
组织教学
1、检查学生出勤情况并做好记录。
2、调整学生的注意力,为上课作准备。
互动交流
复习提问
1、本项目设计的数字时钟电路都有哪些功能?
提问导思
导入
刚才同学们对数字时钟电路的功能作了叙述,下面就根据上次课进行的电路设计及程序编写,用计算机仿真验证本次项目设计的正确性和运行效果。
启发学习积极性
讲授新课
一、使用proteus绘制仿真电路图的步骤
参照图6-7绘制仿真电路图。
1、将所需元器件加入到对象选择器窗口
AT89S51用AT89C51代替,红色发光二极管的英文符号是“LED-RED”;电阻、电容、电解电容、按键、晶振的英文符号分别是“RES”、“CAP”“CAP-ELEC”、“BUTTON”、“CRYSTAL”;绿色数码管的英文符号是“7SEG-COM-CAT-GRN”。
2、放置元器件至图形编辑窗口
3、移动(删除)对象和调整对象朝向
4、放置电源及接地符号
5、元器件之间的连线
6、编辑对象的属性设置元件参数
二、使用keil进行程序汇编的步骤
1、源文件的建立
输入完源程序后,保存该文件,注意必须加上扩展名.c。
2、建立工程文件
点击“Project--NewProject…”菜单,出现一个对话框,要求给将要建立的工程起一个名字,---。
3、工程的设置(针对我们的单片机制作项目进行简单设置)
在OutPut页面,勾选“CreatHexfile”选项。
4、编译、连接
在设置好工程后,即可进行编译、连接。
点击按钮
,对当前工程中的文件进行编译然后再连接,生成目标代码。
编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现。
三、布置作业学生练习,老师指导。
1、数字时钟电路仿真验证。
2、在仿真软件中对定时器初值进行不同参数设置,观察有什么变化。
3、在仿真软件采用74LS164代替74HC595进行仿真,观察仿真运行效果,想一想为什么出现相应效果。
4、修改应用程序验证运行效果。
利用多媒体或机房相关软件进行操作演示。
讲解个步骤的含义。
课堂小结
1、proteus的基本操作步骤。
2、keil的操作步骤。
3、单片机电动机正反转控制电路的仿真验证。
课后作业
技能反复训练与思考题3题、7题。
任务4数字时钟电路的制作与调试
一、案头
任务
单片机控制广告灯电路的制作与调试
授课时间
年月日
授课班级
教学形式
学生动手操作、老师指导
授课时数
2课时
教学用具
万用表、电烙铁等
教学资源
实训设备、电路制作成品
课前准备
数字时钟电路PCB板、相关电子元件采购、准备。
教学目标
1、掌握项目相关元件的测试方法。
2、掌握使用相关工具进行电路制作的操作方法。
3、掌握使用仪表进行电路测试方法,提高仪表使用的熟练程度。
4、掌握数字时钟电路构成及硬件、软件调试。
教学重点
1、掌握相关元件测试方法。
2、掌握数字时钟电路构成及硬件、软件调试。
教学难点
1、电路调试中的故障查找。
教学过程
1、强调实训室操作规程,注意操作安全。
2、防盗报警器电路各元件及使用工具简介。
3、学生进行元件测试。
4、分组进行硬件电路制作。
5、分组进行硬件电路调试。
6、根据硬件电路实际对应用程序进行修改并进行运行调试。
教学后记
二、教学实施过程
实施环节
教学内容
导学方法
组织教学
1、检查学生出勤情况并做好记录。
2、调整学生的注意力,为上课作准备。
互动交流
复习提问
1、能否用调时键进行时间减1?
2、如何对数码管进行简单测试?
提问导思
导入
强调操作纪律及操作安全注意事项。
经过前面几个项目的制作,同学们已经有了制作经验,但本项目比较复杂,期待同学们成功展示作品的时刻。
由学生分组展开实际操作。
建议每组2人,最好每组不超过3人。
启发学习积极性
项目制作
一、认识项目相关元件及元件测试
1、复习发光二极管、电阻等元件测试方法并进行操作练习。
2、数码管测测试。
3、复习按键的测试方法并进行测试。
二、按元件高低层次依次进行插装与焊接
1、电阻的插装与焊接。
2、电容、晶振的插装与焊接。
3、40脚及16脚IC插座插装与焊接。
4、按键及数据线插座的插装与焊接。
5、数码管的插装与焊接。
三、电路连接
完成各元件的连接后,将电源线引出或将USB座焊接在电路板上,使用电脑上的5V电源。
往届学生制作成品如下:
四、硬件电路调试
1、通电之前,先用万用表检查各电源线与地线之间是否有短路现象,测试40脚及16脚IC插座各脚对地电阻值并记录,分析各电阻值是否合理。
若发现有不合理值,则要进行分析查找及处理。
点按控制按键,测量相应引脚电阻是否为0。
2、不插单片机芯片,接通电源,检查所有插座或器件的电源端是否有符合要求的电压值,如发现电压值偏离较多,应立即中断供电并检查处理。
接地端电压是否为0V,测试40脚及16脚IC插座各脚对地电压并记录,分析各电压值是否合理。
3、在不插上单片机芯片时,接通电源,模拟单片机输出低电平(将对应引脚接地),检查相应的外部电路是否正常(观察发光二极管是否点亮)。
模拟74HC595输出低电平,检查数码管相应位是否点亮。
五、写入应用程序试运行
学生动手实际操作,根据硬件电路实际对应用程序进行修改后,汇编生成目标文件写入单片机芯片进行运行调试。
运行正常后,再对应用程序进行修改以期能有更好的效果实现。
若正常写入程序,接通电源后,系统不能正常工作,可以通过测试18、19、30脚的直流电位初步判定单片机最小系统是否已经正常工作。
学生分组进行动手制作,老师巡回指导或示范操作。
由学生动手操作,老师进行巡回指导,必要时进行示范操作。
将所测试数据列表记录并妥善保存。
项目制作小结
1、元件测试方法。
2、元件插装与焊接及电路连接。
3、硬件电路调试。
4、程序写入与运行调试。
课后作业
1、将项目制作调试时测试数据列表并分析。
2、总结本项目制作中出现问题及解决方法。
3、自我测评7题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 单片机 应用 技能 语言 教案
![提示](https://static.bdocx.com/images/bang_tan.gif)