您的位置:首页单片机PIC单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

输入端口的扩充

[日期:2008-01-27 ] [来源:高奇电子 作者:佚名] [字体: (投递新闻)
 本次的实习将使用PIC控制多路选择方式,使得PIC只要用上4条I/O线,就可以得到8个输入,我们用8路指拨开关来控制8个输入,并用8个发光二极管的明灭来显示输入的情形。
1. 目的
□电路上:学习如何使用PIC单片机控制多路选择器。(Multiplexer,MUX)。
□程序上:学习如何编写扫描检查的控制程序。
多路选择器?
当我们要输入 很多不同的线路信号,但是却没有太多的输入通道时,就要借助多路选择器的帮忙了,多路选择器可以衔接多条输入线路,并且多路选择器自身有一条输出线路,可与原先输入通道接上,然后多路选择有一些输入线,可以提供外界的控制电路来切换线路通道,经过切换通道的方式,就可以接收线路传来的信号。
图5-26多路选择器
2. 材料

3. 电路
图5-27原理图
4. 实照
图5-28实照
5. 步骤
1. 连接PIC的基本运行电路
□将VDD与MCLR引脚接上+5V,VSS引脚接上+0V。
□将石英振荡器的两个引脚,分别接上PIC的OSC1、OSC2引脚。
□将两个电容的其中一个电容、一脚接OSC1、另一脚接+0V;而另外一个是容,则是一脚接OSC2、另一脚与前一个电容的作法一样,接+0V。
2. 连接PIC的控制电路
□8个发光二极管(LED)有8个正极引脚,分别与PIC的RC0到RC7的8个I/O端口引脚连接,之后将8个我引脚,接上9PIN的排阻,最后将排阻的共地引脚接+0V即可。
□将RA0到RA3四个I/O端口引脚,分别对应74151的A、B、C、W引脚接上,如图5-29所示。
图5-29 74151引脚图
3.最后连接74151的电路:
除了上一步骤的A、B、C、W引脚外,还有以下的接线工作:
□将VDD接+5V,VSS接+0V,G接+0V.
□将指拨开关(DIP SW)一侧的引脚(8个),与74151的8个DATA INPUT分别对应接上,另一侧的引脚(8个),则接上330Ω的排(9PIN),然后将排共地点与+5V接上。
□将74151的8个DATA INPUT 2.2kΩ的排阻(9PIN),并排共地点直接接地。
6. 流程图
图5-30流程图
7. 程序
□标号说明
·RESET:起始程序的进入点
·SCAN:读取通道电位操作的进入点
·TO_DARK:执行熄灭LED操作的进入点
·TO_LIGHT:执行点亮LED操作的进入点
·STAN _BY:修改通道值并重新读取通道操作的进入点
·LIGHT_TAB:点亮LED的子程序
·DARK _TAB:熄灭LED的子程序
□寄存器使用配置情况
·F3:标志位,程序执行判断用
·F5:输出控制用,输出选择多路选择器通道的信号给74151
·F7:输出显示用,输出指拨开关的开关状态到LED上
·F9:保存目前选取的通道值
8. 说明
□起始程序
此次的起始程序部分,作了以下的处理:
(1)首先是将F5、F7、F9寄存器清除。
(2)设置RC端口引脚输出,这是用来控制显示LED的部分。
(3)设置RA0、1、2为输出,这是用控制多路选择器的输入通道选择用,而RA3则设为输入,用作路选择器的输入。
(4)清除标志位C、DC、Z。
□主程序
以下是主程序的原理说明:
(5)首先判断接收到的输入是HI还是LO?不断扫描指拨开关的ON/OFF状态,将其显示在对应的LED上。如果为HI,则对应的点亮LED;反之,则熄灭对应的LED反之,则进入熄灭LED的执行流程。
(6)将F9值向左移一位,这相当于将F9的值乘以2的结果一样,但是运算结果却是存入W寄存器,至于F9本身没有改变。
(7)W寄存器存入F9乘以2的值后,开始调用子程序,通过子程序来执行点亮或熄灭LED的工作。
(8)将F9的值拷贝一份给W寄存器,然后让W寄存器与立即值08H了,必须即时将它归零重头开始,即是对F9的内含值作清除和。
(9)因Z标志位已判断完毕,为求下次精准,判断完后即下清除指令,其实不下也没关系。
经过上面的步骤,F9的值会永远环绕在0到7中递增变化,不会超出此范围,因此我们将此0到7的值输出到RA0至RA2的端口引脚上,不断的环绕输出,即可产生循环式扫描检查输入,达到多通道的功效。
□子程序
总共分两个子程序,但原理是一样的,所以只以LIGHT_ TAB作说明,DARK_TAB类推:
1. 首先进入此子程序时,一定在W寄存器存储器了0到14范围中的偶数值,例如0、2、4……到14。
2. 然后把此值与F2程序计数器相加,并存入程序计数器,强迫其跳跃执行,跳跃多少个地址,则以W寄存的值为依据。
3. 到过跳跃后的地址继续往下执行,则是执行使某个端口C引脚为HI输出的操作,这样的操作也使得LED点亮。
4. 相反,熄灭LED子程序与点亮LED子程序原理完全相同,惟一不同的地方是使端口B引脚为LO输出,致使LED熄灭而已。
9. 除错
□线路方面可能的错误
1. 没有反应:
·可能是忘了将74151的STROBE引脚接+0V。
·可能是忘了接两个IC(PIC与74151)的电源。
·可能是忘了将PIC的MCLR引脚接+5V。
·可能是忘了将排阻共地端接好,其中有一个是接+5V,需注意。
2. 亮灭不稳或错误:
·可能是LED有故障,取下来检测看看。
·指拨开关故障或接触不良,取下来检测看看。
□程序方面可能的错误
1. 可能指定存储方向打错,例如:ADDWF2,1误打成ADDWF2,0。
2. 可能漏打BCF3,2的指令,这样会使程序执行流程错误。
3. 检查是否有了将在冗长的子程序中有打错的指令,特别是在连续输入下容易出错。
阅读:
录入:JETTA

推荐 】 【 打印
上一篇:计数器
下一篇:输出端口的扩充
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告