本帖最后由 outstanding 于 2014-2-26 11:49 编辑
这个设计已经做出实物,是以前的一个项目,希望大家喜欢,并支持!!!
1 系统总体结构设计 1.1 系统设计思想 通过大号数码管的控制卡来控制大号数码管模块组的显示;通过软件编程,实现大号数码管组对温度和时间的多功能显示。一块大数码管模块由32个LED发光二极管组成,其中28个大LED发光二极管组成大数码管的七段,4个小LED发光二极管组成大号数码管的第八段DP。六个大号数码管模块组成一个完整的大号数码管模块组(大号数码管组)。通过大号数码管控制卡中主芯片中的SPI接口来控制大号数码管的显示。SPI接口传输速度快,其时钟速度一般为系统时钟的四分之一(Fosc/4)。系统总体设计如图1所示。 图1 系统总体设计 1.2 主要芯片的简要介绍 1.2.1 MBI5026的介绍 MBI5026是一种16位LED恒流驱动器。采用先进的Bi_CMOS工艺生产,其恒流值可以通过外接电阻调节(Iout=5~90mA)。MBI5026含有16位移位寄存器,16位锁存器,1.2V基准源,以及16位高精度恒流驱动器等模块构成[2],详细资料可以参考MBI5026数据手册。 MBI5026的主要特点: Ø 输出恒流范围:2~90 mA(通过调节外接电阻实现); Ø 最高时钟频率:30MHZ Ø 输入:兼容5V CMOS Ø 电流均匀性: (Ta=25oC, VDD=5.0V) BittoBit:±3%; ChiptoChip:±4% 1.2.2 STC12C5616AD芯片主要介绍SPI接口 目前很多单片机都配置有SPI、I2C或UART等串行接口。在SPI、I2C及UART三种串行接口一般情况下速度最快的是SPI。I2C接口由于是二线协议速度很难超过1MHz/ Bit,而UART工作在方式0(8位移位寄存器)时时钟速度为系统时钟的十二分之一(Fosc/12),而SPI接口时钟速度一般为系统时钟的四分之一(Fosc/4)。典型SPI接口结构如图2所示[3]。 图 2 典型SPI接口结构示意图 串行外围设备接口SPI用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步[4]。 2 系统硬件设计 2.1 大号数码管控制卡电路 控制卡也即是大号数码管组的驱动电路,关键是利用STC单片机的SPI串行接口,本设计控制卡上面有DS1302(时钟芯片)和DS18B20(温度芯片)两个模块,编译器可以通过USB进行调试。其硬件电路设计如图3所示。 图3 大号数码管控制卡原理图 2.2 大号数码管电路设计 大号数码管电路设计主要是MBI5026(一种16位LED恒流驱动器)进行恒流驱动,从而控制大号数码管的LED发光二极管。为了防止数据线过长,信号衰减,在MBI5026前面加入一片增强信号驱动能力的芯片74HC245D,所有信号经过再次驱动后,再进入MBI5026驱动电路,然后同理驱动下一个大号数码管。大号数码管的电路设计如图4所示,图中只画了一个模块,完整的模块组由6个模块组成。 图4 大号数码管原理图 3 系统软件设计 系统软件编程主要包括STC12C5616AD,DS1302,DS18B20,USART。下面简要介绍时钟和温度两个模块。 3.1 DS1302时钟模块 DS1302采用8条引脚,DS1302与CPU连接仅需要三条线,即SCLK(7)、I/O(6)、RST(5)。 DS1302的控制字节说明 数据传送是以单片机为主控芯片进行的,每次传送时由单片机向DS1302写入一个命令字开始。命令字节的最高有效位(位7)必须是逻辑1,RAM/CK位是片内RAM和时钟选择位,位5至位1指示操作单元的地址;最低R/W为读写控制位,,命令字节总是从最低位开始输出。 数据输入输出 在控制指令字写入DS1302后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7[5],数据读写时序如图5所示。 图5 数据单字节读写时序图 3.2 DS18B20温度传感器模块 DS18B20两种供电方式的电路如图6所示。采用寄生电源供电方式时,VDD必须接地,另外为了得到足够的工作电流,应给I/O口提供一个强上拉,一般可以使用一个场效应管将I/O口直接拉到电源上。采用外部供电方式时可以不用强上拉,但只要外部电源处于工作状态,GND引脚不得悬空。温度高于100度时,不得使用寄生电源,应采用外部电源供电。
图6 DS18B20的供电方式 DS18B20 的工作时序 DS18B20 简单的硬件接口是以相对复杂的软件编程为代价的。单总线上一共有 3 种时序信号:(1)初始化信号(2)写 0、1 信号(3)读 0、1 信号[6],与之对应的时序如图7所示。设计中必须保证指令的执行时间符合时序信号的要求[3]。 图7 DS18B20 的工作时序 3.3 显示程序 软件编程中为了简化编程和程序的可移植性,把时钟模块(DS1302)和温度模块(DS18B20)分别写成头文件形式,在主函数数中只要包含就可以。数码管显示程序中采用了“倒算数值”的简单算法,从而可以方便的控制各个大号数码管的显示,USART主要是进行波特率的设置。下面简要给出时钟和温度模块的显示程及SPI接口程序。如下图8所
图8 时钟和温度显示程序及SPI接口程序 结 语 本设计通过对软件的优化来降低硬件的复杂程度,进一步降低成本。利用SPI可以同时发送和接受串行数据的特点,大大提高了数据的处理速度。本设计可以进行温度、时钟和蜂鸣器的多功能切换,替代了传统的单一显示模式。若多个大号数码管组组成一个更大的数码管组模块,可以同时显示时间和温度。本设计已做成了实物,且已经在教学实践中得到运用。
大号数码已经做出实物,并且一直在运行,效果良好。照片忘记拍了!!!希望能给大家带来点帮助。
|