单片机课程设计电子秒表Word格式文档下载.docx
- 文档编号:19993509
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:16
- 大小:418.31KB
单片机课程设计电子秒表Word格式文档下载.docx
《单片机课程设计电子秒表Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子秒表Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
其中8051是最早、最典型的产品,该系列其他单片机都是以8051为核心发展起来的,都具有8051的基本结构和软件特征。
8051单片机内部包含了作为微型计算机所必需的基本功能部件,各部件相互独立地集成在一块芯片上,其基本功能特性如下:
a、8位CPU;
b、32条双向可独立寻址的I/O线;
c、4KB程序存储器(ROM),外部可扩充至64KB;
d、12KB数据存储器(RAM),外部可扩充至64KB;
e、两个16位定时/计数器;
f、五个中断源;
g、全双工的串行通信口;
h、具有布尔运算能力。
其引脚排列如图:
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
管脚
备选功能
RXD(串行输入口)
TXD(串行输出口)
/INT0(外部中断0)
/INT1(外部中断1)
T0(记时器0外部输入)
T1(记时器1外部输入)
/WR(外部数据存储器写选通)
/RD(外部数据存储器读选通
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
(2)MAX7219芯片
MAX7219是7段共阴极LED显示驱动器,采用三线串行方式与8051通信。
MAX7219片内集成了BCD码到B码的译码器、多路复用扫描电路、LED字段和字位驱动电路及RAM存储器。
MAX7219可以驱动8个7段共阴极LED显示器,通过一个10KΩ左右的外接电阻可以设置所有LED的段电流。
MAX7219具有低电压保持,只要外接电压超过2V,便可以保存数据。
典型的DIP封装的MAX7219如图所示,
其各引脚的功能如下:
a、DID0——DID7:
8个字段驱动引脚;
b、SEGA-G,dp:
7段驱动和小数点驱动输出;
c、SEGdp:
小数点驱动输出;
d、CLK:
时钟输入,最高时钟频率为10MHz;
e、DIN:
串行数据输入。
在CLK时钟的上升沿,串行数据被移入MAX7219内部移位寄存器,移入时最高位在前;
f、DOUT:
串行数据输出。
输入到DIN的数据经过个时钟周期后,在DOUT端有效。
在CLK的下降沿数据移出;
g、ISET:
峰值段电流设置。
可以通过一个10KΩ的上拉电阻
来设置峰值段电流;
h、LOAD:
加载输入数据。
LOAD信号必须在第16个上升沿同时或之后,但在下一个时钟上升沿之前变高,否则将会丢失数据;
i、V+:
+5V外接电源;
j、GND:
接地,两个GND引脚必须接地。
2、硬件电路设计
(1)硬件原理图
(2)硬件电路设计
单片机最小系统
单片机最小系统做为整个系统的控制部分,其包含了晶振电路、复位电路、电源等。
外接晶振通过两个30pF的电容接地,同时采用了手动复位和上电复位两种复位方式。
该电路可以实现复位和程序运行的基本功能。
MAX7219驱动电路
MAX7219是七段共阴极LED显示驱动器,可以驱动8个七段共阴极LED显示器,这里用其来驱动2位的LED数码管,通过一个10KΩ左右的外接电阻可以设置所有的LED段电流。
A——DP分别驱动数码管的七段,DIG0、DIG1分别用来驱动LED数码管的两位,即个位和十位。
数码管显示
两位数码管用来显示0—99秒的数字。
独立按键
两个独立按键分别用来开始计时、时间锁定和复位,实现秒表的计时。
(4)总电路图
见下页
第二章软件设计
软件设计包括MAX7219芯片的初始化、向MAX7219芯片写指令函数、MAX7219驱动数码管显示函数、定时器初始化、中断等。
一、MAX7219寄存器及软件函数介绍
(一)MAX7219相关寄存器及数据格式
对于MAX7219芯片,串行数据以16位包的形式从DIN引脚串行输入,在CLK的每一个上升沿一位一位地送入芯片内部16位移位寄存器,而不管LOAD引脚的状态如何,LOAD引脚必须在第16个CLK上升沿出现的同时或之后,并在下一个CLK上升沿之前变为高电平,否则移入的数据将丢失。
16位数据包的格式如下:
D15
D14
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0
×
地址寄存器地址
寄存器数据
1、MAX7219的内部寄存器及其地址
MAX7219芯片通过D11——D8的4位地址位译码,可寻址内部14个寄存器,分别是8个显示位寄存器、5个控制寄存器和1个空操作寄存器。
如表1所示:
表1MAX7219内部寄存器及其地址
寄存器
地址
D15——D12
D11——D8
16进制代码
空操作
0000
0x0
数码管0
0001
0x1
数码管1
0010
0x2
数码管2
0011
0x3
数码管3
0100
0x4
数码管4
0101
0x5
数码管5
0110
0x6
数码管6
0111
0x7
数码管7
1000
0x8
译码方式寄存器
1001
0x9
显示亮度寄存器
1010
0xA
扫描范围寄存器
1011
0xB
停机寄存器
1100
0xC
显示测试寄存器
1111
0xF
2、五个控制寄存器
(1)译码方式寄存器
MAX7219的译码方式寄存器中,每一位与一个数字位相对应,如果对应位为逻辑高电平,表示改位使用B码译码,而逻辑低电平则表示改位不译码,如表2所示:
表2译码方式寄存器
含义
D7——D0
0—7不译码
00000000
00H
0位译成B码,7—1位不译码
00000001
01H
......
0—3位使用B译码,4—7位不译码
00001111
0FH
0—7位使用B译码
FFH
(2)亮度寄存器
MAX7219的亮度寄存器用于调节LED的显示亮度。
实际电路中,在ISET和电源正极之间连接外部电阻R来控制显示亮度。
R即可以是固定电阻,也可以是可变电阻,其最小值为Ω。
亮度寄存器中的数值表示了亮度的大小,共有16级亮度。
如表3所示:
表3亮度寄存器
亮度
1/32
0H
3/32
1H
5/32
2H
29/32
EH
31/32
FH
(3)扫描范围寄存器
MAX7219的扫描范围寄存器用于设置需要显示的数字位,其取值范围为1—8。
数据含义如表4所示:
表4扫描范围寄存器
显示数字位
第0位显示
000
第0——1位显示
001
第0——2位显示
010
第0——6位显示
110
6H
第0——7位显示
111
7H
(4)停机寄存器
MAX7219的停机寄存器用于停止LED显示。
当MAX7219处于停机工作方式时,扫描振荡器停止工作,LED所有的段都截止,此时LED不显示任何时数据。
数据格式如表5:
表5停机寄存器
工作方式
停机工作
正常工作
1
(5)显示测试寄存器
MAX7219的显示测试寄存器用于测试LED的好坏。
其有两种工作方式,即正常工作和显示测试。
正常工作模式即一般的扫描显示模式。
数据格式含义如表6:
表6显示测试寄存器
显示测试
3、数字寄存器
MAX7219的数字寄存器用于设置LED数码管的显示数字。
可直接寻址。
数字寄存器受译码方式寄存器的控制,可以选择B译码或不译码。
如果不译码,则数字寄存器中数据的D0——D6位分别对应7段LED显示器的A—G段,D7位对应LED的小数点DP。
某数据为为1,则点亮与改位对应的段,而如果数据为0,则改段熄灭。
如果使用B码译码,数字寄存器可将BCD码译成B码(0—9、-、E、H、L、P),如表7所示:
表7数字0—7寄存器
显示字符
点亮段
D7——D6D3D2D1D0
DPABCDEFG
0000
1111110
0001
0110000
2
0010
1101101
3
0011
1111001
4
0100
0110011
5
0101
1011011
6
0110
1011111
7
0111
1110000
8
1000
1111111
9
1001
1111011
_
1010
0000001
E
1011
1001111
H
1100
0110111
L
1101
0001110
P
1110
1100111
暗
1111
0000000
其中,小数点位DP由D7控制,D7=0时,熄灭小数点,D7=1时,点亮小数点。
本程序将小数点熄灭。
(二)向MAX7219芯片写指令函数
本程序中定义了向MAX7219芯片写指令函数,在MAX7219芯片的初始化中要调用向MAX7219芯片写指令函数,该函数有两个形参add和dat,分别代表MAX7219芯片的寄存器地址和数据内容,即16位数据包的高8位和低8位。
在控制寄存器中add为控制寄存器的地址,dat为控制寄存器中的数据内容;
在数字寄存器中add对应的实参是数组address[],dat对应的实参是数组dat[],address[]分别取数字寄存器0—7的地址,dat[]分别取数字0—7的16进制编码。
(三)MAX7219初始化函数
MAX7219初始化函数主要是对5种控制寄存器的初始化,即设置5种控制寄存器的状态及数据格式。
这里设置译码方式寄存器为使用B码译码方式,所以译码方式寄存器数据为0xff;
显示亮度为11/32,所以亮度显示寄存器数据为0xf5;
扫描范围为第0—1位数字显示,所以扫描范围寄存器数据为0x01;
设置MAX7219为正常工作方式,所以停机寄存器数据为0x01;
设置MAX7219为正常工作而不是显示测试工作方式,所以显示测试寄存器数据为0x00。
(四)MAX7219驱动数码管显示函数
该函数将计数值的十位和各位分开分别送人MAX7219数字寄存器的第0位和第1位。
(五)定时器及中断初始化
本实验软使用的是定时器T0作计时器,每10ms发生一次中断,每100次中断为1s,定时器设置为工作方式1,中断时间
,其中
,所以初值
,装入初值TH0=d8H,TL0=efH。
二、程序流程图
三、程序
#include<
>
#defineucharunsignedchar
#defineDECODE0x09
单片机原理及应用——基于C51编程的Proteus仿真案例[M].
北京:
高等教育出版社,
[2]赵建领.精通51单片机开发技术与应用实例[M].北京:
电子工业出版社,
[3]张兰红.单片机原理及应用[M].北京:
机械工业出版社,
[4]郭天祥.新概念51单片机C语言教程——入门、提高、开发、拓展全攻略[M].北京:
电子工业出版社,2010
[5]刘焕平,童一凡.单片机原理及应用[M].北京:
北京邮电大学出版社,2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 电子 秒表
![提示](https://static.bdocx.com/images/bang_tan.gif)