单片机课程设计外部脉冲计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
摘要:单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。本课程设计的指导思想是控制单片机实现从0到99的计数功能,其结果显示在两位一体的共阳极数码管上。
关键词:脉冲计数器数码管单片机
本设计基于单片机技术原理,以单片机芯片STC89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出脉冲,按下键就开始计数,并将数值显示在两位一体的共阳极数码管上。
1课题原理
PCB板上设置开始计数按键和清零按键,以上按键与89C52单片机的P1口连接,通过查询按键是否被按下来判断进行计数或者清零。若按下计数健,则单片机控制两位一体的共阳极数码管显示从00开始的数字,按下一次,则数字加一,一次类推;若按下清零键,则程序返回程序开始处,并且数码管显示00。
2 硬件及软件设计
2.1 硬件系统
2.1.1 硬件系统设计
此设计是在单片机最小系统的基础上进行开发和拓展,增加了按键电路和和数码管显示电路,由于单片机输出电流不足以驱动数码管发光,所以数码管需要驱动电路。我们采用了三极管对数码管电流进行放大,使电流大小达到要求值。
2.1.2 单元电路设计
基本框架如下图2.1
2.1基本框架
1.STC89C52芯片
STC89C52RC芯片包括: 8k字节
Flash,512字节RAM, 32位I/O口
线,看门狗定时器,两个数据指针,
三个16位定时器/计数器,一个6向
量2级中断结构,全双工串行口,片
内晶振及时钟电路。STC89C52RC芯片
可降至0Hz静态逻辑操作,时钟频率
0-80MHz,支持2种软件可选择节电
模式。空闲模式下,CPU停止工作,
允许RAM、定时器/计数器、串口、中
断继续工作。掉电保护方式下,RAM
内容被保存,振荡器被冻结,单片
机一切工作停止,直到下一个中断或
硬件复位为止。8位微控制器8K字节
在系统可编程。芯片如图2.4所示。
图2.4 STC89C52芯片
2.按键电路
K1键为启动键,K2键为清零键,K3键为计数键,通过按钮的连接,实现开始、计数清零功能,连接电路如图2.5所示。
图2.5 按键电路
3.复位电路
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图2.6所示:
图2.6复位电路
4.晶振电路
单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。时钟电路如下图2.7所示。
图2.7 晶振电路
5.数码管显示电路
选用的是两位一体的共阳数码管,将P0口分别接数码管的八段发光二极管,将电源VCC端口接经数码管位选三极管,构成显示电路。电路图如图2.8所示
图2.8 数码管显示电路
6.电平转换与PC机接口电路
电平转换电路,实现芯片与PC机的电压相匹配,同时实现与PC机之间的连接。电路图如图2.9所示
图2.9电平转换与PC机接口电路
2.2 软件系统
2.2.1 软件系统分析
1.单片机机器接口设计;
2.数码管显示电路设计,两位数码管显示;
3.按键取值电路设计,K1,K2,K3 分别控制计数器的开始,清零和加一。
2.2.2 流程图
外部脉冲计数器的软件流程图如图2.10
注:K1键是启动键;K2键是复位键;K3键是外部脉冲键。
K1键接P0口;K2键接P1口;K3键P2口.
图2.10 外部脉冲计数器的流程图
2.2.3 程序
汇编语言源程序:
ORG 0000H
LJMP START
ORG 0100H
START: JB P1.0 , START ;检查K1是否按下
LCALL DELAY1 ;消除抖动
JB P1.0,START
MOV R0,#0 ;个位清零
MOV R1,#0 ;十位清零
MOV DPTR,#DTAB ;表格首地址赋给DPTR,为后面显示做准备
JISHU: JNB P1.1,D3 ;检查K2否按下,如果按下则复位LCALL DISPLAY
JB P1.2,JISHU ;检查有没脉冲
LCALL DELAY1 ;消除抖动
JB P1.2,JISHU ;确认有脉冲
MOV DPTR,#DTAB ;表格首地址赋给DPTR,为后面显示做准备
CJNE R0,#9H,SMALL ;判断个位是否等于9,等于9则跳到SAMLL SMALL: JNC BIG ;判断是否大于9,大于9则跳到BIG INC R0
LCALL DISPLAY
AJMP JISHU
BIG: MOV R0,#00H ;个位清零
CJNE R1,#9H,D1 ;判断十位是否等于9
D1: JNC D3 ;判断是否大于9,大于9 则跳到D3 INC R1
AJMP JISHU
D3: MOV R0,#0 ;个位清零
MOV R1,#0 ;十位清零
AJMP JISHU ;循环计数
DISPLAY:CLR A ;显示程序
CLR P1.4
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A