Mcs-51简洁通用I/O通道设计与实现
2011-11-04李模刚
李模刚
(兰州石化职业技术学院信息处理与控制工程系甘肃兰州730060)
Mcs-51简洁通用I/O通道设计与实现
李模刚
(兰州石化职业技术学院信息处理与控制工程系甘肃兰州730060)
以proteus仿真软件为平台,使用简洁I/O通道电路设计为手段,能使学生透切理解单片机系统的实用译码电路部分,建立指令与硬件信号之间的简洁关系;使学生真正理解实用端口寻址设计,为后续课程的教学打下扎实的基础。提出简洁I/O通道电路基本框架,以供实际应用参考。
Mcs-51;译码电路;I/O;Proteus;仿真
0 引言
目前,在很多高等职业学院的信息技术类相关专业中都开设了不同类型的单片机课程及实践课程或微机原理与接口技术课程,这类课程属于理论和实践紧密结合的学科,在教学过程中必须考虑软件与硬件相结合。经过多年的教学和应用实践了解到,在传统课程教学中,由于实验条件等多方面原因所限,高职学生对于控制通道的译码电路理解不透,知之不深;输入输出的通道概念很难真正建立起来,对端口寻址真正理解不透。因而造成了学生应用不灵活、后续课程教师感到难教的局面。经过实践探索发现利用Proteus仿真软件,设计一简洁的通用I/O通道,很有助于学生理解微机I/O应用的相关知识,增强理论与实践的教学效果,为后续课程打下坚实的基础[1-3]。Proteus不仅能完成许多单片机的仿真实践,而且5.0版本具有仿真的8086CPU,也可完成8086系统仿真,为8086系列课程的教学也提供了仿真实践平台。本文主要探讨基于ms-51的简洁通用I/O通道电路的设计与实现,以此为参考,可探索其他单片机及微机系统的I/O通道电路的设计。
1 时序分析
要设计好一个I/O通道电路,须对相关时序图仔细分析。图1、图2分别是mcs-51读、写外部RAM的指令时序图[4]。
图1 读外部RAM的指令时序图
图2 写外部RAM的指令时序图
从时序图中可看出,P0口提供低8位地址,P2口提供高8位地址,第一周期的S2结束前,P0口上的低8位地址是有效的,之后出现在P0口上的信号不是地址信号,而是指令数据信号,当然地址信号与指令数据信号之间有一段缓冲的过渡时间。这种情况说明,如果需要使用低8位地址在译码电路中参与译码,要求在第一周期的S2其间用ALE选通脉冲去控制锁存器必须把低8位的地址信号锁存起来;如果不使用低8位地址在译码电路中参与译码,可以不用锁存这些地信号。P2口只输出高8位地址信号,而没有指令数据信号,整个机器周期地址信号都是有效的,因而无需锁存这一地址信号。
2 电路设计
电路中可使用P0口的引线来设计通用数据总线,作为所有数据的输入输出的物理通道。如果实际应用中使用的I/O端口少于8个,可用P2口单根地址线、RD线、WR、74ls32形成简单的译码电路(如图3)。在译码电路部分中,利用WR和相关地址线输入74ls32,进行“相与”运算后形成一个上升沿,作为74ls273的锁存信号,输出数据;利用RD线来和相关地址线输入74ls32,进行“相与”运算后形成一个低电平,作为74ls373的选通信号,及时输入数据。这些74ls32的输出,就是I/O通道的选择信号,这样形成了三个一般I/O端口;这三个I/O端口,由于选用的高位地址的不同,端口地址分别可编定为:0b4fH,7f5bH,0cf06H;其中地址的低8位4fH,5bH,06H分别为通道编号的段选码。当然,也可以编定其它地址,但是应该以通道的互不干扰为前提。
图3 简洁通用I/O通道设计
图3中上面两个数码管的数字由程序输出的段选码确定,段选码由输入单片机的左下侧开关量经指令运算形成。右下侧的数码管显示的是MCS51中运行程序正在进行读写的I/O通道编号;I/O通道编号的段选码特殊输出通道中,使用74ls373暂存,74ls273长时间自于movx指令的低8位地址,从而使数码管能有一个稳定的显示;74ls373的锁存信号是ALE产生的高电平,74ls273的锁存信号来自于WR或是RD的上升沿。
以上设计获得了三类通道。
1类输入:外部信号通过1号端口到P0口的输入通道;
2类输出:P0口通过2、3号端口形成的输出信号的输出通道;
3类输出:P0口通过74ls373、74ls273和形成的输出信号的输出通道。
3 程序设计
相应示例控制程序如下:
org 00h
ajmp main
org 30h
main:mov dptr,#0cf06h;准备输入端口1地址;输出通道编号1的段选码。
movx a,@dptr;输入开关量(段选码)输入。
mov dptr,#7f5bh;准备输出端口2地址;输出通道编号2的段选码。
movx@dptr,a;输出开关量(段选码)并显示。
cpl a;取反开关量(段选码)。
mov dptr,#0bf4fh;准备输出端口3地址;输出通道编号3的段选码。
movx@dptr,a;输出取反开关量(段选码)并显示。
ajmp main
end
本程序仅仅是个示例。在相应实践中,可设计功能更强的控制程序。
4 系统调试与实践
在Proteus经编译后,运行正常,达到I/O通道电路的实际要求,相应数码管显示稳定,完全可应用于教学实践。
在调试过程中,学生可以通过开关量的设置,来获得1、2通道的显示,从而明白数据是怎么通过P0传送的,弄清各类硬件信号是怎么在程序的控制下输入单片机,怎么在程序的控制下从指令数据到硬件的,从而弄清1类输入和2类输出之间的关系。
通过P2口地址线与74ls32的连接关系,弄清指令中地址与端口锁存信号之间的对应关系;进而引起学生对端口锁存信号形成的思索,实践教学中,确有大量学生探索并提问相关问题,从而理解了简洁I/O通道的基本构建方法。
学生进一步的思考,是通道编号的段选码输出并显示,适当的修改端口地址的低8位(段选码),可以改变右下角数码管的显示数字,完成对整个输入输出通道的整体认识,从而弄清1类输入、2类输出与3类输出之间的关系。
此I/O端口设计便于高职学生理解硬件端口地址与指令中地址的一致性,为后续的可编程芯片的实践与应用打下了坚实的基础。在这样的实践教学中,多次的探索与修改使学生从根本上理解了简洁I/O通道的作用和实质,激发了学习的热情,慢慢地感受到成就感,产生强烈的专业认同感,增强就业核心竞争力。
5 结束语
通过上述阐述,可知微机原理或是单片机的某些教学难点在仿真软件的支撑下是完全可以突破的。以proteus仿真软件为平台,简洁I/O通道有利于学生透切理解微机的I/O通道的设计,能促进学生理解端口寻址的简洁方法,建立程序指令与硬件之间的关系,为后续课程的教学和实际应用打下扎实的基础。
本文所述的简洁I/O通道电路部分是一个很实用的通道接口电路,可作为各种通道设计中的基本框架,进一步的外围扩展后,可应用于各类单片机应用系统的设计中。
[1]苏春莉.微机原理课程教学的实践与探索[J].电脑知识与技术,2009(24):6922-6923.
[2]刘金平,等.高职单片机课程教学改革研究[J].电脑知识与技术,2009(12):3170-3172.
[3]安新艳.Proteus仿真技术在单片机教学中的应用[J].常州信息职业技术学院学报,2008(7):28-30.
[4]胡汉才.单片机原理与接口技术[M].北京:清华大学出版社.3版,2010:73-77.
The Design of Universal Decoding Scheme Based on Mcs-51
LI Mo-gang
(Department of Computer and Control,Lanzhou Petrochemical College of Vocational Technical,Lanzhou 730060,China)
Using Proteus as a platform and the design of concise I/O channel circuit as a measure can help students to understand the practical decoding circuit of the SCM system thoroughly and the concise relationship between instructions and hardware lines,enable students to really understand practical port addressing design so as to lay a solid foundation for the subsequent teaching of the courses.The article provides a concise framework of I/O channel circuit as a reference for practical applications.
Mcs-51;decoding scheme;I/O;Proteus;simulation
TP 368.1
A
1672-2434(2011)01-0027-03
2010-09-23
2008年度兰州石化职业技术学院科教基金项目(J08-04)
李模刚(1969-),男,讲师,硕士,从事研究方向:计算机系统结构、计算机控制技术