单片机IO口扩展多用的设计的方案探究.docVIP

  • 34
  • 0
  • 约2.33千字
  • 约 7页
  • 2018-10-14 发布于福建
  • 举报

单片机IO口扩展多用的设计的方案探究.doc

单片机IO口扩展多用的设计的方案探究

单片机IO口扩展多用的设计的方案探究   摘 要 随着经济与科技的迅速发展,单片机凭借着体积小、低电压、稳定性强、性价比高被越来越多的用户采用,本文针对单片机的输入输出口扩展问题提出了自己的观点,采用了模拟开关芯片CD4066,分析并设计了可实用的电路系统,使单片机IO口在并联共用的情况下,在各项目间进行可控切换。   【关键词】单片机 IO口多用 CD4066芯片   1 设计背景概况   单片机凭借其体积小、低电压,低功耗、性价比高等诸多优势,在现代家用及工业上被越来越多的用户使用。在使用过程中,许多用户也发现了单片机的部分缺点,最典型的缺点是:输入输出(IO)端口有限。因此如何增加和有效利用单片机的端口成为应用系统设计中的重要环节。   在需要大量的单片机IO口复用时,比如制作一个大型的工业控制系统,在这个系统中,各分系统可独立选择性操作,每个分系统都占用了大部分的单片机端口,此时就需要将单片机端口智能扩展,将单片机的现有IO端口用于不同的外部设备。在这种情况下,很多人使用的是跳线法(外部设置),这种方法缺点诸多,比如路线的接触不可靠性、需要人为干预的不智能性。针对以上情况,本文从实际出发,提出了新型的单片机IO口多用设计方案,以期能解决以上问题。   2 设计思路   2.1 主要硬件介绍   2.1.1 单片机选择   PIC单片机是一种用来开发和控制外围设备的可编程集成电路。是由美国Microchip公司推出的PIC单片机系列产品,其高速度、低电压、低功耗、大电流LCD驱动能力和低价位OTP技术等都体现出单片机产业发展的新趋势。而本文采用的PIC16F877A单片机一共有40个引脚,其中包含33个IO口。   2.1.2 扩展芯片选择   CD4066是四路双向模拟开关,主要用作模拟或数字信号的多路传输。CD4066 芯片的每个封装内部都有4 个相互独立的模拟开关,每一个模拟开关都有独立的输入、输出、控制三个端子,其中输入端和输出端是可以相互调换。当控制端加高电平时,输入与输出两端导通;当控制端加低电平时输入与输出两端截止。模拟开关导通时,导通电阻只有几十欧姆,对于数字信号来说,这个电阻值几乎可以忽略;模拟开关截止时,呈现很高的阻抗,几乎可以看成开路。模拟开关可传输数字信号和模拟信号。   2.2 设计框图(图2)   设计框图(图2)说明:单片机选择的是PIC16F877A,其中有IO口33个,用其中的一个IO口用来由外设(外设可以是按键,也可以是相应的传感器)来确定执行哪个项目的功能(可多选,即在IO口不冲突的情况下,同时多个项目同时执行),并由项目控制组来导通相应项目的4066芯片组,使其与外围控制电路与单片机IO口数字信号导通,并由单片机控制外围电路,实现其功能。   2.3 部分电路原理图(图3)   在原理图中,项目选择部分采用的是按键选择(可在程序中依靠按键的次数来实现),项目控制部分采用的是串行输入并行输出的74HC595来进行扩展控制,采用串连多个74HC595可扩展到无限多个项目控制口。当相应的端口输出高电平,就导通了相应的CD4066,实现外设与单片机IO口的数字信号导通。   3 部分程序代码   #include   __CONFIG(0x3B31);   void init();   void delay(uchar x);   Void prj_num_function(num);   Void Controlprj_num();   Void movecode_595(uchar num);   void main(void) //----主函数   { init();   while(1)   {   Controlprj_num();   movecode_595(prj_num) ;   prj_num_function(num);   }   }   void init() //-----单片机端口出始化函数   {   TRISA=0X01;TRISB=0;   TRISC=0;TRISD=0;TRISE=0;   PORTA=0;PORTB=0;PORTC=0;   PORTD=0;PORTE=0;   }   Void Controlprj_num()   {   If(RA0==0)   {   Delay(10);   IF(RA0==0)   {   prj_num++;   If(prj_num==20)   prj_num=0;   }   }   }   Void prj_num_function(num)   {   各项目的具体功能程序段  

文档评论(0)

1亿VIP精品文档

相关文档