目录

  • 1 项目一 单片机基础知识
    • 1.1 单片机概述
    • 1.2 51系列单片机的结构组成
    • 1.3 单片机存储结构
    • 1.4 单片机I/O口及编程语言
  • 2 项目二 单片机编译软件使用及仿真
    • 2.1 单片机编译软件的使用及电路仿真
    • 2.2 任务1 汽车“双闪”灯控制系统设计
  • 3 项目三 单片机循环彩灯制作
    • 3.1 知识准备:数制及编码
    • 3.2 任务1 循环彩灯的简易控制
    • 3.3 任务2 人工可干预的循环彩灯控制
  • 4 项目四 简易计算器设计与制作
    • 4.1 知识准备:算术指令
    • 4.2 任务1 简易计算机的制作
  • 5 项目五 简易秒表设计与制作
    • 5.1 知识准备:七段数码管控制
    • 5.2 知识准备:十进制数调整指令
    • 5.3 任务1 秒表系统电路设计
  • 6 项目六 交通灯控制系统设计
    • 6.1 知识准备:交通灯发展史
    • 6.2 知识准备:单片机定时/计数器
    • 6.3 任务  交通灯控制系统设计
      • 6.3.1 任务1 交通信号灯驱动电路设计
      • 6.3.2 任务2  信号灯倒计时显示电路设计
      • 6.3.3 任务3 交通灯控制系统调试
  • 7 项目七 单片机中断控制应用
    • 7.1 知识准备:中断系统概念及结构
    • 7.2 知识准备:中断控制
    • 7.3 任务1  可中断控制的循环彩灯系统
    • 7.4 任务2 门铃(音乐)芯片的制作
  • 8 项目八 单片机串行口应用
    • 8.1 知识准备:51系列单片机串行通信
    • 8.2 知识准备:串行通信的程序设计
      • 8.2.1 常用的串行D/A转化器-MAX538
      • 8.2.2 常用的串行A/D转换器-MAX187
    • 8.3 任务1 单片机双机通信
  • 9 实训讲义
    • 9.1 单片机实训讲义
任务1 循环彩灯的简易控制


一、教学目的

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次,接着程序开始循环。



  • 原理图


  • 实验效果