您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 基于串行同步接口的数码管显示电路_5
1第5章基于串行同步接口的数码管显示电路目标通过本章的学习,应掌握以下知识●同步串行接口的工作过程●数字电路器件功能表的使用●数字电路时序图的使用●时序电路的触发方式●利用移位寄存器将串行格式数据转换为并行格式数据●位操作运算符●多位数码管的显示电路●具有多个数位的数据分离为多个1位数据引言计算机的数据传输方式分为并行数据传输和串行数据传输两种方式。并行数据接口具有理解工作过程简单、数据传输速率快等优点,但是这种方式对芯片的管脚资源占用较多。上一章使用并行数据接口驱动数码管,每一个数码管的发光段需要占用一个微控制器管脚,每一个数码管需要占用一个8位并行数据接口。串行数据接口虽然数据传输速率慢,但是对芯片的管脚资源占用较少,例如使用同步串行接口只需要占用2个管脚即可。这2个管脚一个被用来传输数据,另一个被用来传输同步时钟。如果MSP430微控制器芯片采用同步串行接口输出数码管的显示代码,这样虽然减少了对管脚资源的消耗,但是必须设法完成将数据的串行格式转换为并行格式以满足数码管的要求。8位移位寄存器(串行输入,并行输出)74164是一种能够实现同步串行数据格式到8位并行数据格式转换的器件。使用MSP430微控制器芯片的2个管脚实现同步串行接口,使用多个8位移位寄存器74164能够支持多个数码管的显示驱动。1个数码管只能显示1位数据,对于一个具有多个数位的数据可以将它分解为多个1位数据,再使用多个数码管完成这个数据的显示。MSP430微控制器芯片内部包含实现同步串行接口的外围模块,本章不使用这个外围模块。这里采用软件的方法实现同步串行接口,这样即能更好地理解接口的工作过程,又能练习应用程序的设计。25.18位移位寄存器(串行输入,并行输出)74164串行接口的输出数据不能直接送入数码管,一个明显的原因就是串行数据通过一条线输出,而数码管的工作则同时需要8个输入信号。使用8位移位寄存器(串行输入,并行输出)74164芯片,同步串行信号能够转换成数码管所需要的并行信号以满足数码管的需要。8位移位寄存器74164芯片的管脚排列图如图5.1所示。图5.18位移位寄存器74164芯片管脚排列图8位移位寄存器(串行输入,并行输出)74164芯片的管脚A和B(管脚1和2)为串行数据输入管脚,管脚CLK(管脚8)为串行时钟输入管脚。管脚Q0~Q7(管脚3~6和管脚10~13)为并行数据输出管脚。管脚MR(管脚9)能够强制8个并行数据输出管脚都输出0,即它们都为低电平。芯片的功能表用来描述它的功能以及工作过程。74164芯片的功能表如表5.1所示。表5.174164芯片的功能表输入输出MRCLKABQ0Q1Q2Q3Q4Q5Q6Q70×××0000000010××Q00Q10Q20Q30Q40Q50Q60Q701↑111Q00Q10Q20Q30Q40Q50Q601↑0×0Q00Q10Q20Q30Q40Q50Q601↑×00Q00Q10Q20Q30Q40Q50Q60由表5.1所示的74164芯片功能表,当74164管脚MR为低电平时,即写入数据“0”,并行输出管脚全部清零。这时芯片的输出与它的输入管脚状态无关。在功能表中,其它输入管脚的输入状态无影响用符号“×”来表示。正常工作时,管脚MR应为高电平,即写入数据“1”。当时钟输入管脚为低电平时,即写入数据“0”,8个并行输出管脚将保持它们的输出状态。当时钟上跳边沿到来时,用符号“↑”表示,如果管脚A和B都处于高电平状态,即它们同时都被送数据“1”,这时这个数据“1”将被送到并行输出管脚Q0对应的触发器,VCCQ7Q6Q5Q4Q0Q1Q2Q3ABGNDCLKMR14131211109876543213使得并行输出管脚Q0呈现高电平,即输出数据“1”。时钟的前沿还将触发以下工作,将并行输出管脚Q0对应的触发器原有的数据移到并行输出管脚Q1对应的触发器;将并行输出管脚Q1对应的触发器原有的数据移到并行输出管脚Q2对应的触发器;……;将并行输出管脚Q6对应的触发器原有的数据移到并行输出管脚Q7对应的触发器。当时钟上跳边沿到来时,用符号“↑”表示,如果管脚A和B任意一个处于低电平状态,即它们任意一个被送数据“0”,这时这个数据“0”将被送到并行输出管脚Q0对应的触发器,使得并行输出管脚Q0呈现低电平,即输出数据“0”。时钟的前沿还触发以下工作,将并行输出管脚Q0对应的触发器原有的数据移到并行输出管脚Q1对应的触发器;将并行输出管脚Q1对应的触发器原有的数据移到并行输出管脚Q2对应的触发器;……;将并行输出管脚Q6对应的触发器原有的数据移到并行输出管脚Q7对应的触发器。利用74164芯片驱动1位数码管的应用电路连线图如图5.2所示。该图按照使用面包板组装电路来进行设计。74164芯片需要的输入信号,串行同步时钟信号CLK和数据信号DATA,都将由MSP430微控制器芯片产生。VCCQ7Q6Q5Q4Q0Q1Q2Q3ABGNDCLKMR1413121110987654321abdpcdefgcomcomVCCGNDCLKDATAR1100U174HC164图5.2基于串行输出口的数码管显示电路图5.2中,管脚MR直接与电源连接,满足电路正常工作的要求。电路中将管脚A和B连接在一起,这样当时钟上跳边沿,“↑”,到来时,无论数据为0,或者为1,它都能送到并行输出管脚Q0。图中实现串行数据格式到并行数据格式转换器件的名称在这里写为74HC164。名称中的HC表示这种芯片采用CMOS制造工艺,强调它的原因是采用这种制造工艺制作芯片的工作电压为2~6V,与MSP430微控制器芯片的工作电压,1.8~3.6V,基本兼容。将1个字节的8个数据位,在8个时钟信号的作用下,逐个送入移位寄存器74HC164,就能够将同步串行传输方式的数据格式转换为并行数据格式。在这个逐个送入的过程中,移位寄存器74HC164的8个并行输出管脚的状态处于不断地变化中,但是如果这个传送过程很快,眼睛实际是分辨不出数码管对应的变化。4如果在完成1个字节的8个数据位传送以后,不再有时钟信号到来,移位寄存器74HC164的并行输出管脚的状态将保持不变,数码管就处于稳定地显示状态。微控制器芯片与数码管之间采用串行同步数据传送方式节省了输入/输出管脚资源,采用74HC164锁存数据将实现数码管的静态显示,不再需要微控制器对其进行进一步的管理,这时能够使用微控制器完成其它任务。8位移位寄存器74HC164的上边沿具有4个输出管脚,下边沿具有4个输出管脚。数码管也是的上边沿具有4个输入管脚,下边沿具有4个输入管脚。如图5.1所示的电路连线图,分别将74HC164的上边沿的4个输出管脚分别与数码管的上边沿的4个输入管脚连接在一起,分别将74HC164的下边沿的4个输出管脚分别与数码管的下边沿的4个输入管脚连接在一起,这样将使得电路连接变得简单和整齐。按照图5.1所示的电路连线图,数码管的各个管脚与8位移位寄存器74HC164管脚的连接关系如表5.2所示。表5.2数码管管脚与8位移位寄存器74HC164管脚的连接关系74HC164Q7Q6Q5Q4Q3Q2Q1Q0数码管bafgedcdp以显示数据“0”为例,现在数码管需要除过发光段g和dp之外的其它发光段都被点亮,即需要8位移位寄存器74HC164的并行输出管脚除过Q4和Q0以外都输出高电平。这样可以获得按照图5.1所示的电路连线图,数据“0”的显示代码,它写成2进制数据格式为0b11101110,写成16进制数据格式为0xee。采用这种方法,可以非常方便地写出其它数据的显示代码。硬件是软件的基础。数码管接收的显示代码就是它的控制器件数字输出端口的输出数据,两者不同的连接关系将会具有不同的显示代码。建议采用方便的连接关系来组装电路,因为编写显示代码比在电路板上连线方便。5.2同步串行接口的1位数码管驱动函数5.2.11位数码管驱动函数对于8位移位寄存器74HC164,在时钟信号上升沿的作用下,1个串行数据位首先被移入并行输出管脚Q0对应的触发器。当有新的串行数据位再被移入并行输出管脚Q0对应的触发器,原有的数据将被移入并行输出管脚Q1对应的触发器。Q1原有的数据将被移入并行输出管脚Q2对应的触发器……。将1个显示代码的8位数据位全部移入8位移位寄存器74HC164,需要在8个时钟信号的作用下,这8位数据逐个送入移位寄存器74HC164。这个数据位的传输过程可以使用一种称作为时序图的图形描述的方法进行叙述。时序图能够直观地给出所需要信号的变化情况以及信号之间的时间关系。5按照74HC164的工作过程,当需要输出1位数码管的显示代码,MSP430微控制器需要产生如图5.3所示的控制时序。这里需要强调的是,首先应该送出显示代码字节的最高位(MostSignificantBit,MSB),最后输出最低位(LeastSignificantBit,LSB)。串行数据D2D6D2D5D2D4D2D3D2D2D2D1D2D7D2D0串行时钟图5.3同步串行数据时序图输出1位数码管的显示代码,MSP430微控制器需要分8次将显示代码的各位逐个送出。对于输出显示代码的每一位,首先需要使输出串行时钟的管脚输出低电平,预备产生串行时钟的上升沿;接着使用串行数据管脚输出显示代码的一位;最后使输出串行时钟的管脚输出高电平,产生串行时钟的上升沿。串行数据时序图的每1位被画成菱形形状。菱形的上和下两边表示数据的2种可能取值,0和1。菱形的左右两边表示数据无论从0变成1,还是从1变成0,不能立即完成状态转换。这个原因是管脚电容的存在,使得它的电压不能突变。图5.3所示的同步串行数据时序图显示出数据必须在时钟上升边沿之后才能改变,这是必须的。按照74164芯片的功能表,接着是先改变串行数据,还是先将串行时钟变为低电平,这个关系不大。编写1位数码管显示代码的驱动函数的目的就是要在MSP430微控制器芯片扮演串行数据管脚和串行时钟管脚上产生图5.3所示的波形。这里给出采用同步串行接口方式输出1位数码管显示代码的驱动函数。该函数使用P1.7管脚输出串行数据,使用P1.6管脚输出串行同步时钟。//驱动1位7段共阴极数码管的同步串行数据接口驱动函数//P1.7数据管脚,P1.6同步时钟管脚voidseg7_1ms(unsignedcharseg7_data){unsignedcharcode_seg7;//声明显示代码变量code_seg7=decoder_seg7[seg7_data];//数据译码//同步串行接口初始化P1OUT&=~BIT6;//P1.6输出低电平P1OUT&=~BIT7;//P1.7输出低电平//逐位输出1个字节的8个数据位//输出第1位数据(MSB)//产生数据信号if(code_seg7&0x80){6P1OUT|=BIT7;//P1.7输出高电平}else{P1OUT&=~BIT7;//P1.7输出低电平}//产生同步时钟信号P1OUT|=BIT6;//P1.6输出高电平P1OUT&=~BIT6;//P1.6输出低电平//输出第2位数据if(code_seg7&0x40){……//输出第8位数据(LSB)//产生数据信号if(code_seg7&0x01){P1OUT|=BIT7;//P1.7输出高电平}else{P1OUT&=~BIT7;//P1.7输出低电平}//产生同步时钟信号P1OUT|=BIT6;//P1.6输出高电平P1OUT&=~BIT6;//P1.6输出低电平}该驱动函数具有1个参量,参量的数据类型为unsignedchar数据类型。这个参量为数码管将要显示的数据。驱动函数接收将要显示的1位数据,显示数据在函数内部完成译码。接着的2条语句把输出串行同步时钟的管脚P1.6和输出串行数据的管脚P1.7都配置为低电平,准备开始传送串行数据。由于MSP430系列微控制器不支持位寻址,因此需要利于逻辑运算的方法来分离出来将要传送的串行数据位的状态,再利用条件语句确定输出串行数据的管脚状态。7首先应该输出显示代码的最高位。
本文标题:基于串行同步接口的数码管显示电路_5
链接地址:https://www.777doc.com/doc-3420940 .html