任务2-4-1 模拟汽车转向灯(课件)-《单片机技术与应用》同步教学(电子工业版)
2024-07-11
|
21页
|
34人阅读
|
1人下载
普通
内容正文:
子任务2-4-1 模拟汽车转向灯
一.任务目标
(1)掌握单片机的位运算符的功能及应用;
(2)掌握单片机子程序的编写及调用方法;
(3)掌握单片机延时程序的编写方法;
(4)掌握循环程序的编写方法;
二.任务要求
任务描述:用单片机控制两个发光二极管的亮灭模拟汽车的转向灯。
三. 相关知识
1)条件语句与开关语句
(1)条件语句
① 格式1:
if(条件表达式)
{语句}
② 格式2
if(条件表达式)
{语句1}
else
{语句2}
③ 格式3
if(条件表达式1)
{语句1}
else if(条件表达式2)
{语句2}
else if(条件表达式3)
{语句3}
…
else if(条件表达式n)
{语句n }
else {语句n+1}
(2)开关语句
开关语句说明:
① 当switch后面表达式的值与某一“case”后面的常量表达式的值相等时,就执行该“case”后面的语句,遇到break语句就退出switch语句。
② Switch后面括号内的表达式,可以是整型或字符型表达式,也可以是枚举型数据。
③ 每一个case常量表达式的值必须不同。
④ 每个case和default的出现次序不影响执行结果,可先出现default,再出现其它case。
2)延时子程序
(1)时序分析:
① 时钟周期
② 机器周期
③ 指令周期
(2)延时程序
软件延时程序在单片机程序设计中应用十分广泛,其主要设计思想是利用空语句构成循环程序,只占用CPU的时间,而不进行任何实质性操作,来实现延时功能。空语句只有一条:“;”,没有任何具体的功能,只是延迟1个机器周期的时间
四、任务分析
1)硬件电路
图2-4- 1 模拟汽车转向灯电路图
2)程序分析
五.任务实施
(1)在Proteus中按照图2-4-1搭接好电路;
(2)在keil软件中编辑逻辑程序,进行编译,得到HEX格式文件;
(3)将所得的HEX格式文件在Proteus中加载到单片机芯片中;
(4)在Proteus中仿真,看发光二极管是不是在闪烁;
(5)Proteus中结果正常后,用实际硬件搭接电路,通过编程器将HEX格式文件下载到AT89C51中,通电看实际效果。
六、任务总结
子任务2-4-2 8路抢答器设计
一.任务目标
(1)掌握单片机的寄存器的功能及应用;
(2)掌握单片机的开关语句的应用;
(3)初步掌握按键电路的结构及相关编程方法。
(4)掌握数组的应用。
二.任务要求
任务描述:用8个独立式按键作为抢答输入按键,标号分别为K0~K7,当某一参赛者首先按下抢答器按钮时,在数码管上显示抢答成功的参赛者的标号,此时抢答器不再接受其他输入信号,直到按下系统复位按钮,系统再次接受下一轮的抢答输入。
三. 相关知识
1)位地址
(1)位寻址区:在51单片机中,有一部分RAM和一部分SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自己的地址,可以直接用这个地址来对这些位单独进行操作。
(2)可以位寻址的特殊功能寄存器:51单片机中有一些SFR也是可以进行位寻址的,这些SFR的特点是其字节地址均可被8整除,如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON(定时计数器控制寄存器)、P0~P3(I/O端口锁存器)。
2)位操作指令
MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集。在进行位处理时,C(就是我们前面讲的进位位)称“位累加器”。有自己的位RAM,也就是我们刚讲的内部RAM的20H~2FH这16个字节单元即128个位单元,还有自己的位I/O空间(即P0.0~P0.7,P1.0~.P1.7,P2.0~P2.7,P3.0~P3.7)。当然在物理实体上它们与原来的以字节寻址用的RAM及端口是完全相同的,或者说这些RAM及端口都可以有两种用法。
四、任务分析
1)硬件电路
图2-4- 2 8路抢答器设计电路
2)程序分析
五.任务实施
(1)在Proteus中按照图2-4-2搭接好电路;
(2)在keil软件中编辑逻辑程序,进行编译,得到HEX格式文件;
(3)将所得的HEX格式文件在Proteus中加载到单片机芯片中;
(4)在Proteus中仿真,按下按键,看相应的数码管是否有显示;
(5)Proteus中结果正常后,用实际硬件搭接电路,通过编程器将HEX格式文件下载到AT89C51中,通电看实际效果。
六、任务总结
知识梳理与总结
(1)片内RAM与片外RAM之间的数据传送。
(2)了解各指令功能及对PSW的影响,重点注意用除法指令来得到一个数各位的BCD码的方法。
(3)运算符控制流水灯状态。
(4)数码管显示的接口电路连接方法及实现数据显示的编程方法。
(5)循环控制函数的应用,重点掌握循环次数的控制方法。
(6)子程序的编写及调用要注意。
(7)通过多重循环实现长时间延时子程序的编写方法。
(8)注意四个I/O口的使用技巧,尤其注意P0口在作为输出时应接上拉电阻。在读I/O口数据时,可能是读管脚数据,也可能是读I/O口锁存器的数据,两者是不一样的。在读I/O口管脚数据时,应注意先输出全1数据。
(9)注意键盘开关电路的连接方法,运用位判断转移指令实现判断是否有按键按下的方法。
1.试编程将10个数送到地址为20H~29H的片内RAM中,然后再将这10个存储器中的内容送到地址为1000H~1009H的片外RAM中去。
2.单数码管轮流显示10个进制数码,要求从9到0轮流显示,循环不断。
3.试编程实现32个LED的暗点右移动。
4.试编程实现32个LED的亮点左移。
5.8个LED灯亮闪烁控制,要求亮1秒,灭0.5秒,不断闪烁10次。
习题:
$$
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。