- UID
- 852722
|
1 高速SoC单片机C8051F040特征
C8051F040系列器件是完全集成的混合信号片上系统型MCU,具有64个数字I/O 引脚,片内集成了1个CAN2.0B控制器。其主要特性有: (1)高速流水线结构的8051兼容的CIP-51内核(可达25 MIPS);(2)全速非侵入式的在系统调试接口(片内) 64 KB(C8051F040/1/2/3/4/5)可在系统编程的Flash存储器,(4K+256)B的片内RAM,寻址空间为64 KB的外部数据存储器接口和硬件实现的SPI、SMBus/I2C和两个UART串行通信接口,片内集成看门狗定时器和VDD监视器和温度传感器,具有时钟振荡器的C8051F04x系列器件,是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件使能/禁止和配置。Flash存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。每个MCU都可在工业温度范围(-45℃~+85℃)工作, 工作电压为2.7 V~3.6 V。端口I/O、RST和JTAG 引脚都允许5 V 的输入信号电压。
2 LED硬件电路及显示工作原理
2.1 驱动方式
当向LED器件施加正向电压时,流过的电流使其发光。因此,LED的驱动问题就转化为如何使PN结处于正向偏置的问题。为了控制它的发光强度,还要解决其正向电流的调节问题。驱动方法分为直流驱动、恒流驱动和脉冲驱动。
2.1.1直流驱动
直流驱动是最简单的驱动方法。LED的工作点由电源电压、串联电阻和LED器件的伏安特性共同决定。这种驱动方式适合LED器件较少、发光强度恒定的情况。
2.1.2 恒流驱动
LED器件的正向特性较陡,加上器件的分散性,使得在同样电源电压和同样限流电阻的情况下,各器件的正向电流并不相同,从而引起发光强度的差异。若对LED器件进行恒流驱动,只要恒流值相同,发光强度就比较接近。晶体管的输出特性具有恒流特性,因此可用晶体管驱动LED。
2.1.3 脉冲驱动
利用人眼的视觉惰性,采用LED器件重复通断电的方式使之点亮,就是脉冲驱动方式。脉冲驱动主要应用于扫描驱动和占空比驱动两个方面。扫描驱动主要目的是节约驱动,简化电路。占空比控制的目的是调节器件的发光强度,用于图像显示中的灰度控制。在实际应用中往往是两方面组合在一起使用。
2.1.4常用LED显示屏驱动
目前普遍采用的是串行控制驱动方式,就是将显示的数据通过串行方式送入点驱动电路,多采用4953+74HC595作为驱动。
2.2 LED硬件电路介绍
256 B双色LED屏主要由32块8×8 LED模块、32片74HC595、8片4953、2片74HC245和2片74HC138组成。LED屏按其电路分为接口电路、驱动电路、译码电路和列数据电路。现对接口电路数据线作介绍。
A、B、C、D:行扫描信号线,决定16行中的哪一行点亮;
R1、R2:红色LED列数据;
G1、G2:绿色LED列数据;
CK:74HC595串行数据移位信号,上升沿将数据存入驱动模块中的串行寄存器;
ST:74HC595数据锁存信号,上升沿将串行数据存入并行数据寄存器,同时屏体显示更新;
EN:74HC138片选信号,有效时屏体点亮。
2.3 LED工作原理介绍
2.3.1 LED列数据电路分析
LED屏主要由显示点阵以及行列驱动电路组成,显示点阵多采用64×32板组成。由于LED发光器件数目较多,通常采用扫描驱动方式。扫描驱动电路通常采用多行的同名列共用一套列驱动器。行驱动器的行连到电源的一端,列驱动器的列连到电源的另外一端,当行驱动选择第i行,列驱动器选择第j列时,相应的LED就点亮。控制电路主要负责有序地选通各行,在选通每一行之前还要把该行各列的数据准备好。采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。行译码器给出行有效信号,从第一行开始,按顺序依次对各行进行扫描。根据列锁存器的数据确定该列是否接通,接通的列就在该行点亮。当一行的持续扫描时间结束后,下一行又以同样的方法进行显示。每行都扫描一遍后,又从第一行开始下一个周期的扫描。只要扫描周期的时间比人眼闪烁临界时间短,就感觉不出数据的更替,这是编写软件的重要思想步骤。
LED显示屏采用74HC595作为列驱动电路,该芯片具备以下功能:具有8 bit的串入并出的移位寄存器和一个8 bit输出锁存器,移位寄存器和输出锁存器的控制各自独立,因此当第一行数据锁存到行线上时,其内部同时通过移位寄存器组织第二行数据,这使得行数据准备与显示可以同时进行。对于列准备数据,它具有串入并出的移位功能,对于列显示数据具有并行锁存的功能。
2.3.2 LED行扫描电路分析
行扫描电路选用74HC138译码器,但由于该芯片驱动能力有限,因此在它的输出端再接上8片4953(每片可以驱动两行)以增强行驱动能力。138译码器ABC 3条信号线可产生8 bit输出信号,每次选通一片4953即可对应其中一行,如果此时对应列锁存输出数据到线上,则该行二极管导通,显示数据。
本文LED双色板采用16线扫描方式,用ABCD 4条扫描线结合2片74HC138产生16线扫描信号。
3 LED显示屏对单片机控制系统的要求
对于一个可正常显示且不闪烁的LED显示屏,其正常刷新频率理论上至少不能少于50场/s。但实测表明只有大于55场/s(一场扫描时间大约18 ms)时,人眼才不会感觉到闪烁。对于64×32 LED来说,处理1 B的时间为70.3 ?滋s,平均指令条数为Tb/1.5=70.3/1.5=47条。C8051F040晶振频率为22.118 4 MHz,时钟周期为0.045 ?滋s,C8051F040 70%的指令执行周期为1~2个时钟周期,故平均指令执行时间为2×0.045 ?滋s=0.9 ?滋s,满足LED显示控制要求。
4 C8051F040与LED硬件电路
C8051F040与LED连接图如图1所示。
本电路采用C8051F040的P2口和P3口的高3位控制LED显示,其中P2口的高4位连接138译码器的4根地址信号线(ABCD),分别是P2.7接A、P2.6接B、P2.5接C、P2.4接D、P2.3接G1、P2.2接G2、P2.1接CK、 P2.0接ST、P3.7接EN、 P3.6接R1、P3.5接R2。时钟显示电路选用PCF8563P芯片,采用I2C总线控制方式,SDA和SCL分别接P1.3、P1.2。温度电路采用18B20芯片,采用单总线控制方式,SDA接P0.3。5 C8051F040控制LED软件介绍
(1) 功能介绍
这显主要介绍C8051F040控制LED分屏显示日期、时间和温度。按照图1所示的硬件连接,行扫描软件地址可分配为0x00、0x80、0x40、0xc0、0x20、0xa0、0x60、0xe0、0x10、0x20、0x90、0x50、0xd0、0x30、0xb0、0x70、0xf0,编写程序时将根据以上地址进行行扫描。
(2) 软件流程图
C8051F040控制LED的主程序流程图如图2所示,显示程序流程图如图3所示。
(3) C8051F040源程序
C8051F040的源程序如下。
(1)系统时钟配置
void SYSCLK_Init (void)
{ int i = 0;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++);
// Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
OSCICN = 0x00; }
(2)系统端口配置
void PORT_Init()
{ SFRPAGE = CONFIG_PAGE;
//st SFR page before writing to XBR0 = 0x04
//允许UART0、RX、TX连到2个端口引脚XBR0=00000100 P1MDOUT = 0xf0; //推挽输出
P2MDOUT = 0xff;
P3MDOUT=0xff;
P4MDOUT=0x00; //漏极开漏输出
P4 |= 0xff; //写1禁止低端输出驱动器
P0MDOUT |= 0x01; //使能TX0作为推挽输出
XBR2 = 0x42;
}
(4) PCF8563与C8051F040的连接
PCF8563与C8051F040之间的硬件连接图如图4所示。
(5) PCF8563初始化流程
PCF8563初始化流程图如图5所示。
(6) DS18B20与C8051F040的连接
DS18B20与C8051F040之间的硬件连接图如图6所示。
(7) DS18B20测温系统
DS18B20测温系统流程图7所示。
本文主要介绍了LED显示的工作原理、硬件电路组成以及对单片机控制系统的要求等,利用C8051F040的特有优势实现对LED的有效控制,可以直接驱动LED,不需要在控制板上再加一级总线驱动器,节约系统资源。本文还给出了具体部分软件流程图和源程序代码,可根据硬件连接图连接后正常显示运行。本文在LED显示屏的应用中具有一定的参考和应用价值。 |
|