按键计数器Word文档下载推荐.docx
- 文档编号:6175082
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:11
- 大小:141.44KB
按键计数器Word文档下载推荐.docx
《按键计数器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《按键计数器Word文档下载推荐.docx(11页珍藏版)》请在冰点文库上搜索。
硬件原理图及说明(20%)
程序流程图(20%)
程序清单(10%)
调试及结果分析(20%)
系统改进建议或者方案(10%)
格式规范(10%)
总分
1.设计功能
1.功能及技术指标要求
利用AT89S52单片机来制作一个手动按键计数器。
2.设计内容
在AT89S512单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阳数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阳数码管,作为00-99计数的十位数显示。
3.设计思路及关键技术
一个完整00~`99手动计数器想当于一个简单的单片机系统,该系统设置电路、单片机、显示电路等构成。
单片机是集成IC芯片,只需根据实际设计要求选型。
其他部分都需要根据应用要求和性能指标自行设计。
2.系统方案
1.硬件设计思路
00-99加计数器硬件系统主要由AT89S52单片机,数码管,电容,电源等元件组成,利用单片机的P0口、P1口作为输出端,来控制数码管的显示,通过单片中烧入程序,然后利用P3.7口作为输入端,通过点动控制实现开关量的控制和计数,然后再通过数码显示器显示出来。
通过调试仿真从而实现00-99加计数。
2.软件设计思路
实现00-99计数功能,子程序实现将高低电位转化为数码管的十进制数字,实现手动开关计数。
通过手动给脉冲信号,实现计数,再加到99时,在手动给脉冲时,回到初始状态00,从而实现00到99加计数。
3.系统框图
图1系统框图
3.硬件电路
1.所用芯片AT89S52
2.管脚说明:
①电源引脚
Vcc(40脚):
典型值+5V。
Vss(20脚):
接低电平。
②外部晶振
XTAL1、XTAL2分别与晶振两端相连接。
③输入输出口引脚:
P0口:
I/O双向口。
作输入口时,应先软件置“1”。
P1口:
P2口:
P3口:
④控制引脚:
RST、ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。
RST(9脚):
复位信号输入端(高电平有效)。
ALE/-PROG(30脚):
地址锁存信号输出端。
3.AT89C51单片机的P口特点:
P0口:
是一个8位漏极开路输出型双向I/O端口。
作为输出端口时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,在访问期间将激活内部的上拉电阻。
P1口:
P1口是一个带有内部上拉电阻的8位双向I/O端口。
P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
P2口:
P2口是一个带有内部上拉电阻的8位双向I/O端口。
P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
在访问外部程序存储时和16位外部地址的外部数据存储器(如执行MOVX@DPTR)时,P2口送出高8位地址。
在访问8位地址的外部数据存储器(如执行MOVX@RI)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
P3口:
P3口是一个带有内部上拉电阻的8位双向I/O端口。
P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
4.排阻
所谓排阻就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚。
其余引脚正常引出。
所以如果一个排阻是由n个电阻构成的,那么它就有n+1只引脚,一般来说,最左边的那个是公共引脚。
它在排阻上一般用一个色点标出来。
排阻一般应用在数字电路上,比如:
作为某个并行口的上拉或者下拉电阻用。
使用排阻比用若干只固定电阻更方便。
5.
电路总原理图
图2电路总原理图
4.软件设计
软件设计的程序流程图如图3所示。
1.程序流程图
图3流程图
2.程序代码
#include<
reg51.h>
sbitk1=P3^7;
unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voiddelay(unsignedintt)
{
unsignedinti,j;
for(i=0;
i<
t;
i++)
for(j=0;
j<
114;
j++);
}
voiddisplay(unsignedintnum)
unsignedcharge,shi;
shi=num/10;
ge=num%10;
P0=table[shi];
P2=table[ge];
voidmain()
{
unsignedinttemp;
while
(1)
{
if(k1==0)
delay(10);
{
temp++;
while(!
k1);
if(temp==99)temp=0;
}
display(temp);
}
}
5.安装调试
硬件调试是通过万用表对时钟电路,按键复位电路,以及电源,按键,显示电路进行测试,测试各节点有无电流通过,焊点有无重合、断点。
软件调试是通过对程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
先在keil4中为所编的程序设置环境,然后输入程序检测并编译,之后用Proteus将编译好的程序输入到已设计好的电路的AT89s52中,开始模拟调试。
进一步修改,完成设计,最后调试成功,如图所示。
按键加计数一直加到63。
图4调试测试图
6.系统改进方案
本次设计的按键数码管计数器用了单片机P0口,P2口,占用了16个I/O并行口,有点浪费并口资源,所以我们可以用芯片164来实现串并转换,这样可以大量节省资源,并且在原来的基础上可以加入相应传感器制作成红外传感计数器,每当有一次红外感应时可以计一次数,可以在药品的罐装,食物的数量统计领域应用,并且加入多个按键,组成‘开始’‘结束’‘暂停’等多功能计数器。
7.总结
通过一周的单片机课程设计,让人感受颇深,虽然有关于单片机的知识,但更重要的是团队合作。
刚开始时,我们有点迷茫,我懂得知识理论的知识但要实际操作,总是有差距的,虽然对于我们来说有一定的难度,但是我们经研究从最简单的编程开始,对于80C51单片机的编程,我们使用的是我们所学汇编语言,结合自己所学的及寻找大量资料,我们几个拟定了初步的程序,然后进行修改及用Keil4软件进行调试,然后进一步修改,最终在我们努力下,完成了程序。
结束了软件,我们开始进行硬件,我们用Proteus软件进行绘图和仿真,在这一过程中,我们对该软件有了进一步的认识,与此同时,我们从中也学会了许多关于软件方面的知识。
在仿真过程中,我们遇到一些问题,如:
连线的问题、数码管不显示但通电、寻找合适的器件等问题,但在我们小团队的学习、查询问题缘由、及努力、老师的帮助下,这些问题都一一得到解答。
最终在我们的努力及精诚合作下,我们完成了我们的00-99加计数器课程设任务。
通过这次的课程设计作品的制作让我对单片机的理论有了更深入的了解,同时在具体的制作过程中我们发现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方面问题,这让我们无法根据书上的理论就轻易的得到预想中的结果,有时甚至差别很大。
通过这次实践使我们更深刻的体会到了理论联系实际的重要性,我们今后学习工作中会更加注重实际,避免成为只会纸上谈兵。
附录:
参考文献:
[1]张国锋.主编.单片机原理及应用.北京:
机械工业出版社,2009.8
[2]皮大能,南光群,刘金华编著.单片机课程设计指导书.北京:
北京理工大学出版社,2010.7
[3]张靖武,周灵斌编著.单片机原理、应用与PROTEUS仿真北京:
电子工业出版社,2008.8
[4]林立,张俊亮,曹旭东等编著.单片机原理及应用.北京:
电子工业出版社,2009.7
元器件清单:
元件名称
型号
数量/个
用途
单片机
AT89S52
1
控制核心
晶振
12MHZ
晶振电路
电容
30pf
2
排阻
Respack9
上位电阻
电阻
10k
复位电路
按键开关
BUTTON_1
发出信号
数码管
7SEG-MPX1-CC
显示电路
1K
电解电容
10uF
BUTTON_2
排针
若干
连接
排线
小组成员任务及安排:
刘富强:
主要负责查找资料,软件的设计以及调试,文档的撰写。
姜子龙:
主要负责硬件电路的焊接,PPT的制作以及答辩。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 按键 计数器