原创 14

2007-11-21 21:06 2445 4 4 分类: MCU/ 嵌入式
摘自“中原孔海洋”
单片机的输入器件主要有开关、拨码开关、键盘以及ADC等,与之相应,输入到单片机的信号就包括开关量、脉冲量和键盘信号等。下面我们就来详细讨论计算机在仿真这些器件方面的应用。
 
1 开关 
在前面文章的仿真实例中我们已经多次涉及到开关和拨码开关,而且我们已经对其相当熟悉,所以此处我们不再对其作进一步探讨。 
下面我们只说明一点问题。通常情况下,开关在按下和弹起的过程中会有抖动发生,所以我们在处理涉及开关的问题中一定要注意消除抖动。只不过在仿真试验中,开关的仿真模型是理想模型,没有抖动,我们也就不需要处理;但在实际应用中,这点务须注意。 
2 键盘 
单片机系统中常常使用非编码键盘,主要包括独立式键盘和矩阵式键盘两种。 
(1).独立式键盘 
独立式键盘每个按键单独占用一根IO口线,各按键相对独立,互不影响。可以使用查询方式或者中断方式来检测哪一个按键被按下,并执行相应的程序。其软件结构简单,但硬件复杂,而且当按键数量较大时将占用大量的IO口,使得IO口资源浪费较大,所以独立式键盘只适用于按键数量较少的场合。 
由于独立式键盘的硬件结构以及软件处理方式与前面文章中我们所述及的按键相同,所以,此处我们不再对其进行详细讨论。关于独立式键盘的知识,请参阅相关参考文献。 
(2).矩阵式键盘 
矩阵式键盘又称行列式键盘,它的按键跨接在行线和列线上,适用于按键数量较多的情况。关于矩阵式键盘的基本知识也请参阅有关参考文献。此处我们以一个矩阵式键盘的例子来说明其使用方法以及软件设计。 
例.单片机P1口连接一个矩阵式键盘,共有16个按键,按从左到右、从上到下的顺序依次命名为0、1、2、…、E、F。P2口连接一个共阳极数码管,编写程序仿真当按键按下时,在数码管上显示出按下的按键所代表的数字。 
本例是键盘与数码管的综合应用。考虑到C51语言在此类程序书写上的明显优势,本例程序将采用C51来书写。最后的源文件如下图所示: 

点击看大图

点击看大图


编辑好源文件以后,我们要进行编译并产生相应的工程源代码(.HEX文件)以便下面仿真使用。 
在生成源代码以后,我们就可以根据要求来绘制电路图了。此例电路图元器件比较简单,但绘制不太容易,尤其是16个按键组成的键盘矩阵,需要注意。关于电路图的其他部分,我们在前面的仿真中已经多次涉及,此处不再多言。最后绘制好的电路图如下图所示: 

绘制好电路图以后,我们就可以将上面产生的源代码装入单片机进行仿真了。你可以注意到仿真中当你点击一个按键,右边的数码管就会显示该按键对应的数字。而且,如果你一直按住某个按键不放,数码管的显示是不会改变的。这完全符合我们设计的初衷。系统仿真中的一个画面如上面的图形所示。 
3 ADC 
Proteus中的ADC器件主要在“Data Converters”子类中,种类繁多,从低精度的8位ADC到高精度的16位,从并行接口、SPI接口到IIC接口,Proteus都能仿真。但稍有遗憾的是当前的新型Σ-Δ型ADC暂时还不能仿真。 
由于仿真ADC器件需要考虑相当多的东西,而本文时间紧迫,所以这里我们就不进行相应的仿真了。如果您对此比较感兴趣,可以试着用温度传感器测温,然后由ADC转换并将其送入单片机处理,最后在数码管或LCD上显示温度,做一个数字温度计。 

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条