S3F9454,在S3F9454可用于专用控制功能于一身的多种应用,而且对于应用设计的FRS或等该S3F9454单芯片8位微控制器是制作中,采用先进的CMOS工艺。它是建立在强大的SAM88RCRI CPU核心。
停止和空闲掉电模式进行实施,以减少电力消耗。为了提高芯片寄存器空间,内部寄存器文件大小在逻辑上扩大。该S3F9454有4K的程序ROM字节和208字节的RAM(包括16和16的工作寄存器字节液晶显示RAM字节)。
3f9454 是一种高性能低价位单片机。但因其引脚少,给系统设计尤其是led 显示接口电路的设计带来一定难度,采用串入并出移位寄存器741S164 圆满地解决了这一问题。介绍了接口电路的构成原理与软件实现。实际运行表明,控制电路可成功地应用到3f9454 单片机为核心的智能仪表中。
我们采用74LS164这个串入并出的移位寄存器,很好地解决了S3F9454与LED数码管的显示接口电路及按钮控制电路问题。
一、硬件实现 1.单片机完全双向的I/O引脚一个I/O口可以被看作是单片机最小的一个外围功能模块。通过它可使单片机检测各种信号或控制其他电路和器件。S3F9454单片机的一个典型的I/O端口既可以设置为数字信号输出,又可以作为数字信号输入,是一个标准的双向端口。作为输出时,可以提供很强的负载驱动能力,高电平输出时的拉出电流和低电平输出时的灌入电流都可以达到25mA;作为输入时,端口呈现极高的输入阻抗,由端口引入的输入漏电流不超过1μA,对输入的信号来说此端口基本可视为开路或浮空状态。这种输入/输出的状态选择完全是由用户软件自由设定的,且每一个引脚都可以各自独立设定,互不影响。
2.74LS164工作原理74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出,如图1所示。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。CP(第8脚)为时钟输入端,可连接到单片机时钟控制端。每一个时钟信号的上升沿加到CP端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。MR(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1…Q8(第3-6和10-13引脚)并行输出端分别接到LED显示器的各段对应的引脚上。
3.硬件电路
电路中包含8位待显示的LED数码管,8个LED指示灯及6个按钮,S3F9454在完成其他功能之余,余下的并行I/O口线不足8根,数据的并行输出已不可能,但可以考虑串行输出方法。该电路利用两片74LS164实现以上功能的需要,其中一片74LS164实现8位LED数码管的片选,另外一片74LS164实现8位LED数码管段位显示,利用单片机的完全双向I/O端口,实现几个按钮的功能。其工作过程如下:
(1)显示部分。S3F9454利用2个单独端口分别接74LS164的数据及时钟控制端口,在移位时钟的作用下,74LS164数据控制端口发送缓冲器的数据一位一位地移入74LS164中,在软件的控制下作为数码管位选信号;利用另外2个单独端口分别接74LS164的数据及时钟那个控制端口,作为数码管的段选信号,实现动态数据的显示。本文电路的独特之处在于利用单片机的完全双向I/O端口,改变以往串接锁存器或三态门的做法。
(2)按钮控制部分。如图2所示为节省I/O管脚开支,利用单片机管脚输入输出分时复用功能实现按钮与显示功能。平时单片机段位显示管脚处于输出状态,通过74LS164控制数码管的显示内容,当需要按键检测时,把P0.2管脚改成输入模式。经电阻限流后,LED中几乎没有电流流过,这就保证了图2中A点电压在按键没有按下时为高电平。一旦按键按下,经过R1与R3电阻的分压,A点上的电压值降为0.5V左右,端口上读到的结果为低电平。检测按键只需要几条指令,利用人眼的视觉暂留,在整个按键检测过程中,LED的状态看起来“不变”。检测完后端口马上恢复成输出状态,LED照原样显示。
二、软件编程 1.单片机定时器当CPU用软件给定时器设置了工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的 *** 作时间,除非定时器计满溢出,才可能中断CPU当前 *** 作。CPU也可以重新设置定时器工作方式,以改变定时器的 *** 作。由此可见,定时器是单片机中效率高而且工作灵活的部件。
利用S3F9454单片机T0定时器中断功能实现数码管位选及按钮读键功能。时钟中断无需过于频繁,在周期定时模式下,当T0计数器的值与事先写入T0DATA中的数据相等时产生中断信号,同时清除T0定时器的计数值。写入T0DATA中的数据值便是所谓的“初值”。
其中:T是单片机中计数脉冲的基本周期,即单片机每隔T时间记一次数(计数器的值增加1),Fosc是单片机内部RC振荡频率,式(2)中,T0DATA表示S3F9454单片机定时中断初值,M表示指令系统预分频值,S表示需要定时的中断时间值。根据式(1)与式(2)可以计算出合适的中断定时初值。计算中断初值时用到了预分频器,计数采样将在分频器的输出端进行。此外脉冲的频率可以相对提高,理论上计数脉冲输入频率可以是指令执行的频率乘以预分频系数。
在硬件电路中已分析表明,移位寄存器74LS164仅有串入并出作用没有译码功能。因此,在编写显示驱动程序之前,首先需要计算列写出与本电路对应的LED段选码,然后由S3F9454单片机端口送入74LS164的串行输入端。再并行输出到LED的段选端。需要指出的是,本电路采用的是共阳极LED显示器,根据PCB印制线路板的连线方便,其LED的8个段选端与74LS164的并行输出口即8根段选线的连接没有遵照通常的规律,而是如图3所示的段排列,相应的段选码也根据实际需要重新计算。
电路中设计了8位LED显示器,以其中三个LED显示一个带秒的时间显示子程序为例,功能为:左首位为分钟显示位,左二位为秒十位数显示位,左三位为秒个位数显示位。据此,给出如图3所示的显示子程序框图。图4是实现读取按键功能的程序设计流程图。
本串行口扩展的LED数码管显示接口电路已被笔者成功地应用到以S3F9454单片机为核心的智能仪表中,如单片机智能跑步器、单片机温度测量仪等。现场运行表明,在多个按键作用下,LED显示清晰稳定不闪烁,特别是在现场环境如光照强弱不同的情况下,可以在线调整LED发光的亮度,获得视觉与功耗的最佳效果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)