基于AT89S51单片机接口电路的时序仿真研究
侯进旺
(佛山职业技术学院,广东 佛山 528000)
摘要 :高阻态是数字电路接口器件一个重要的状态,是接口电路的硬件设计中容易忽视的一种状态。本文分析研究在某机床控制中74LS373接口芯片在单片机总线技术扩展I/O口时出现的总线冲突的时序仿真,使用接口芯片的高阻态可以有效解决多芯片I/O扩展时的总线冲突。
0引言
在基于单片机的工业产品控制电路设计中,输入输出通道电路通常较多地关心信号传输中输入输出通道的高、低电平,对高阻态关注较少。实际上硬件设计如果对芯片的高阻态不注意,将会造成控制电路中接口芯片短路烧毁。下面针对基于AT89S51单片机[1]总线技术进行I/O扩展时接口芯片74LS373高阻态的时序进行仿真分析研究。
1基于单片机I/O扩展接口电路的硬件设计
1.1基本扩展电路
接口芯片74LS373是一个三态8D锁存器,通常用于单片机的输入输出接口,其元件原理图和功能表如图1所示。
图174LS373原理图与功能表从图1功能表中知,当OE端为低电平,控制端LE为高电平时,输入D端的数据传送到输出端Q;当OE和LE同为低电平时,输出端Q保持原态(与输入D无关);当OE为高电平时,无论LE、D如何,输出均保持高阻态。
图2所示电路为基于单片机AT89S51总线技术和两片接口芯片74LS373进行I/O口扩展的电路[2]。U2扩展输出接口,U3扩展输入接口。U2和U3的接口地址分别为7FFFH和FEFFH。
在对图2电路进行PROTEUS[3]仿真时,设置输入开关的数据为01110110(76H),执行如下指令:
MOV DPTR,#0FEFFH
MOVX A,@DPTR ;读入U3开关数据
NOP
MOV DPTR,#7FFFH
MOV A,#55H
MOVX @DPTR,A ;向U2输出01010101
利用PROTEUS软件仿真得到基本电路图2的仿真时序图,如图3。从时序图中看出,在RD信号有效(低电平)之前,AD(0..7)(P0)数据为高阻态,说明在读U3时数据出现错误(正确应为FFH);在WR信号(低电平)前后,P0上的数据也为高阻态(正确应分别为FFH和55H),说明在U2输出时数据也出现错误;同时在对图2的电路仿真时,P0口的数据信号出现短路现象。图2基于单片机AT89S51总线技术和接口芯片
74LS373进行I/O口扩展的电路
分别对U2和U3执行输出和输入指令,通过时序分析知,U2的输出数据正确,U3的数据出现错误。
图5重新设计后电路的仿真时序图(下转第48页)1.2输入接口的扩展电路错误原因分析
从74LS373的功能表可以看出,当OE端保持在低电平,LE同时为低时,其输出保持原态,说明74LS373具有锁存功能。由于图2电路中U3的OE端常接地,使得总线始终被U3占领:当U3的LE为高时,芯片外部输入的开关信号送到芯片输出,当U3的LE为低时,其U2输出的数据状态被保持锁存,也就意味着数据总线P0口被U3保持在输入开关决定的数据。
事实上AT89S51单片机通过MOVX指令访问U2和U3时,先将U2和U3的口地址分别输出到P2口(高8位地址)和P0口(低8位地址),输出到P0的低8位地址数据可能与U3输入并保持的数据不同,从而造成P0口的数据冲突。
1.3解决数据冲突的方法
从上述分析可以看出,造成数据冲突的原因是输入芯片U3的OE端常接地,使得单片机数据总线始终被U3芯片占据。因此在硬件设计时应该避免单片机的总线始终被某一个芯片占据的现象。
事实上,从74LS373的功能表看,它还有一个高阻态,只要保证当单片机不访问U3时或者U3被访问而在寻址阶段时,使U3的输出端始终保持高阻态,这样就能避免数据冲突。
如图4为修改后的U3控制电路,OE信号由U4A或非门输出信号取反得到。仿真结果如图5所示。在执行读入U3的指令后,数据总线(P0)上的数据为76H;在执行输出U2指令后,数据总线(P0)上的数据为55H,输入输出结果正确。
2结论
通过以上分析和仿真,在基于单片机控制的电子电路设计中,时序的仿真分析是查找硬件电路错误的有效方法。
防止总线上数据冲突是硬件工程师在硬件电路设计中需要认真考虑的问题,而高阻态也是硬件电路设计中常用到的,这也是硬件工程师在电路设计中容易忽视的地方。
在使用单片机总线扩展I/O口时,常需要多个输入输出芯片时,正确运用接口芯片的高阻态是解决总线数据冲突的有效方法。
若接口芯片输出无高阻态控制,则该芯片不能用于输入接口扩展。在使用单片机总线技术扩展I/O口时,硬件设计必须要保证总线被单片机访问的接口芯片占据,而且不被访问的接口芯片与总线脱离。硬件设计时应该避免单片机的总线始终被某一个芯片占据。
参考文献
[1] 余永权.Atmel89 系列单片机应用技术[M].北京:北京航空航天大学出版社,2002.
[2] 高玉琴.单片机原理与应用及C51编程技术[M].北京:机械工业出版社,2011.
[3] 张靖武,周灵彬.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社,2007.
基于51单片机的电子时钟!内附开题报告模板、论文模板
基于单片机的数字式电子时钟设计
设计要求
1)设计AT89S51的最小系统;
2)LED显示电路及与AT89S51接口,LED数码块显示时、分、秒;
3)时钟调整电路及与AT89S51接口;
4)电子时钟程序设计;
5)基于Proteus的电子时钟原理及仿真实现;
6)电子时钟实物制作;
2 总体方案设计
2.1 实现时钟计时的基本方法
利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。
(1) 计数初值计算:
把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足(216-X)×1/12MHz×12μs =50000μs
X=15536→0011110010110000→3CB0H
(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);
(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。
2.2 电子钟的时间显示
电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
37H 36H 35H 34H 33H 32H 31H 30H
时十位 时个位 分隔 分十位 分个位 分隔 秒十位 秒个位
2.3 电子钟的时间调整
电子钟设置3个按键通过程序控制来完成电子钟的时间调整。
reset键复位
hour键调整时;
min键调整分;
2.4 总体方案介绍
2.4.1 计时方案
利用AT89S51单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。
2.4.2 控制方案
AT89S51的P0口和P2口外接由八个LED数码管(LED8~LED1)构成的显示器,用P0口作LED的段码输出口,P2口作八个LED数码管的位控输出线,P1口外接四个按键reset、hour、min构成键盘电路。
3 系统硬件电路设计
根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块
3.1单片机模块设计
3.1.1 芯片分析
AT89C51单片机引脚图如下:
MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下:
VCC:+5V电源。
VSS:接地。
RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。
XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
P0口:P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。
P2口:P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。
P3口:P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出,具体第二功能如表1所示。
3.1.2 晶振电路
右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
3.1.3 复位电路
单片机复位的条件是:必须使RST/VPD 或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12 MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。
3.2 数码显示模块设计
系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
3.3 按键模块
下图为按键模块电路原理图,reset为复位键,hour为时钟调控键,min为分钟调控键。
4、系统软件设计
4.1 软件设计分析
在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址,在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后,进入主循环。在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位清零等功能,系统总流程图如下图7:
图 7 系统总体流程图
4.2 源程序清单
ORG 0000H
MOV 30H,#1 设置时钟的起始时间12.00.00,分配显示数据内存
MOV 31H,#2
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
MOV TMOD,#01 启动计数器
XS0: SETB TR0 使 TRO位置1
MOV TH0,#00H 计数器置零
MOV TL0,#00H
XS:
MOV 40H,#0FEH 扫描控制字初值
MOV DPTR,#TAB 取段码表地址
MOV P2,40H 从P2口输出
MOV A,30H 取显示数据到A
MOVC A,@A+DPTR 查显示数据对应段码
MOV P0,A 段码放入P0中
LCALL YS1MS 显示1MS
MOV P0,#0FFH PO端口清零
MOV A,40H 取扫描控制字放入A中
RL A A中数据循环左移
MOV 40H,A 放回40H地址段内
MOV P2,40H
MOV A,31H
ADD A,#10 进位显示
MOVC A,@A+DPTR
MOV P0,A
LCALL YS1MS
MOV P0,#0FFH
MOV A,40H
RL A
MOV 40H,A
MOV P2,40H
MOV A,32H
MOVC A,@A+DPTR
MOV P0,A
LCALL YS1MS
MOV P0,#0FFH
MOV A,40H
RL A
MOV 40H,A
MOV P2,40H
MOV A,33H
ADD A,#10
MOVC A,@A+DPTR
MOV P0,A
LCALL YS1MS
MOV P0,#0FFH
MOV A,40H
RL A
MOV 40H,A
MOV P2,40H
MOV A,34H
MOVC A,@A+DPTR
MOV P0,A
LCALL YS1MS
MOV P0,#0FFH
MOV A,40H
RL A
MOV 40H,A
MOV P2,40H
MOV A,35H
MOVC A,@A+DPTR
MOV P0,A
LCALL YS1MS
MOV P0,#0FFH
MOV A,40H
RL A
MOV 40H,A
JB TF0,JIA 如果TF0为1时,则执行JIA,否则顺序执行
JNB P1.0,P100 为0则 转移到P100
JNB P1.1,P1000 为0则 转移到P1000
JNB P1.2,P10000 为0则 转移到P10000
AJMP XS 跳转到 XS
P100: MOV 30H,#0 清零程序
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
JIA: CLR TF0 TF0清零
MOV A,35H 秒单位数据到A
CJNE A,#9,JIA1 与 9进行比较,大于9就转移到JIA1
MOV 35H,0 秒个位清零
MOV A,34H 秒十位数据到A
CJNE A,#5,JIA10 与5进行比较,大于5就转移到JIA10
MOV 34H,#0 秒十位清零
P10000: JNB P1.2,P10000 为0则 转移到P10000
MOV A,33H 取分的个位到A
CJNE A,#9,JIA100 与 9进行比较,大于9就转移到JIA100
MOV 33H,#0 分的个位清零
MOV A,32H 分十位数据到A
CJNE A,#5,JIA1000 与5进行比较,大于5就转移到JIA1000
MOV 32H,#0 分的十位清零
P1000: JNB P1.1,P1000 为0则 转移到P1000
MOV A,31H 时个位数据到A
CJNE A,#9,JIA10000 与 9进行比较,大于9就转移到JIA10000
MOV 31H,#0 时的个位清零
MOV A,30H 时十位数据到A
CJNE A,#2,JIA100000 与2进行比较,大于5就转移到JIA100000
MOV 30H,#0 时的十位清零
AJMP XS0 转移到 XSO
JIA100000:
INC 30H 加1
AJMP XS0 跳转到 XS0
JIA10000:
CJNE A,#3,JIAJIA 与3进行比较,大于则转移到JIAJIA
MOV A,30H 将时的十位放到 A
CJNE A,#02,JIAJIA 与2进行比较,大于则转移到JIAJIA
MOV 30H,#0 时段清零
MOV 31H,#0
AJMP XS0 跳转到XSO
JIAJIA:
INC 31H 加一
AJMP XS0
JIA1000:INC 32H
AJMP XS0
JIA100: INC 33H
AJMP XS0
JIA10: INC 34H
AJMP XS0
JIA1: INC 35H
AJMP XS0
RET 返回
YS1MS: MOV R6,#9H 延时程序
YL1: MOV R7,#19H
DJNZ R7,$
DJNZ R6,YL1
RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H 共阳段码表
DB 040H,079H,024H,030H,019H,012H,002H,078H,000H,010H
END
5 系统仿真与实验测试
5.1 系统仿真
运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。
5.2 实验测试
电子时钟主要的设计要求是能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。
6 心得体会
单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料,问老师,在老师的帮助下,历时两个星期,解决一个又一个的困难,终于完成任务。
在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。另外,要非常感谢我的指导老师,是她指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。
我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。
附录
附录1 硬件电路总图
相关问答
英语翻译本论文介绍了 基于AT89 C51单片机 为核心的、以ADC0808...[最佳回答]ThispaperintroducesthebasedonAT89C51asthecore,toADC0808analog-to-digitalconversionchip...
怎么样往 单片机AT89S51 烧录程序-ZOL问答他是通过MAX232串口芯片来连接电脑与AT89S51单片机的P1.5,P1.6和P1.7端口,通过专门的ISP编程软件把.HEX(十六进制文件)或.BIN(二进制文件)文件下载到单片机里。...
c 51 的数据类型""idata,code,xdata,pdata""各对应 at89s51单片机 的哪些存储空间?idata对应于内部RAM00H~FFHcode对应于程序存储器的0000H~1FFFH(8K)如果扩展可寻址64K。使用MOVCxdata对应于外部RAM0000H~FFFFH(需要...
80c 51单片机 和 AT89S 52单片机的区别?51单片机和52单片机区别:1、种类不同:51系列单片机是指51内核,stc89c5X基本都是51内核的种类。2、大小不同:最后一个数字表示E2prom的大小,E2prom=X*4K,c...
【 单片机 试卷的几道题(求大神解答)选择:1.一个 单片机 应用系...[最佳回答]A、硬件去抖动B、软件去抖动C、硬、软件两种方法D、单稳态电路去抖动方法判断:1、AT89S51单片机只有2个外部中断源。(T)2、51系列单片机只有2...
求 AT89 C 51单片机 利用蓝牙控制四相五线步进电机程序?这个就是用串口蓝牙就可以了。。串口信号过来,根据标示位判断是否是信号1,然后通过单片机控制步进运行一周,在反向运行。。这个就是用串口蓝牙就可以了。。...
AT89S51单片机 的在线编程是什么意思? AT89 C51怎么编程?在线编程,就是在目标板上直接编程(或者产品板),就是方便修改。AT89C51没有这个功能。在线编程,就是在目标板上直接编程(或者产品板),就是方便修改。AT89C5...
AT89S51单片机 寻址范围?AT89S51单片机是16位计算机,寻址范围0000~0XFFFF。AT89S51单片机是16位计算机,寻址范围0000~0XFFFF。
AT89S51单片机 内部集成哪些外围功能部件?1、4kBytesFlash片内程序存储器;2、128bytes的随机存取数据存储器(RAM);3、32个外部双向输入/输出(I/O)口;4、2个中断优先级、2层中断嵌套中断;5......
为什么选择使用 at89 c 51单片机 ?选择使用at89c51单片机有如下优势:指令简单,易学易懂,外围电路简单,硬件设计方便,io口操作简单,无方向寄存器,资源丰富,一般设计足够用了,价格便宜、容...选...