采用单片机的手动计数器设计.docx
《采用单片机的手动计数器设计.docx》由会员分享,可在线阅读,更多相关《采用单片机的手动计数器设计.docx(18页珍藏版)》请在冰豆网上搜索。
采用单片机的手动计数器设计
课程设计
题目采用单片机的手动计数器设计
1、AT89S51芯片简介……………………………………………………………
2、AT89S51芯片封装及引脚功能………………………………………………
3、手动计算器的功能与设计方案………………………………………………
3.1手动计数器的功能与设计要求…………………………………………………
3.2计方案的确定……………………………………………………………
4、手动计算器的硬件设计………………………………………………………
4.1手动计算器的硬件系统框架………………………………………………
4.2手动计数器的主机电路设计…………………………………………………
4.3硬件电路原理图………………………………………………………………
5、手动计算器的软件系统设计………………………………………………
5.1软件系统设计………………………………………………………………
5.2基于ASM51汇编的源程序…………………………………………………
5.3基于C51的源程序…………………………………………………………
6、系统的组装与调试………………………………………………………………
6.1硬件系统组装与调试…………………………………………………………
6.2软件调试………………………………………………………………………
7、总结与心得体会…………………………………………………………………
8、参考文献………………………………………………………………………
9、附录…………………………………………………………………………………
1、AT89S51芯片简介
AT89S51是美国ATMEL公司产生的第功耗,高性能CMOS8为单片机,片内含4Kbytes的可系统编程的FLASH程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价为AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。
2、AT89S51芯片图如下:
(1)AT89S51芯片封装
(2)功能特性概述:
AT89S51提供以下标准功能:
4K字节FLASH闪速存储器,128字节内部RAM,32个IO口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式;空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
(3)引脚功能说明:
VCC:
电源电压。
END:
接地。
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高组抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FLASH编程时,P0口接收指令字节,而在程序校验时,要求外接上拉电阻。
P1口:
P1是个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)
FLASH编程和程序校验期间,P1接收低8位地址。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路:
对端口写“1”,通过内部的上拉电阻把端口拉到感动哦电平,此时可作输入口,作输入使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
FLASH编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口,P3口输出缓冲级可驱动(吸收或输出电流在)4个TTL逻辑门电路:
对P3口写如“1”时,它们内部上电阻拉高并可作为输入端口,作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。
RST:
复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能,DISRTO的缺省位RESET输出高电平打开状态。
ALE/
:
当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低8位字节,即使不访问外部存储器,ALE乃以时钟振荡器频率的1/6输出固定的正脉冲信号,因此它可以对外输出时钟或用于定时目的。
更重要的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于编程脉冲(
)。
如有必要,可通过对特殊寄存器(SFR)区中的8EH单元的D0位置为,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
:
程序存储允许(
)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次
有效,即输出两个脉冲。
当外部数据存储器,没有两次有效的
信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H——FFFFH),EA端必须保持低电平(接地)。
需注意的是,如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
FLASH存储器编程时,该引脚加上+12V的编程电压VPP。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
WDT:
看门狗定时器。
WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它在一个14bit计数器和看门狗复位SFR(WDTRST)构成。
外部复位时,WDT默认为关闭状态,要打开WDT,用户必须按顺序将OIEH和OELH写到WDTRST寄存器(SFR地址为(0A6H),当启动WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。
(4)中断
AT89S51共有5个中断向量:
2个外中断(INT0和INT1),2个定时中(Timer0和Timer1)和一个串行中断,这些中断如表(P3口的第二功能)。
这些中断源各自的禁止和是能位参见特殊功能寄存器的IE。
IE也包含总中断控制位EA,EA清0,将关闭所有中断。
值得注意的下表中的IE6和IE5没有定义,用户不要访问这些位,它是保留位以后的AT89产品作扩展用途。
定时器0和定时器1的中断标志TF0和TF1,它是定时器溢出时的S5P2时序周期被置位。
该标志保留至下个时序周期。
3、手动计算器的功能与设计方案
3.1手动计数器的功能与设计要求
在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示。
3.2设计方案的确定
可以从以下的几个方面来确定手动计数器的设计方案
1)微处理器
采用ATMEL的AT89S51微处理器,通过使用单片机的定时或计数的功能实现。
2)显示电路
该显示电路可采用液晶显示或数码管显示。
对于一般的段式液晶屏,需要专门驱动电路,而且液晶显示作为一种被动显示,可视相对较差;对于具有驱动电路和微处理器接口的液晶显示模块,一般多采用并行接口,对于微处理器的接口要求较高,占用资源多。
另外,89S51本身无专门的液晶驱动接口,因此,本电路采用数码管作为一种主动显示器件,具有亮度高、价格便宜等优点,而且市场上也有专门的时钟显示组合数码管。
3)按健电路
本电路只设一个按健:
按下SP1健进行计数,计数满时,又从零开始计数。
4、手动计算器的硬件设计
4.1手动计算器的硬件系统框架
4.2手动计数器的主机电路设计
1)系统时钟电路设计
系统时钟电路设计如图所示。
对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。
但由于图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本闹钟系统的实际应用中一定要注意正确选择参数(30+/-10PF),并保证电路的对称性,选用正牌厂家生产的瓷片或云母电容,如果可能的话,温度系数要尽可能低。
2)系统复位电路设计
复位电路一般应有手动或上复位电路。
复位电路的实现通常有两种方式:
即专用uP监控电路和RC复位电路。
前者电路实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。
对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。
本系统采用的是RC复位方式。
RC复位电路的实质是一阶充放电路,现结合如下图所示说明这种电路复位电路的特点。
系统上电时该电路提供有效的复位信号RST(高电平)直至系统电源定后撤消复位信号(低点平)。
从理论上说,51系列单片机复位引脚只要保证t=RC>2M(机器周期)便可。
但在实际设计中,通常C1取值为10uF以上,R1通常取值10KΩ左右。
实践发现,R1如果取值太小,例如1KΩ,则会导致RST信号驱动能力变差而无法使系统可靠复位。
3)按键电路设计
按键电路设计参见系统原理图中的SP1对应的部分,按键电路设计中关键考虑的就是按键去抖动问题,一般硬件去抖和软件去抖动两种方式。
过去硬件去抖电路通常采用分立元件或触发器实现,目前市场上已有硬件去抖专用接口芯片,例如:
MAXIM公司MAX6816~6818,均为单电源供电,电压为2.7~5.5V,分别为单输入、双输入和八输入,输出端具有欠压锁定功能。
这里考虑到系统的硬件简化和成本,没有采用硬件去抖,而采用软件去抖。
4)手动计数器的显示电路设计
显示电路采用共阴极数码管,电路图如下:
4.3硬件电路原理图
1)利用单片机来制作一个手动计数器,硬件电路图如图所示。
2)系统板上硬件连线
(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:
P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;
(3.把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;
5、手动计数器的软件系统设计
5.1软件系统设计
程序框图:
5.1基于ASM51汇编的源程序
CountEQU30H
SP1BITP3.7
ORG0
START:
MOVCount,#00H
NEXT:
MOVA,Count
MOVB,#0AH
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVA,B
MOVCA,@A+DPTR
MOVP2,A
WT:
JNBSP1,WT
WAIT:
JBSP1,WAIT
LCALLDELY15MS
JBSP1,WAIT
INCCount
MOVA,Count
CJNEA,#64H,NEXT
LJMPSTART
DELY15MS:
MOVR6,#14H
D1:
MOVR7,#F8H
DJNZR7,$
DJNZR6,D1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
5.2基于C51的源程序
#include
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsignedcharCount;
voiddelay10ms(void)
{
unsignedchari,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
voidmain(void)
{
Count=0;
P0=table[Count/10];
P2=table[Count_];
while
(1)
{
if(P3_7==0)
{
delay10ms();
if(P3_7==0)
{
Count++;
if(Count==100)
{
Count=0;
}
P0=table[Count/10];
P2=table[Count_];
while(P3_7==0);
}
6、系统的组装与调试
系统组装与调试分为硬件的组装调试和软件的调试。
硬件的组装与调试侧重于原理设计
正确性验证和印刷电路板的工艺性错误的检测(如:
过孔不通、线间粘连等);软件的调试则侧重于子模块的功能验证和模块与模块的接口配合。
6.1硬件系统组装与调试
硬件组装前首先要仔细核对硬件系统设计原理的正确性,包括参数选用的正确性和原理的正确性,这取决于设计者的学识和经验积累。
对没有把握的电路可以通过在通用实验板上直接焊接实际电路来进行实物调试和验证。
在系统通过理论分析后,便可进行印刷电路设计和加工。
一般而言,印刷电路板加工企业的质量是有保证的,但也不排除个别企业加工的印刷电路板出现工艺缺陷的情况。
因此在调试前,必须首先进行工艺排错,这对于第一块样板的调试更是必不可少的环节。
调试分为断电调试和通电调试。
1.断电调试
为安全起见,首先必须进行断电调试。
断电调试的内容至少包含短路检测和原理正确性确认。
1)短路检测
2)原理正确性确认
2.通电调试
1)系统时钟是否起振
2)逻辑笔法
3)示波器法
6.2软件调试
结构化软件的调试一般可以将重点放在分模块调试上,统调是最后一环。
软件调试可以采取离线调试和在线调试两种方式。
前者不需要硬件仿真器,借助于软件仿真器即可;后者一般需要仿真系统的支持。
当然,对于经验丰富的开发者,可以不要仿真器,直接将程序代码烧录到芯片,直接通电实验,观察关键现象。
7、总结与心得体会
通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。
使之不断地战胜自己,超越前人。
同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
这个设计过程中,我遇到过许多次失败的考验,就比如,自己对实际生活中常见的那些电路看似很简单,但等到自己轻手做的时候,总是有这样那样的错误。
在这次设计中,印象最深刻的就是画PCB板图,以前学的Protel99软件中的布局布线好多都忘了,现在用起来比较生疏,通过自己不断的看书查阅,基本能构掌握下来,巩固了Protel软件的使用。
还有就是在做硬件的时候,比如焊接元器件,也要考虑到线路的美观和焊点的圆滑。
这些基本的小问题也是需要注意的,还有就芯片的引脚插进去要小心,以免把脚弄断了。
还有芯片下程序的时候,需要考虑到按键的去抖动问题,所以就需要考虑延时,一般只需延时10ms~20ms就可以了,通过这次课程设计,我觉得过程是最重要的,在设计过程中遇到的困难并能去够解决它,对我个人而言就是一次成功,也是一次很大的进步。
相信自己在以后的课程设计中更能吃一堑长一智
8.参考文献
1.李广弟,朱月秀,冷祖祁编著单片机基础(3版)北京:
北京航空航天大学出版社20XX年6月
2.及力编著Protel99SE原理图与PCB设计教程—北京:
电子工业出版社20XX年1月
3.《单片机原理与应用技术》主编:
苏家健等高等教育出版社出版
10、附录
1.Protel99电路原理图:
2.Protel99PCB板图:
3.Protel99印刷电路板图: