单片机的控制系统课程设计
目录
第一章 单片机的研究背景及目的要求……………………………2
第二章 设计任务及功能要求………………………………………3
2.1 设计课题任务………………………………………………3
2.2 功能要求说明………………………………………………3
第三章 实验方案及原理……………………………………………4
3.1 实验目的……………………………………………………4
3.2 实验设备……………………………………………………4
3.3 实验要求……………………………………………………4
3.4 实验原理……………………………………………………5
3.5 硬件连接图…………………………………………………8
第四章 程序流程图…………………………………………………9
4.1 主程序流程图………………………………………………9
4.2 键值的程序流程图…………………………………………10
4.3 主程序代码…………………………………………………13
第四章 结论与体会…………………………………………………16
参考文献……………………………………………………………17
附录 …………………………………………………………………18
1
单片机的控制系统课程设计
第一章 单片机的研究背景
1.1 单片机的研究背景
计算机系统的发展已明显地朝三个方向发展;这三个方向就是:巨型化,单片
化,网络化。以解决复杂系统计算和高速数据处理的仍然是巨型机在起作用,故而,
巨型机在目前在朝高速及处理能力的方向努力。单片机在出现时,Intel 公司就给
其单片机取名为嵌入式微控制器(embedded microcontroller)。单片机的最明显
的优势,就是可以嵌入到各种仪器、设备中。这一点是巨型机和网络不可能做到的。
单片机的另外一个名称就是嵌入式微控制器,原因在于它可以嵌入到任何微型或小
型仪器或设备中。目前,把单片机嵌入式系统和 Internet 连接已是一种趋势。但是,
Internet 一向是一种采用肥服务器,用户机的技术。这种技术在互联上存储及访问
大量数据是合适的,但对于控制嵌入式器件就成了"杀鸡用牛刀"了。要实现嵌入式
设备和 Int ernet 连接,就需要把传统的 Internet 理论和嵌入式设备的实践都颠倒
过来。为了使复杂的或简单的嵌入式设备,例如单片机控制的机床、单片机控制的
门锁,能切实可行地和 Internet 连接,就要求专门为嵌入式微控制器设备设计网络
服务器,使嵌入式设备可以和 Internet 相连,并通过标准网络浏览器进行过程控制。
目前,为了把单片机为核心的嵌入式系统和 Internet 相连,已有多家公司在进行
这方面的较多研究。这方面较为典型的有 emWare 公司和 TASKING 公司。
EmWare 公司提出嵌入式系统入网的方案--EMIT 技术。这个技术包括三个主要部
分:即 emMicro, emGateway 和网络浏览器。其中,emMicro 是嵌入设备中的一个
只占内存容量 1K 字节的极小的网络服务器; emGateway 作为一个功能较强的用户
或服务器,它用于实现对多个嵌入式设备的管理,还有标准的 Internet 通信接入
以及网络浏览器的支持。网络浏览器使用 emObjicts 进行显示和嵌入式设备之间的
数据传输。
如果嵌入式设备的资源足够,则 emMicro 和 emGateway 可以同时装入嵌入式设备
中,实现 Inter net 的直接接入。否则,将要求 emGateway 和网络浏览器相互配合。
EmWare 的 EMIT 软件技术使用标准的 Internet 协议对 8 位和 16 位嵌入式设备进行
管理,但比传统上的开销小得多。
目前,单片机应用中提出了一个新的问题:这就是如何使 8 位、16 位单片机控制
的产品,也即嵌入式产品或设备能实现和互联网互连?
2
单片机的控制系统课程设计
第二章 设计任务及功能要求
2.1 设计课程任务
4×4 键盘在 8×8LED点阵上的应用
2.2 功能要求说明
给 4×4 键盘的每个键定义一个功能,其中把定义为 0~9 的键盘称为数
字键,把定义成 DEL 的键称为删除键,把定义成 ENT 的键成为确认键,其
他键称为保留键。如果是数字键按下,把代表数字显示在数码管上:按键按
下时,6 位数码管靠右边显示该键的代表数字;继续按键时,已经显示在数
码管上的数字左移一位,按键代表的数字显示在最右边的数码管上。如果是
删除键按下时,每按一次删除键显示在最右边数字被删除,其他数字右移一
位,最右边一位显示 0,比如在第 5 个数码管上显示“8”,在第 6 个数码管上
显示“9”,当按一次删除键时,在第 6 个数码管上显示“8”,第 5 个数码管显
示按键前第四个数码管显示的内容(或者说删除了 9)。当保留键按下时,
不做任何操作。当按确认键时,按任何键将不起作用。4×4 键盘各个键的功
能见表 2-1
表 2-1 键盘功能表
7
4
1
DEL
8
5
2
0
9
6
3
F1
F2
F3
F4
ENT
3
单片机的控制系统课程设计
第三章 实验方案及原理
3.1 实验目的
1. 了解 4×4 键盘的工作原理。
2. 熟悉SPCE061A单片机控制数码管的显示的方法。
3. 掌握4×4键盘的使用方法。
4. 掌握4×4键盘控制数码管的显示的方法。
3.2 实验设备
1. 装有 Windows 系统和μ’nSP™ IDE 仿真环境的 PC 机一台,μ’nSP™ 十
六位单片机实验箱一个。
2. 本实验用到的实验箱硬件模块为:SPCE061A核心及周边电路模块(包含
32个I/O口),6位8段数码管电路模块,4×4键盘电路模块。
3.3 实验要求
1. 编程要求:主程序利用C语言编写。
2. 实现功能:给 4×4 键盘的每个键定义一个功能,其中把定义为 0~9 的键
盘称为数字键,把定义成 DEL 的键称为删除键,把定义成 ENT 的键成为确
认键,其他键称为保留键。如果是数字键按下,把代表数字显示在数码管
上:按键按下时,6 位数码管靠右边显示该键的代表数字;继续按键时,
已经显示在数码管上的数字左移一位,按键代表的数字显示在最右边的数
码管上。如果是删除键按下时,每按一次删除键显示在最右边数字被删除,
其他数字右移一位,最右边一位显示 0,比如在第 5 个数码管上显示“8”,
在第 6 个数码管上显示“9”,当按一次删除键时,在第 6 个数码管上显
示“8”,第 5 个数码管显示按键前第四个数码管显示的内容(或者说删
除了 9)。当保留键按下时,不做任何操作。当按确认键时,按任何键将
不起作用。4×4 键盘各个键的功能见表 2-2。
3.
实验现象:开机后(程序运行后),数码管全部显示 0,当 4×4 键
盘中表 3-1 定义的数字键按下时,数码管上显示的数字左移一位,该键
的数字显示到最右边的数码管上;当删除键按下时,删除最右边显示的数
字,数码管上显示的数字右移一位,最左边的数码管显示为零;当确认键
按下时,之后按任何键,将不起作用;保留键按下时,没有任何实验现象。
表 3-1 键盘功能表
8 9
5 6
2 3
7
4
1
DEL 0 F4 ENT
F1
F2
F3
4
单片机的控制系统课程设计
3.4 实验原理
1.4×4键盘的工作原理
在一般应用中,键盘按其接线方法有:直接式键盘、行列式键盘(又称矩
阵键盘)、串转盘并键等;在实验箱中,采用4×4的行列式键盘,即键盘排列
为4行、4列,共16个按键。
行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识
别被按下的键是哪一个。一般会采用行列扫描法,可以同时完成上述两项任务。
基本的扫描原理是:
先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位
置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高
电平,如果是无键盘按下时,则读取的列数一定全是0(低电平)。这也就可
以判断有无按键的按下了。
一旦检测到有键按下时,还需要有一个延时的消除抖动的操作,以消除按
键时带有的抖动信号;一般延时在15ms左右即可。延时后,如还能检测到有按
键按下,则可确定当前是有键按下,可进入获取键值的操作。
获取键值时,采用行列依次扫描的方法。首先使第一行扫描线输出高电平,
其它的行扫描线输出是低电平,然后读取列扫描线的状态,得到列码;如果本
行无键按下,则得到的列数为全 0,并扫描下一行;如本行有键按下,则会读
取到对应的列数值,并退出扫描,进行键值计算。当第一行扫描没有检测到按
键时,则扫描下一行,即使第二行扫描线输出高电平,其它行扫描线输出是低
电平,其它与前面所述类似。
在行列扫描时,可以用一个变量记录当前扫描的行号,在计算键值时,可
以利用此行号以及列数得知是哪一行、哪一列上的按键按下了。如:当 S5
下时,应该检测出第二行扫描时读到有效的列数是 0001(C4~C1)。
2. SPCE061A获取4×4键盘键值原理
单片机与该电路连接时,使用4个端口作为输出口,接4条行扫描线;使用4
个端口作为输入口,4条列扫描线。使用SPCE061A 的IOA8~15 八个端口作4×4
键盘的扫描。
单片机与该电路连接时,使用 4 个端口作为输出口,接 4 条行扫描线;使用 4
个端口作为输入口,接 4 条列扫描线。使用 SPCE061A 的 IOA8~15 的八个端口
作 4×4 键盘的扫描,IOA0~3 接行扫描线,IOA4~7 的连接列扫描线。如图 2-3。
5
单片机的控制系统课程设计
IOA15
IOA14
IOA13
IOA12
SPCE061A
IOA11
IOA10
IOA9
IOA8
L1
L2
L3
L4
4×4键盘
C1
C2
C3
C4
图 3-3
如上图中,IOA12~IOA15设置为输出口,接行扫描线;IOA8~IOA11设置为
带下拉电阻的输入口,接列数扫描线。
按照4×4键盘的工作原理,先只把IOA12输出高电平,其他(IOA13~IOA15)
都输出为低电平,扫描IOA8到IOA11 四个输入口的值,如果每个输入口的值还
是0;再把IOA13输出高电平,其他都输出为低电平,扫描IOA8到IOA11 四个输
入口的值,如果每个输入口还没有检测到高电平;从IOA14输出高电平扫描,从
IOA15输出高电平扫描,直到检测到高电平,保存扫描行值和列码。如果一直没
有检测到高电平,则没有键按下。
比如当S5按下时,分别从IOA12、IOA13或者IOA15输出高电平,其他输出
低电平时,检测到从IOA8到IOA11 四个输入口的值都为0,但是当从IOA14输出
高电平,其他都输出低电平时,检测到从IOA8到IOA11 四个输入口的值为1000
(IOA11~IOA8)。把扫描到高电平时的行值保存在寄存器里,即把IOA12~IOA15
输出值0100(IOA15~IOA12)保存起来,这时候IOA口的键码为01001000B,根
据扫描到IOA口的键码自己定义一种算法,计算想要得到的键值(比如IOA为0x48
时,计算得到的键值为5)。
根据实验要求,不需要专门计算键值,当取得键码为下表中数字键对应的键
码值时,就让数码管的显示这些数字键的所代表的数字;当取得键码为下表中
“DEL”键对应的键码值时执行删除操作;当取得键码为下表中“ENT”键对应的键
码值时把设置好的确认键按下标志为置为1,其他任何键按下将不起作用。
6
单片机的控制系统课程设计
表 3-3 实验要求定义的功能键与键码的对应关系
键码 (IOA8~IOA15)
功能键
0X88
0X84
0X82
0X81
0X48
0X44
0X42
0X41
0X28
0X24
0X22
0X21
0X18
0X14
0X12
0X11
7
8
9
F1
4
5
6
F2
1
2
3
F3
DEL
0
F4
ENt
数码管的显示时,比如第一次按数字键“1”时,SPCE061A 控制在最右面的数码管
上显示“1” ;第二次按数字键“4”时,把“1”显示在第五个数码管上,再在最
右边的数码管上显示“4”,以此类推,这样在视觉上来看,就是把原来的数字向左
移一位,再把数字键代表的数字显示在最右边的数码管上。当数码管上已经显示
“145”时,第一次按删除键时,数码管上显示的数字右移一位,在最左边的数码管
上显示“0”,即“1”显示在从右边数第二个数码管,“4”显示在最右边的数码管,
第二次按删除键时,数码管上显示的数字再向右移一位,在最左边的数码管上显示
数字“0”,即除“1”显示在最右边的数码管,其他的数码管都显示“0”,以此类推,
这样在视觉上来看,就是删除最右边显示的数字,把其他数字右移一位。
7
单片机的控制系统课程设计
3.5 硬件连接图
8