硬件实习淮阴工学院统计按键次数文档格式.docx
《硬件实习淮阴工学院统计按键次数文档格式.docx》由会员分享,可在线阅读,更多相关《硬件实习淮阴工学院统计按键次数文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
本次实习为计数器的应用,利用定时器/计数器0实现按键次数的统计功能,即利用单片机内部定时的功能达到技术的效果。
本次课程实习主要对89C52单片机进行了研究,对89C52单片机内部结构有一个感性的认识,利用89C52单片机内部的定时/计数功能,通过LED灯的亮灭更加形象生动。
并一同设计复位电路,达到按键按下使定时器停止计时和开始计时的效果。
为达到上面的功能,主要用到了89C52单片机内部的定时器0、工作方式2,以晶振12MHz,以此达到所要求的效果。
关键词:
单片机;
计数器;
89C52
1课题综述
1.1课题意义
此次选的题目不是很难,但是这也是一次实践,可以为我们带来很多益处,更可以提高我们自己的动手能力,受益匪浅:
(1)可以使我们增进对单片机电路的感性认识,加深对理论方面的理解。
(2)可以使我们掌握软硬件的有关知识等。
(3)可以使我们掌握软硬件设计过程、方法及实现,为以后设计和应用打下基础。
(4)培养我们学生的创造力和小组的团结合作能力。
(5)可以培养我们综合运用专业及基础知识,解决实际工程技术问题的能力。
(6)查阅图书资料各种工具书的能力,加深了我们对单片机这们课的认识。
(7)提高了我们工程绘图和识图的能力。
(8)增强了我们写技术报告和编制技术资料的能力。
(9)加深了我们对计数器工作原理和组成器件的认识。
1.2预期目标
利用AT89C52单片机的P1.0—P1.7做输出口,接八只发光二极管,用单片机的T0做为按钮开关。
编写程序,读编码开关状态,使发光二极管有计数显示效果。
编写程序,调试运行,一次按下按钮开关,接P1.0—P1.7的二极管一次发光。
并且起到能够计数的功能,即亮一次计数器就加一。
2系统分析
2.1涉及的基础知识
2.1.1AT89C52的引脚及功能
单片机AT89C52的引脚图如2-1所示
图2-1AT89C52引脚配置
AT89C52单片机芯片的40条引脚功能为:
主电源引脚VCC和VSS,VCC——(40脚)接+5V电压,VSS——(20脚)接地。
外接晶体引脚XTAL1和XTAL2,XTAL1(19脚)接外部晶体的一个引脚。
XTAL2(18脚)接外晶体的另一端。
控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP,RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
ALE/PROG(30脚):
当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
PSEN(29脚):
此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
EA/VPP(引脚):
当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。
输入/输出(I/O)引脚P0、P1、P2、P3(共32根)P0口(39脚至32脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
P1口(1脚至8脚):
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P2口(21脚至28脚):
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
P3口(10脚至17脚):
是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。
P3能驱动(吸收或输出电流)4个LS型的TTL负载
2.1.2定时/计数器的结构
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;
TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
TMOD用于设置其工作方式;
TCON用于控制其启动和中断申请。
工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
2.1.3定时方式选择寄存器(TMOD)
本次设计用到了计时器0,而TMOD寄存器用于设定定时器/计数器的工作方式。
寄存器地址为89H,但他没有位地址,不能进行位寻址,只能用字节传送指令设置其内容。
该寄存器位定义如表3-1所示:
表2-1TMOD寄存器
B7H
B6H
B5H
B4H
B3H
B2H
B1H
B0H
GATE
C/T
M1
M0
B7H~B4H:
定时器/计数器1
B3H~B0H:
定时器/计数器0
位定义如下:
GATE:
门控位。
M1M0—工作方式选择。
M1M0=00,工作方式0;
M1M0=01,工作方式1;
M1M0=10,工作方式2;
M1M0=11,工作方式3.
2.1.4定时器/计数器的工作方式2
本设计使用的是定时器/工作方式2,即使方式寄存器TMOD中M1M0=10时,设置为工作方式2,定时器/计数器设置为可自动装载计数初值的8位定时器/计数器,在这种方式下,TL0(TL1)被定义为计数器,TH0(或TH1)被定义为赋值寄存器,其逻辑结构图如图2-2所示,当计数器TL0计满产生溢出时,不仅使溢出标志TF0置1,同时还自动打开TH0和TL0之间的三态门,使TH0的内容重新装入TL0中,并继续计数操作,TH0的内容可通过编程预置,重新装载后其内容不变,因而用户可省去重新装入计数初值的程序。
图2-2定时器/计数器0工作方式2的逻辑结构
2.1.5复位电路
目前,在单片机系统中使用过4中类型的复位电路,分别为:
积分电路型、微分电路型、比较器型和看门狗型。
其中前3种是在芯片外面用分立元件或集成电路芯片搭建,而最后一种位于芯片内部,是单片机芯片的一部分。
对于片外复位电路,无论那种类型,加电复位和手动复位都是必不可少的基本功能。
本次设计用到了积分型电路。
积分型复位电路实在积分电路的基础上形成的,用于产生低电平复位信号。
图2-3是最基本的也是这次设计使用到的复位电路。
图2-3
2.2解决的基本思路
利用AT89C52单片机内部的计数器0、工作方式2进行设计定时器,并相应的设计一复位电路。
即TMOD=00000110。
2.3总体方案
利用AT89C52单片机内部的定时器0、工作方式2进行设计定时器,并相应的设计一复位电路。
利用一个按键起到计数器停止工作和开始工作的功能,编写代码实现计数器同济按键次数的功能,并且使二极管亮。
3系统设计
3.1原理图设计
图3-1
所用电子元器件单:
AT89C52:
1个;
电路板:
220欧姆电阻:
8个;
发光二极管:
电容(30pf):
2个;
晶振(12MHz):
按键:
1个。
3.2PCB设计
图3-2
3.3程序流程图
图3-3程序流程图
4代码编写
4.1汇编代码
这是我刚开始的想法,但是遗憾的是没有运行成功,被小组PASS掉了。
采用定时器/计数器0,工作方式2,晶振为12MHz的代码为:
ORG0000H;
程序入口地址
LJMPMAIN
ORG0100H;
MAIN入口地址
MAIN:
MOVIE,#00H;
禁止定时器中断
MOVTMOD,#02H;
设置计数器0为工作方式2
LOOP1:
MOVTH0,#FFH;
保存计数初值
MOVTL0,#FFH;
预置计数初值
JBP2.0,$;
判断开关是否还处于被按下的状态
JNBP2.0,$;
P2.0=0?
;
判断开关是否释放
SETBTR0;
启动运行控制
SETBEA;
中断总允许
SETBET0;
中断允许
ADDP2,#01H;
计数
END
4.2C代码
由于汇编代码刚开始没有运行成功,对汇编掌握也不是精通,与同组人员商量后运用C代码实现相应功能,具体C代码如下:
#include<
reg51.h>
unsignedcharcounter;
//定义无符号计数counter
voidmain(void)
{
counter=0;
//计数器赋初值0
P2=0x00;
//将P2口复信号00000000,灯灭
TMOD=0X06;
//设置工作方式2
TH0=256-1;
//高位置位11111111
TL0=256-1;
//低位置位11111111
ET0=1;
//中断允许
EA=1;
//中断总允许
TR0=1;
//启动运行控制
while
(1)//循环
P2=counter;
//赋值计数
}
voidcounter0(void)interrupt1using0
counter++;
//计数器累加
5实验Proteus仿真
图5-1Proteus仿真图
总结
回顾此次硬件实习,至今我仍感慨颇多,从理论到实践,整整一个星期的日子里,我学到了很多很多的东西,不仅仅巩固了以前所学过的知识,而且学到了很多在书本上所学不到的内容。
例如定时器的设计,书上虽然讲的很详细,但真正操作起来,却是很难,不仅要理解AT89C52引脚及其个个引脚的功能,还要对对这些引脚的地址和一些寻址方法要了解,仅仅这些还是不够,还要编写相应的程序进行调试,这才是最重要也是最能体现能力的地方。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践想结合起来,从理论中得出结论,才是真正的知识。
才能提高自己的实际动手能力和独立思考的能力。
还有一点,也是我觉得最重要的一点,就是团队的精神,团结、互助这些精神正是团队精神的核心,在这次实习中都有体现。
且同够这次设计,同学之间的默契跟好了,关系也随之升华了。
特别是在组长的带领下,每个人都在这次设计中发挥了自身的价值,都作出了自己的贡献。
在设计的过程中我也遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解的不够深,掌握的不够牢固,通过这次单片机课程设计,我对单片机有了更深一层的理解,也对单片机产生了浓厚的兴趣。
希望自己以后在单片机方面有一定的进步。
致谢
从大一到现在已经经历了好几次课程设计和实习,每次我的收获都很多。
实习是理论与实践相结合的体现,我们经常对课本上的知识不能充分的理解,一部分原因是因为课本上的知识比较抽象,往往不能被大多数人所接受,另外一部分原因是同学吗比较懒惰,一遇到不理解的问题就逃避,,而课程设计就弥补了这两个缺点。
同学们在做课程设计的时候,遇到不会的问题,会自觉的去查找资料,,解决所面临的问题。
这次课程设计是以分组的形式展开的,而且每组都有组长,我们组员在组长的带领下,每个人都有自己的事情做,没有一个人偷懒,都尽自己的能力在为设计努力着。
课程设计一方面还开发我们想象力的能力,例如本次设计中用户界面的设计,不同的人有不同方法,界面上控件有不同的格局,不同的菜单选项,每个控件所对应的功能也不一样,只要是自己做的东西,答辩时对老师问的问题就不会百口莫辩。
经过这次课程设计,对我的自学能力又进一步的提高,对书本知识的认识更加充分和深刻,同学之间团结互助的精神体现的淋漓精致,老师与同学之间的距离也更近了,交流也更多了。
师生之间的关系进一步得到了升华。
感谢学校给我们课程设计的机会,感谢老师对我们的谆谆教导,同时也要谢谢那些帮助同学的学生,他们不厌其烦的说明,感谢他们,感谢所有作出贡献的人!
参考文献
1李广弟,朱月秀,冷祖祁.单片机基础.第3版.北京:
北京航空航天大学出版社,2007.6
2张春光.微型计算机控制技术.北京:
化学工业出版社,2002
3楼然苗,李光飞.北京航空航天大学出版社,2002
4蔡美琴.MCS-51系列单片机系统及其应用.北京:
高等教育出版社,1992
5俞光昀.计算机控制技术.北京:
电子工业出版社,2002
6刘国荣.计算机控制技术与应用.北京:
机械工业出版社,2002