一、教学目的
1、理解掌握顺序结构、分支结构、循环结构程序;
2、理解循环设计模块组成;
3、单片机常用数制及其相互转换;
二、教学重点及难点
1、单片机常用数制及其相互转换;
2、掌握单片机的循环结构程序;
新课内容
一、顺序结构程序设计
顺序结构程序在执行时是从第一条指令开始依次执行每一条指令,直到执行完毕。这种结构的程序简单明了,结构清晰,往往是构成复杂结构程序的基础。
二、分支结构程序设计
在一个实际的应用程序中,程序不可能始终是顺序执行的通常需要根据实际问题设定条件,通过对条件是否满足的判断,产生一个或多个分支,以决定程序的流向,这种程序称为分支程序。
三、循环结构程序设计
上述介绍的顺序结构程序和分支结构程序中的指令一般都只执行一次。而在实际应用系统中,往往会出现同一组操作要重复执行许多次的情况,这种有规律可循又反复出现的问题,可以采用循环结构设计的程序来解决。这样可以使程序简短、条理清晰、运行效率高,占用存储空间少。
循环结构程序一般由4部分组成。
(1)循环初始化
(2)循环处理
(3)循环控制
(4)循环结束

•任务说明
本任务通过单片机对接在P0口上的8个发光二极管进行移动和闪烁控制,形成一个简易的循环彩灯控制系统。控制过程如下:上电后第一个彩灯(二极管)点亮500ms后,开始从右向左移动,即从低位向高位移动。移动到最左边后再返回向右移动,等移动到最开始处,8个彩灯一起闪烁3次后,然后整个程序再重复执行下去,直到系统关闭电源才会停止。通过实训熟悉单片机控制I/O端口的方法,了解和熟悉单片机硬件系统和软件指令系统的开发过程,激发学习单片机技术的兴趣。
在任务分析中分析了系统的功能和点亮二极管的思路方法,要使端口对应的发光二极管发光或熄灭,只需要使端口输出低电平或高电平。如下表所示就是8个发光二极管做一次从右向左逐一点亮,接着从左端返回到右端的情况,最后是全灭和全亮的控制情况。
| 步骤 | P0.7 | P0.6 | P0.5 | P0.4 | P0.3 | P0.2 | P0.1 | P0.0 | 十六进制 | 灯亮情况 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0FEH | 1灯亮 |
| 2 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0FDH | 2灯亮 |
| 3 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0FBH | 3灯亮 |
| 4 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0F7H | 4灯亮 |
| 5 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0EFH | 5灯亮 |
| 6 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0DFH | 6灯亮 |
| 7 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0BFH | 7灯亮 |
| 8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7FH | 8灯亮 |
| 9 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0BFH | 7灯亮 |
| 10 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0DFH | 6灯亮 |
| 11 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0EFH | 5灯亮 |
| 12 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0F7H | 4灯亮 |
| 13 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0FBH | 3灯亮 |
| 14 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0FDH | 2灯亮 |
| 15 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0FEH | 1灯亮 |
| 16 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0FFH | 全灭 |
| 17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00H | 全亮 |
方法1源代码——循环彩灯(顺序结构)
程序设计思路:根据上表的数据依次向P0端口输出,为了保证彩灯显示的效果,把切换不同发光二极管的时间间隔设为500 ms,最后再把全灭和全亮的数据送出三次,全亮和全灭之间的时间间隔也设为500 ms,时间延时通过调用500 ms 的子程序来实现。
方法2源代码——循环彩灯(循环结构)
上一个实训模块采用顺序结构程序设计的方法编写了彩灯的控制程序,通过软件仿真发现程序在编译和使用中没有任何问题,能达到系统功能的要求。但我们看到程序有些繁琐,在程序修改时也有很多麻烦,为了提高效率,采用循环结构程序设计的方法会使编程效率大大提高,程序结构清晰,便于维护。
循环结构程序设计思路:先让所有灯熄灭,再让第一个灯点亮,然后利用循环移动指令向左移动一次点亮第2个灯,判断循环是否到第7次,不到继续左移一位......右移的方法与左移的相同,最后让等全灭全亮3次,接着程序开始循环。
原理图
实验效果

