版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州科技学院本科生毕业设计(论文)PAGEPAGE94PAGEI基于MSP430单片机的无线LED广告屏设计摘要LED点阵显示屏的发展前景极为广阔,为使该模块LED显示屏控制系统具有更加方便和灵活性,本文对系统的硬件做了精心设计。本文设计的主体思想是通过主机将实时时间,采集的环境温度以及光照信息,由无线模块传送到从机,动态显示在广告屏上。综合多方面的因素,最终确立了设计方案:主控制器选用MSP430单片机,点阵屏选择LED点阵单色图文显示屏,无线模块采用NRF2401射频收发芯片。基于单片机介绍了16*16LED显示屏的设计与制作过程,内容包括LED显示屏的硬件电路、PCB设计、C语言程序设计与调试等方面,涉及到单片机电子产品设计和制作方面的各个环节,认识单片机的基本结构,工作原理及应用方法,并提高单片机知识技术的运用能力。关键词单片机;点阵;无线;LED广告屏;NRF2401TheDesignofWirelessLEDAdvertisingScreensBasedonMSP430AbstractThedevelopmentofLEDdisplayhasafar-rangeprospect.TomakethismodularofLEDdisplaycontrolsystemmoreconvenienceandflexible.Thisprojectmadeelaboratedesignofsystemhardware.Themainideaofthedesignisthroughthehostwillreal-timetime,acquisitionenvironmenttemperatureandlightinformationtransferredbywirelessmodule,dynamicdisplayfrommachine,inadvertisingscreen,comprehensiveinmanyfactors.ThefinaldesignisthatthemaincontrollerchoosesMSP430microcontroller,bitmapscreenchoiceofLEDdotmatrixmonochromaticgraphicdisplay,wirelessNRF2401transceivermoduleUSESchips.Thisprojectintroducesthedesignof16*16LEDscreenbasedonSCMandmanufactureprocess,whichcontentincludestheLEDdisplayhardwarecircuit,PCBdesign,Clanguageprogramdesignandcommissioningetc,andinvolvesmicrocontrollerelectronicproductsdesignandmanufactureaspecttheeachlink.Besides,understandingthebasicstructure,microcontrollerworkingprincipleandapplicationmethods,andimprovetheutilizationabilitymicrocontrollerknowledgetechnology.KeywordsMCU;Dotmatrix;Wireless;LEDadvertisingscreen;NRF2401目录第1章绪论 11.1 引言 11.2 研究课题的目的与意义 11.3课题研究的主要内容 2第二章论文方案设计 42.1 系统方案总体分析 42.2 单片机的选择 42.2.1C51单片机 42.2.2Mega16单片机 52.2.3MSP430单片机 52.3无线模块的选择 52.3.1NRF905模块 52.3.2CC1020模块 62.3.3NRF2401模块 62.4 LED广告屏的选择 72.4.1按颜色分类 72.4.2按显示器件分类 72.5LED驱动模块 72.5.1静态锁存 72.5.2动态扫描 72.6 最终方案的确定 8第三章系统硬件设置 93.1 硬件电路的总体设计 93.2 单片机最小系统 103.2.1单片机MSP430的特点 103.2.2电源电路 113.2.3晶振电路 113.2.4复位电路原理图 123.3 实时时钟 123.4串行通信 143.5 LED点阵 143.6无线模块 163.7温度传感器 163.8系统的电路设计 183.8.1LED电路原理图 183.8.2单片机msp430最小系统的PCB版图设计 19第4章软件设计 204.1软件设计方案 204.2实时时钟模块 204.2.1实时时钟模块简介 204.2.2实时时钟模块的时序图 214.2.3时钟模块操作流程图 224.2.4模块程序设计 234.3温度,光照信息采集模块 254.3.1温度传感器模块的简介 254.3.2温度传感器模块的时序图 264.3.3模块操作流程 274.3.4模块程序设计 274.3.5光敏传感器模块简介 304.4无线模块 314.4.1无线模块简介 314.4.2无线模块的时序图 314.4.3数据传输的流程图 344.4.4无线模块程序设计 354.5LED点阵模块 374.5.1点阵模块简介 374.5.2点阵模块时序图 374.5.3点阵模块程序流程图 384.5.4点阵模块程序设计 39第5章论文实验与结论 435.1设计结果总结 435.2课题展望 45致谢 47参考文献 48附录A译文 49附录B外文原文 63绪论引言LED点阵显示屏是一种简单的汉字显示器,由于其价廉、易于控制、使用寿命长等特点,被逐步广泛应用于各种公共场合。在体育场馆,大屏幕显示系统可以显示比赛实况及比赛比分、时间、精彩回放等;在交通运输行业,可以显示道路运行情况;在金融行业,可以实时显示金融信息,如股票、汇率、利率等:在商业邮电系统,可以向广大顾客显示通知、消息、广告等等。据调查显示,人们接收的信息有2/3的信息是通过眼睛取得的。显示技术还应用于工业生产、军事、医疗单位、公安系统乃至宇航事业等国民经济、社会生活和军事领域中,并起着重要作用,显示技术已经成为现代人类社会生活的一项不可或缺的技术。这类的点阵屏常用的通信方式是经过一条RS-232串口线与电脑连接更换信息,操作简单,使用方便,但是硬件连接上也会有一些局限性,因为需要连接的线比较多,如果要采集远距离信息需要的传输线太长,影响精确度。所以本文提出了一个新的设计理念,运用单片机和无线模块,通过SPI协议对LED进行控制,实现LED显示屏的设计过程。研究课题的目的与意义单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。正因为单片机有如此多的优点,因此其应用领域之广,几乎到了无孔不入的地步。在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。我们可以开发利用单片机系统以获得很高的经济效益。更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。例如,本文所要论述的通过单片机来控制LED点阵显示。LED是发光二极管英文LightEmittingDiode的简称,是六十年代末发展起来的一种半导体显示器件,七十年代,随着半导体材料合成技术、单晶制造技术和P-N结形成技术的研究进展,发光二极管在发光颜色、亮度等性能得以提高并迅速进入批量化和实用化。进入八十年代后,LED在发光波长范围和性能方面大大提高,并开始形成平板显示产品即LED显示屏。LED电子显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它是集微电子技术、光电子技术、计算机技术、信息处理技术于一体的显示系统,是目前国际上极为先进的显示媒体。由于它具有发光效率高、使用寿命长、组态灵活、色彩丰富、工作性能稳定以及对室内室外环境适应能力强等优点而日渐成为显示媒体中的佼佼者。在我国改革开放之后,特别是进入90年代国民经济高速增长,对公众场合发布信息的需求日益强烈,LED显示屏的出现正好适应了这一市场形势,因而在LED显示屏的设计制造技术与应用水平上都得到了迅速的提高,生产也得到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。LED显示屏经历了从单色、双色图文显示屏,到图像显示屏的发展过程。随着信息产业的高速发展,LED显示屏作为信息传播的一种重要手段成为现代信息化社会的一个闪亮标志。近年LED显示屏已广泛应用于室内、外需要进行服务内容和服务宗旨宣传的公众场所如银行、营业部、车站、机场、港口、体育场馆等信息的发布,政府机关政策、政令,各类市场行情信息的发部和宣传等。目前,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,它可以用单片机控制实现显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型。1.3课题研究的主要内容本课题研究的内容组要包括以下几个内容:(1)MSP430单片机、无线模块NRF2401、电源转换芯片AMS1117、实时时钟模块DS1302、温度传感器模块DS1820、光敏传感器模块、串口通信RS232、LED显示屏以及LED驱动模块的理论知识以及应用,熟练掌握各个模块的不同引脚的连接方式;(2)熟练掌握各个硬件电路,并将以上各个模块融合在一起,设计出一幅合理的硬件电路图,其中需要用到两块单片机msp430和两块无线模块NRF24L01,分别将两块NRF24L01装在两块单片机上,一个充当发送模块,一个充当接受模块,然后在接收模块上将16*16LED点阵模块按照自己程序里定义的引脚将其连接起来。(3)深入研究该课题涉及到的软件知识,并用C语言编写程序,最后仿真,将仿真结果记录下来并进行分析。其中的程序部分主要分为两大部分,其中一个要编写msp430的发送部分,一个用来编写msp430的接收部分,并且用IAREmbeddedWorkbenchForMSP430这一款软件对其程序经行编译、创建连接和调试,并根据编译和调试结果对其程序进行修改,直到其程序没有出现错误和警告为止。在保证程序没有错误的情况下,将msp430发送程序和msp430接收程序分别烧到相应的两个单片机内,这样即完成了软件部分。第二章论文方案设计系统方案总体分析该电路大致上可以分成单片机系统及外围电路、无线模块、列驱动电路和行驱动电路以及LED广告屏四大部分。主机通过采集温度、日期、光照等信息并将其显示到LED广告屏上。其中温度信息是通过温度传感器进行采集的,日期时间是通过时钟模块采集的,光照信息是通过光敏传感器来采集的。时钟,温度传感器和无线模块,以及广告屏的编程,上位机与下位机的软件流程设计思路如下:下位机上电后,先初始化内部变量、时钟、信息采集及通信模块,然后进行信息采集,下位机将采集到的信息通过无线模块依次发送出去,上位机采集到时钟,温度以及光照信息之后,将日期时间,环境温度及光信息显示在液晶显示模块上,然后保存在EEROM里面,掉电不丢失。图2.1电路整体方框单片机的选择2.2.1C51单片机主要性能参数:128*8字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源可编程串行UART通道2.2.2Mega16单片机主要产品特征如下:两个具有独立预分频器和比较器功能的8位定时器/计数器一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器四通道PWM,两个可编程的串行USART可工作于主机/从机模式的SPI串行接口具有独立片内振荡器的可编程看门狗定时器2.2.3MSP430单片机主要产品特征如下:同其它微控制器相比MSP430系列可以大大延长电池的使用寿命外部中断引脚I/O口具有中断能力定时器中断可用于事件计数时序发生PWM等看门狗功能片内USARTs综上所述,采用51单片机,如果要驱动数列点阵显示,通用51单片机会比较吃力,出现比较严重的闪烁停滞现象,此外,要实现文字的左右移动和调整移动速度等功能,都会给软件设计带来较多困难,所以该单片机不是本设计的最佳选择;Ateml公司Mega16单片机,它的功能相对51而言是比较多的,操作起来也比较容易,没有特别突出的优点;而TI公司低功耗MSP430单片机,具有强大的处理能力和运行速度快,功耗超低,应用方便等优点,在多年来已在全球得到了广泛应用,如工业控制,智能化仪器仪表,无线采集,手持设备,在这些方面应用体现较高性价比,MSP430主要用户需要对模拟信号进行数字控制的领域,当然,纯数字的系统绝对可以用的。另外他带有硬件乘法器在处理一些运算时速度也较快,基于以上各种优点,最终方案确定为单片机msp430。2.3无线模块的选择2.3.1NRF905模块挪威nordic公司推出的单片射频发射器芯片NRF905基本特征如下:1、433/868/915工作频段,433MHZ开放ISM频段可免许使用。2、最高发射速率50KBPS,10dbm发射功率条件下,配置外置鞭状天线有效通信距离在300米左右。3、室内通信良好通信效果,4层之间可实现有效通信,抗干扰性能强,很强的扰障碍穿透性能。4、单次最多可发送接收32字节,并可软件设置发送/接收缓冲区大小2/4/8/16/32字节,其配置非常方便,功耗比较低,由于频段的限制,本方案放弃。2.3.2CC1020模块基本特性:1、工作电压:3.3V~3.6V,推荐3.3V,直线通信距离600米左右
2、频率范围为402MHz-470MHz工作
3、低电流消耗(RX:19.9mA)
4、SPI接口配置内部寄存器
5、标准DIP间距接口,便于嵌入式应用该芯片特点外围电路元器件复杂,好多器件难以在短时间内采购齐全,故本方案也放弃。2.3.3NRF2401模块挪威nordic公司推出的单片射频发射器芯片NRF2401基本特征如下:1、2.4Ghz全球开放ISM频段免许可证使用;2、最高工作速率1Mbps,高效GFSK调制,抗干扰能力强,适合工业控制场合;3、可直接接各种单片机使用,软件编程非常方便;4、收发完成中断标志,每次最多可发28字节;5、CLK,DATA,DR三线接口,软件编简单。6、双通道数据接收,内置环行天线,开阔无干扰条件通信距离在100米左右。将以上三种芯片进行对比,从距离,硬件复杂度和编程方面考虑,选择方案三中nordic公司出品的NRF2401芯片构成无线通信模块。LED广告屏的选择2.4.1按颜色分类单基色显示屏:单一颜色(红色或绿色)。双基色显示屏:红和绿双基色,256级灰度、可以显示65536种颜色。全彩色显示屏:红、绿、蓝三基色,256级灰度的全彩色显示屏可以显示一千六百多万种颜色。2.4.2按显示器件分类LED数码显示屏:显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。LED点阵图文显示屏:显示器件是由许多均匀排列的发光二极管组成的点阵显示模块,适于播放文字、图像信息。其中的LED点阵单色图文动态条幅屏(下文中简称条屏),因为成本低廉、可靠性高、显示效果优良,所以成为点阵式LED汉字广告屏中的主流产品。2.5LED驱动模块2.5.1静态锁存采用静态锁存方式,将每一个LED发光管的一端接至单片机的一个I/O口,另一端通过电阻接电源。这种方法可以直接驱动LED,原理简单,驱动能力强,LED的亮度也可以通过限流电阻调节,非常方便,但此种方法太浪费单片机的I/O口,只适合于较小的系统。2.5.2动态扫描采用动态扫描方式,通过三极管驱动并联在一起的LED发光管的一端(共阴或共2端),LED发光管的另一脚接通用I/O口,控制其亮灭。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。比较以上两种方案,系统设计中采用方案二。最终方案的确定综上所述,在本次设计中单片机选定为MSP430,无线模块选定为NRF2401,点阵屏选定位LED点阵单色图文显示屏且驱动模块为动态扫描。其中单片机和无线模块各需要两块,其中一块作为发送模块,一个作为接收模块,并且在接收模块上将16*16LED点阵模块连接上去,这样在两个NRF24L01之间可以通过无线传播数据,即所谓的无线传输。第三章系统硬件设置由第二章的系统整体设计方案的确定,我们开始着手选择各个模块所使用的硬件。包括单片机,行列驱动以及LED点阵。为该模块化LED显示屏控制系统具有更加方便和灵活性,特对系统的硬件做了精心设计。硬件电路包括LED驱动模块、PC机通信模块等两大模块。硬件电路的总体设计本设计硬件部分包括上位机和下位机两个部分,即充当采集数据的主机,和接收数据,并显示出来的从机,由此可见,主机的结构比较复杂一下,包括时钟模块,温度、光照采集电路,串口以及无线模块,从机相对简单一下,除了单片机典型最小系统电路,只要接上无线模块,用以接收主机发出的数据,还有点阵模块,将外界的信息显示出来就可以了。光源采集光源采集电源模块电源模块无线发送模块下位机无线发送模块下位机温度采集温度采集串口接收串口接收模块时钟模块时钟模块电源模块上位机电源模块上位机广告屏显示无线接收模块单片机最小系统单片机片机芯片配以必要的外部器件,一般包括电源供入及电源开关、复位电路、晶振、输入输出电路等就能构成最小系统。图3.2单片机MSP430的各个引脚3.2.1单片机MSP430的特点MSP430F149芯片是美国TI公司推出的超低功耗微处理器,有60KB+256字节FLASH,2KBRAM,包括基本时钟模块、看门狗定时器、带3个捕获/比较寄存器和PWM输出的16位定时器、带7个捕获/比较寄存器和PWM输出的16位定时器、2个具有中断功能的8位并行端口、4个8位并行端口、模拟比较器、12位A/D转换器、2个串行通信接口等模块。MSP430F149芯片具有如下特点:1)功耗低:电压2.2V、时钟频率1MHz时,活动模式为200μA;关闭模式时仅为0.1A,且具有5种节能工作方式。2)高效16位RISC-CPU,27条指令,8MHz时钟频率时,指令周期时间为125ns,绝大多数指令在一个时钟周期完成;32kHz时钟频率时,16位MSP430单片机的执行速度高于典型的8位单片机20MHz时钟频率时的执行速度。3)低电压供电、宽工作电压范围:1.8~3.6V;4)灵活的时钟系统:两个外部时钟和一个内部时钟;5)低时钟频率可实现高速通信;6)具有串行在线编程能力;7)强大的中断功能;8)唤醒时间短,从低功耗模式下唤醒仅需6μs;9)ESD保护,抗干扰力强;10)运行环境温度范围为-40~+85℃,适合于工业环境。MSP430系列单片机的所有外围模块的控制都是通过特殊寄存器来实现的,故其程序的编写相对简单。编程开发时通过专用的编程器,可以选择汇编或C语言编程,IAR公司为MSP430系列的单片机开发了专用的C语言,可以通过WORKBENCH和C-SPY直接编译调试,使用灵活简单。3.2.2电源电路本系统需要使用+5V和+3.3V的直流稳压电源,其中MSP430Fl49及部分外围器件需要+3.3V电源,另外部分需要+5V电源。在本系统中,以+5V直流电压为输入电压,+3.3V由+5V直接线性降压。图3.3电源转换电路原理3.2.3晶振电路由于MSP430有三个晶振源,两个外部晶振,一个内部RC晶振,所以在晶振电路中我连了两个外部晶振一个32768Hz,另一个是8MHz。在程序中我们可以通过程序的要求,选着合适的晶振图3.4晶振电路3.2.4复位电路原理图手动复位是最小系统常用的功能,本系统采用专用复位芯片IMP811实现手动复位。图3.5复位电路实时时钟DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线(1)RES(复位),(2)I/O(数据线),(3)SCLK(串行时钟)。在本设计中,时钟芯片上这三个引脚直接跟MSP430F149的P3.0,P3.1,P3.2相连。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。管脚描述X1X232.768KHz晶振管脚GND地RST复位脚I/O数据输入/输出引脚SCLK串行时钟Vcc1,Vcc2电源供电管脚3.4串行通信图3.7串行通信电路这是232串口通信的一个典型电路,Max232产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。所以它可以做成一个双串口的电路,分别接单片机的串行通信口或者实验板的其它串行通信接口,本设计不需要那么复杂,故只用了其中一组驱动、接收器。LED点阵对于点阵型LED显示可以采用共阴极或共阳极,本系统采用共阳极,其硬件电路如图2.1所示。当行上有一正选通信号时,列选端四位数据为0的发光二极管便导通点亮。这样只需要将图形或文字的显示编码作为列信号跟对应的行信号进行逐次扫描,就可以逐行点亮点阵。只要扫描速度大于24Hz,由于扫描时间很快,人眼的视觉有暂留效应,就可以看到显示的是完整的图形或文字。图3.88*8共阳极LED点阵例如,若要图中所示16个LED显示一个“口”字的方框,则首先在列1~4上写入列编码信号,接着应将对应的行上加选通信号,即在行、列的信号端分别加上如表3.1所示数据:表3.1在点阵上所加的行信号以及列选择信号列1列2列3列4行10000行20110行30110行40000这样,当第一行选通时列信号为0000;第二行选通时列信号为0110;第三行选通时列信号为0110;第四行选通时列信号为0000;再选通第一行送列信号0000……如此循环下去,当刷新频率足够高时(大于24Hz),由于人眼的视觉暂留特性,便可观察到稳定的方框。3.6无线模块图3.9无线模块NRF24L01集成版图主要参数:(1)2.4Ghz全球开放ISM频段免许可证使用(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强(3)126频道,满足多点通信和跳频通信需要(4)内置硬件CRC检错和点对多点通信地址控制(5)低功耗1.9-3.6V工作,待机模式下状态为22uA;掉电模式下为900nA(6)内置2.4Ghz天线,体积小巧15mmX22mm3.7温度传感器下图是常用的温度传感器芯片18b20的实物图,它只有三个引脚,操作很简单图3.10温度传感器芯片以下是传感器在板子上的电路图3.11DS18B02下面简要介绍一下温度传感器18b201.DS18B20基本知识DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。温度/数据关系表3.2温度数据关系温度数字输出/(二进制)安息字输出(十六进制)+125°C000000001111101000FAh+25°C00000000001100100032h+1/2°C00000000000000010001h+0°C00000000000000000000h–1//2°C1111111111111111FFFFh–25°C1111111111001110FFCEh–55°C1111111110010010FF92h3、DS18B20的引脚介绍GND地信号DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。3.8.系统的电路设计3.8.1LED电路原理图图3.12LED电路原理3.8.2单片机msp430最小系统的PCB版图设计图3.13msp430最小系统的PCB版图设计第4章软件设计4.1软件设计方案在本次设计中,软件部分有以下几大块:时钟DS1302,温度传感器18B20和光敏传感器,无线模块,以及广告屏的编程,上位机与下位机的软件流程设计思路如下:下位机上电后,先初始化内部变量、时钟,信息采集及通信模块,然后进行信息采集,下位机将采集到的信息通过无线模块依次发送出去,上位机采集到时钟,温度以及光照信息之后,将日期时间,环境温度及光信息显示在液晶显示模块上,然后保存在EEROM里面,掉电不丢失。下位机下位机上位机广告屏显示程序温度采集程序光照采集程序时钟信息程序无线模块(发送)程序无线模块(接收)程序图4.1软件设计方案的流程图4.2实时时钟模块因为本设计需要在显示屏上显示时间以及日期的信息,故需要用到实时时钟模块,以下就软件方面对时钟模块做详细的介绍:4.2.1实时时钟模块简介DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线(1)RES(复位),(2)I/O(数据线),(3)SCLK(串行时钟)。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信,DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。4.2.2实时时钟模块的时序图1)寄存器操作当写保护寄存器的最高位为0时,允许数据写入寄存器,写保护寄存器可以通过命令字节8E、8F来规定禁止写入/读出。写保护位不能在多字节传送模式下写入。它的寄存器分配如下:1RAM/CKA4A3A2A1A0RD/W2)写操作时序读写操作需要严格按照时序图来进行,下面分别是1302的写操作时序图以上是DS1302一个字节写入的时序图。第一个字节是地址字节,第二个字节是数据字节,RST信号必须拉高,否则数据的输入是无数的。换一句话说,RST信号控制数据时间信号输入的开始和结束。地址字节和数据字节的读取时上升沿有效,而且是由LSB开始读入,3)读操作时序读一个字节和写一个字节有明显的不一样,先是写地址字节,然后再读数据字节,写地址字节时上升沿有效,而读数据字节时下降沿有效,当然前提是RST信号必须拉高,写地址字节和数据字节同是LSB开始。读一个字节和写一个字节最大的区别是,写一个字节的时候,MSP430的IO口一直保持输出状态,相反的在读一个字节时MSP430的IO口先是输出状态,然后是输入状态,且必须改变是在信号的顺序。4.2.3时钟模块操作流程图开始开始变量初始化变量初始化使DS1302不具备写保护使DS1302不具备写保护复位端产生一个高电平复位端产生一个高电平复位端产生一个高电平复位端产生一个高电平写1302地址写1302地址写1302地址写1302地址延时一段时间延时一段时间延时一段时间延时一段时间将该地址的数据读出向该地址写数据将该地址的数据读出向该地址写数据地址增加地址增加地址增加地址增加数据读完了吗?数据写完了吗?数据读完了吗?数据写完了吗?YY显示数据显示数据NN图4.2时钟模块流程图4.2.4模块程序设计初始化定义初始化定义就是将DS1302需要操作的三个口对应跟单片机的I/O口相连,得以在接下去的子程序中显得直观一点#defineSET_SCKP3OUT|=0X01;#defineCLR_SCKP3OUT&=~0X01; #defineSET_SDAP3OUT|=0X02;#defineCLR_SDAP3OUT&=~0X02;#defineSET_RSTP3OUT|=0X04;#defineCLR_RSTP3OUT&=~0X04; 以上宏定义是将时钟芯片DS1302的三个引脚定义到PD4、PD5、PD6三个口上,便于在下面的程序中显得直观一点unsignedcharl_tmpdate[7]={0,0,12,15,4,3,9};};//秒分时日月周年,可随时更改unsignedcharwrite_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//秒分时日月周年写寄存器地址,最低位是读写位Unsignedcharread_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};//秒分时日月周年读寄存器地址,最低位是读写位constunsignedchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; //共阳数码管0-9'-''熄灭‘表写操作读写操作需要严格按照时序图来进行,对应时序图,我们可以通过软件进行操作:voidWrite_Ds1302(unsignedcharaddress,unsignedchardat)向寄存器写数据{ CLR_RST;_NOP();CLR_SCK;_NOP();SET_RST; _NOP();//启动 Write_Ds1302_Byte(address); //发送地址 Write_Ds1302_Byte(dat); //发送数据 CLR_RST; //恢复}voidWrite_Ds1302_Byte(unsignedchartemp)//写一个字节{{unsignedchari;for(i=0;i<8;i++) //循环8次写入数据{CLR_SCK;if(temp&0x01){SET_SDA;}//每次传输低字节 elseCLR_SDA;temp>>=1; //右移一位SET_SCK;}}读操作同样地,根据上一节提到的读操作的时序图,可以进行如下的软件操作:unsignedcharRead_Ds1302(unsignedcharaddress)//从寄存器读取数据{ unsignedchari,temp=0x00; CLR_RST;_NOP();CLR_SCK;_NOP();SET_RST;_NOP(); Write_Ds1302_Byte(address); DDRD&=~(1<<4); for(i=0;i<8;i++) //循环8次读取数据 { if(PIND&(1<<PD4)) temp|=0x80; //每次传输低字节 CLR_SCK; temp>>=1; //右移一位 SET_SCK; } DDRD|=(1<<4);CLR_RST; _NOP(); //以下为DS1302复位的稳定时间 CLR_RST;CLR_SCK;_NOP();SET_SCK;_NOP();CLR_SDA; _NOP();SET_SDA;_NOP();return(temp); //返回}voidRead_RTC(void) //读取日历{unsignedchari,*p;p=read_rtc_address; //读的地址传递for(i=0;i<7;i++) //分7次读取秒分时日月周年{l_tmpdate[i]=Read_Ds1302(*p);p++;}}voidSet_RTC(void) //设定日历{ unsignedchari,*p,tmp; for(i=0;i<7;i++){//BCD处理,将十六进制转换为十进制 tmp=l_tmpdate[i]/10; l_tmpdate[i]=l_tmpdate[i]%10; l_tmpdate[i]=l_tmpdate[i]+tmp*16; } Write_Ds1302(0x8E,0X00);//关闭写保护 p=write_rtc_address; //传要写的寄存器地址 for(i=0;i<7;i++) //7次写入秒分时日月周年 { Write_Ds1302(*p,l_tmpdate[i]); p++; } Write_Ds1302(0x8E,0x80);//打开写保护}4.3温度,光照信息采集模块4.3.1温度传感器模块的简介DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。1、DS18B20产品的特点(1)、只要求一个端口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在-55°C到+125°C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。4.3.2温度传感器模块的时序图初始化.主机总线在T0时刻从电源降到0并保持400-960uS时间,然后再上升到电源大约在15-60uS后,18B20输出低电平并保持60uS-240uS,然后上升到电源,完成初始化。写0和1时序写0时序写1时序当主机总线T0时刻从高拉到低电平时,就产生写时间时序,从T0时刻开始15uS之内应该将所需要的位送到总线上。写0时序,总线输出0后,15uS对总线采样,若为低电平则写入的位是0,若为高电平则写入的位是1,连续写2位的间隙应该大于1uS。写1时序时,单总线被拉低之后,在15us之内就得释放单总线。读时序对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。4.3.3模块操作流程初始化初始化设置18b20个数B设置18b20个数B匹配ROM跳过ROM匹配ROM跳过ROM读存储器变换温度读存储器变换温度存在缓冲区指针增1等待1s存在缓冲区指针增1等待1s初始化初始化初始化初始化B-1=0?否B-1=0?是图4.3模块操作流程图4.3.4模块程序设计由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,因此,对读写的数据位有着严格的时序要求,即编程时要严格按照上面的时序图来进行。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序,就是上面提到的初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。下面就本设计的程序做一下详细的分析:(1)18b20初始化函数voidInit_DS18B20(void){unsignedcharx=0;SET_DQ;//DQ复位delay(8);//稍做延时CLR_DQ;//单片机将DQ拉低delay(80);//精确延时大于480usSET_DQ;//拉高总线delay(10);DDRB&=~(1<<7);x=(P2IN&0X80);//稍做延时后,如果x=0则初始化成功;x=1则初始化失败delay(5);DDRB|=(1<<7);}(2)读一个字节unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){CLR_DQ;//给脉冲信号dat>>=1;SET_DQ;//给脉冲信号DDRB&=~(1<<7);if(P2IN&(1<<7))dat|=0x80;delay(5);DDRB|=(1<<7);}return(dat);}(3)写一个字节voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){CLR_DQ;if(dat&0x01)SET_DQ;elseCLR_DQ;delay(5);SET_DQ;dat>>=1;}delay(5);}(4)读取温度unsignedcharReadTemperature(void){unsignedchara=0;unsignedcharb=0;unsignedchart=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换delay(200);Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar();b=ReadOneChar();b<<=4;b+=(a&0xf0)>>4;t=b;//tt=t*0.0625;//t=tt*10+0.5;//放大10倍输出并四舍五入return(t);}4.3.5光敏传感器模块简介1、光敏传感器的选择光敏传感器有很多类型,主要有:光电管、光电倍增管、光敏电阻、光敏三极管、太阳能电池、红外线传感器、紫外线传感器、光纤式光电传感器、色彩传感器等,由于光敏电阻灵敏度高,体积小,重量轻,性能稳定,价格便宜,因为在本次设计中不需要很精确地采集外围环境的光照信息,故选用光敏电阻来比较合适。光敏电阻可以作为程序的运行指令与终止指令。光敏电阻就是一个传感器,有“有信号”与“无信号”两种状态,所以软件编程相对很容易。因为设计中用到的光敏电阻实际上就相当于是一个电阻,所以,只需要读取它上面的电压值就知道有没有光照了,在本设计中,由于时间显示,又要是实验结果尽量直观,我们就将有光的时候在显示屏上显示“亮”,然后在用手遮住光敏电阻之后显示“暗”,表示此时已经没有光照了。以下是设计中用到的程序(1)、端口初始化PORTD&=~_BV(PD7);//此口总保持低DDRD&=~_BV(PD7);//初始化为输入,用外部上拉电阻保持总线的高电平因为光敏电阻是跟单片机上的PD7口相连的,而在执行过程中要随时读取上面的电压值,故将PD7口初始化为输入。(2)、显示光照状态的宏定义constunsignedcharbright[32]={/*--文字:亮--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x01,0x00,0x7F,0xFC,0x00,0x00,0x0F,0xE0,0x08,0x20,0x0F,0xE0,0x00,0x04,0x7F,0xFE,0x40,0x04,0x87,0xC8,0x04,0x40,0x04,0x40,0x08,0x42,0x10,0x42,0x60,0x3E,0x00,0x00};//用来显示有亮光时的汉字宏定义,即“亮”constunsignedchardark[32]={/*--文字:暗--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x40,0x00,0x20,0x7B,0xFC,0x49,0x10,0x48,0x90,0x48,0xA0,0x7F,0xFE,0x48,0x00,0x49,0xF8,0x49,0x08,0x79,0xF8,0x49,0x08,0x01,0x08,0x01,0xF8,0x01,0x08,0x00,0x00};//用来显示无亮光时的信息汉字宏定义,即“暗”(3)、读取光敏电阻上的值点阵上显示if((P2IN&0X80)==0X80) { for(i=0;i<32;i++) lhj[i]=bright[i];//将汉字“亮”的编码复制到显示缓存用来显示display();//显示 } else {for(i=0;i<32;i++) lhj[i]=bright[i];//将汉字“暗”的编码复制到显示缓存用来显示display();//显示 }4.4无线模块4.4.1无线模块简介对nRF2401的配置接口由CE、PWR、CS组成。有4种工作模式(如表1所列),数据通过DATA、CLK1输入。工作模式PWRCECS收发模式110配置模式101空闲模式100掉电模式0XX表4.1
4种工作模式其发射功率、工作频率等所有工作参数全部通过软件设置完成。系统工作之前必须对nRF2401进行初始化配置,可通过DATA、CLK1串行输入120位的配置位。nRF2401有2种通信方式:ShockBurst和Direct方式。ShockBurst方式时,nRF2401可以自动加载数据头,进行CRC等工作,对外部编程的工作量少,为此在此系统中采用ShockBurst方式。ShockBurst方式的发送、接收工作流程如下一节所示。4.4.2无线模块的时序图正如上几节提到的,在编程时时序是非常重要的,所以向nRF2401A写控制字操作也必须严格下面的时序进行(1)、向nRF2401A写命令字时序图PWR_UP为高、CE为低时,置位CS,芯片处于命令字写入状态,通过通道1向芯片的控制字缓冲区写入命令字,按照由高位到低位的顺序,命令字全部写入后,将CS置低,nRF24101A芯片将会根据命令字配置相应的内部模块。在第一次配置操作结束后,只有最后两个字节的命令字可以被更改,前16个字节的修改无效,如果需要修改前16个字节的命令字(如通道接收地址,接收数据长度等),则需要掉电(PWR_UP置低)后重新上电(PWR_UP置高),才能对芯片进行彻底初始化操作。需要注意的地方:并不是18个Byte的命令字全部需要写入,通常我们只需要写后15个Byte即可;15个Byte的命令字在nRF2401.C文件中通过InitData[15]定义,用户需根据自己的通信格式对之进行修改;bit15~bit0可以根据需要反复修改,但是bit144~bit16只有上电后的第一次初始化有效。(2)、单片机向nRF2401A发送数据的时序如下MSB�LSB数据格式为如下:An~A0为接收机地址,不超过40位,通过更换地址,可以向多个nRF2401A模块发送数据;Dk~D0为待发送的数据。以上数据由单片机发送到nRF2401A之后,nRF2401A将会进行打包并发射,打包后的数据格式为:其中Pre为8位的校验头,CRC为8位或16位的校验尾,在ShockBurst模式下由nRF2401A自动添加。需要注意的地方:Address、Data、CRC的位数之和不超过256;Address长度必须和目标接接收通道的地址一致(数据和长度);Data长度必须和目标接接收通道的接收数据宽度一致。发射端和接收端的RF频率须一致,如两端均采用通道1,则二者控制字的bit7~bit1一致,如接收端采用通道2,则发射端bit7~bit1值比接收端bit7~bit1值大8。(3)、单片机从nRF2401A读取数据的时序如下当接收端成功接收到数据后,将会置位对应的数据请求管脚DR1/DR2,单片机通过查询该管脚状态,或者通过中断方式接收数据,nRF2401.C文件提供的从nRF2401A读取数据的函数有两个:4.4.3数据传输的流程图(1)、NRF2401ShockBurst方式发送流程图配置NRF2401配置NRF2401数据码=256-地址码[8~40位]数据打包(地址码+数据)数据打包(地址码+数据)置CE为高置CE为高串行装载数据CE置低CE置低NRF2401自动加数据头,并以250kbps或1Mbps的速率向外发数据NRF2401自动加数据头,并以250kbps或1Mbps的速率向外发数据此段在NRF2401中自动完成,只需在MCU中延时大约200us即发送完毕?可发送完毕?NY(2)、NRF2401ShockBurst方式接收流程图配置NRF2401配置NRF2401NRF2401是否接收到数据?NRF2401是否接收到数据?N在NRF2401中Y自动完成NRF2401判断地址是否正确?NRF2401判断地址是否正确?MCU从NRF2401的FIFO中串行接收数据,MCU从NRF2401的FIFO中串行接收数据,FIFO读空后DR1变高NYDR1被NRF2401置高,引发MCU中断接收数据,并判断CRC是否正确?DR1被NRF2401置高,引发MCU中断接收数据,并判断CRC是否正确?NY图4.4数据传输流程图4.4.4无线模块程序设计(1)、数据发送程序单片机向nRF2401A传送数据的函数有以下4个:voidnRF2401_SendByte(unsignedintTxData),用于发送一个字节数据;voidnRF2401_SendWord(unsignedintTxData),用于发送一个字数据;voidnRF2401_SendBuffer_Byte(unsignedintTxData[],unsignedintDataByte),用于发送一个字节数组;voidnRF2401_SendBuffer_Word(unsignedintTxData[],unsignedintDataWord),用于发送一个字数组。以上几个函数的流程是一样的,只是发送数据的长度不同。函数的使用:voidnRF2401_SetAddress(unsignedintAddress[],unsignedintAddrByte):设置目标nRF2401A的地址,发送端在发送数据前调用,只需要一次即可。其中Address[]数组为目标nRF2401A地址,AddrByte为有效地址的字节数。voidnRF2401_SendByte(unsignedintTxData):用于向nRF2401A发送一帧数据(目标地址+一个字节数据TxData);voidnRF2401_SendWord(unsignedintTxData):用于向nRF2401A发送一帧数据(目标地址+一个字数据TxData);voidnRF2401_SendBuffer_Byte(unsignedintTxData[],unsignedintDataByte):用于向nRF2401A发送一帧数据(目标地址+一个字节数组TxData[]),其中DataByte为数组元素个数;voidnRF2401_SendBuffer_Word(unsignedintTxData[],unsignedintDataWord):用于向nRF2401A发送一帧数据(目标地址+一个字数组TxData),其中DataWord为数组元素个数;(2)数据接收程序当接收端成功接收到数据后,将会置位对应的数据请求管脚DR1/DR2,单片机通过查询该管脚状态,或者通过中断方式接收数据,nRF2401.C文件提供的从nRF2401A读取数据的函数有两个:voidnRF2401_ReceiveByte(unsignedintRxData[]),以Byte格式从nRF2401A读取数据;voidnRF2401_ReceiveWord(unsignedintRxData[]),以Word格式从nRF2401A读取数据。以上两个函数的操作流程是一样的,只是存储的数据格式不同。函数的使用:voidnRF2401_ReceiveByte(unsignedintRxData[]):以Byte格式从nRF2401A读取数据,接收数据存储在数组RxData[]中。voidnRF2401_ReceiveWord(unsignedintRxData[]):以Word格式从nRF2401A读取数据,接收数据存储在数组RxData[]中。(3)、其他程序其他程序如下:voidnRF2401_ON()://nRF2401A上电操作,在初始化nRF2401A之前执行该操作;voidnRF2401_OFF()://nRF2401A掉电操作,在需要重新初始化nRF2401A时执行该操作;voidnRF2401_Mode(unsignedintuiMode)://nRF2401A收/发模式切换,uiMode=0,设置nRF2401A为接收;uiMode=1,设置nRF2401A为发送;unsignedintnRF2401_RxStatus()://判断nRF2401A是否有数据接收,如果已经接收到数据,返回值为“1”,如果没有接收到数据,返回值为“0”;4.5LED点阵模块4.5.1点阵模块简介LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号灯各种信息的显示屏幕。LED显示屏控制系统实现显示信息的刷新技术有动态扫描和静态锁存两种方式。一般室内显示屏多采用动态扫描技术,即一行发光二极管共用一行驱动寄存器,根据共用一行驱动寄存器的发光二极管像素数目。室外显示屏基本上采用静态锁存技术,即每一个发光二极管都对应有二个驱动寄存器。动态扫描法可以大大减少控制器的I/O口,因此应用较广。4.5.2点阵模块时序图本设计使用的点阵屏是由4个大小为φ1.9mm的8*8共阳点阵组成16*16点阵,点阵屏可拆装,采用圆孔铜排针,连接性能非常好。驱动部份使用两个移位带存储器的74HC595和两个移位寄存器74HC164组成,74HC595负责列扫描数据,74HC164负责行扫描数据。列扫描采用三极管放大电流,加大扫描强度,提高点阵屏亮度。数据接口采用可并接方式,有输入和输出,方便并接多个单板,组成32*16、48*16、64*16等点阵。下图就是点阵模块的时序图:4.5.3点阵模块程序流程图1)显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重现赋初值,以保证显示屏刷新率的稳定,然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打开输出锁存器并锁存,然后再输出新的行号,重新打开显示,以下就是显示驱动程序的流程图:进入中断进入中断定时器赋初值读取行号并增加1送新行显示数据消隐切换显示数据发送新行号,打开显示退出中断图4.5显示驱动程序流程图2)系统主程序系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约3s;接着向上滚动显示信息,然后以“卷帘入”效果隐去图形。单元显示屏可以接收来自控制器或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息部经任何变化地再传送给下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。下图是系统主程序流程图:开始开始系统初始化“卷帘出”显示效果“上滚屏”显示效果“左跑马”显示效果“卷帘入”显示效果图4.8系统总程序流程图4.5.4点阵模块程序设计1.IC-74HC59574HC595是硅结构的CMOS器件,兼容低电压TTL电路,它的引脚图如下:图4.974HC59574HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入存储寄存器。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲,电路中,将两个时钟分开控制,目的是先移好位,再存储数据,这样在移位的过程中,可保持输出的数据。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7‘),电路将其接入下一个IC的输入(Ds)组成16位移位存储。一个异步的低电平复位/MR,电路中不使用复位信号,将此脚直接接入电源VCC)。存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线,电路中直接将此脚接GND,做直接输出。IC-74HC16474HC164是简单的8位移位寄存器,下图是它的引脚图:图4.1074HC164如上图:输入A、B在SCK时钟脉冲作用下移入寄存器。A、B是与的输入,电路将其合并做一个输入,移位寄存器的最后一位输出Qh接入下一个74HC164的输入AB,组成16位移位寄存器,位的输出经过三极管放大电流加到点阵共阳端,即做为点阵的行控制。软件部分:列的处理信号有三个,SER、SRCLK、RCLK,SER做为列移位寄存器的输入,SRCLK是移位时钟,RCLK做为锁存时钟,当将16个位数据在SRCLK的脉冲作用下移入寄存器后,就可以开启RCLK时钟,使寄存器中的数据存入锁存器,因使能脚接0使能,数据直接输出Q端,Q端数据经限流电阻接入点阵COL脚位,即一行的数据显示。另外两个信号是AB和SCK,AB做为行移位寄存器的输入,SCK是移位时钟,AB的输入在SCK的时钟脉冲下移入寄存器,寄存器输出端Q经电阻接入三极管B极,控制三极管的导通和截止,从面控制点阵ROW脚位电量。每次移位行的输出16个Q位只允许有一个是低电平,即是分时轮流的输出低电平使用三极管轮流导通,从而使扫描至上而下进行。对于16*16点阵,整个过程是先移出16个列数据信号,再移一个行信号,重复完成16行扫描。对于32*16点阵,整个过程是先移出32个列数据信号,再移一个行信号,重复完成16行扫描。对于48*16点阵,整个过程是先移出48个列数据信号,再移一个行信号,重复完成16行扫描。下面对程序设计做一下简要的分析:voiddisplay(void)//显示{ unsignedchari,ia,tmp; //定义变量 unsignedintj; PORTC=0xff; //置位高电平做准备 CLR_AB; //将列数据位清0,准备移位 for(i=0;i<16;i++){ //循环输出16行数据 CLR_SCK; //为列移位做准备 CLR_SCLT; //为行锁存做准备 for(ia=8;ia>0;){ //每行48个点,循环位移6个字节 ia--; //循环四次 tmp=~lhj[i*8+ia]; //读取点阵数据做输出,这里用到ia目的是先读取点阵数据的第8个字节,因一行64个点由8个字节组成, //电路中的移位寄存器最后一位对应最后一列,所以要先输出一行中的第四个字节数据 for(j=0;j<8;j++){ //循环两次,每次移一个字节, CLR_SCLH; //为列移位做准备 if(tmp&0x01){SET_DATA;} elseCLR_DATA; //将数据低位做输出,由电路图可知,移位寄存器的最后一位对应最后一列,因此先移最后一位 tmp>>=1; //将数据缓冲右移一位,为下次输出做准备 SET_SCLH; //将DATA上的数据移入寄存器 } //移入单字节结束 } //移入两个字节结束 SET_SCK; //SCK拉高,列数据移位,相应行拉低,三极管导通输出电量到相应行点阵管阳极(共阳) SET_SCLT; //SCLT拉高,将数据锁存输出到相应行的点阵发光管显示,显示一行后将保持到下一行显示开始 SET_AB; //列数据位只在第一行时为0,其它时候都为1,当将这个0移入寄存器后,从第一位开始一直移位最后一位, //移位的过程,AB就必需是1,这是因为不能同时有两个及两个以上0的出现,否则显示出乱 } j=500; while(j--); //每一行的显示,保持16个移位时间,因此,最后一行的显示,也要加入保持时间,补偿显示的亮度 CLR_SCK; // SET_SCK; //将最后一行数据移出}voiddisplayS(unsignedinttimer) //指定时间扫描显示{ unsignedchari; while(timer--){ //当timer=1时,大约1秒时间 i=600; while(i--) display(); }}第5章论文实验与结论5.1设计结果总结这次广告屏的设计让我学到了不少知识,第一次接触并且了解了单片机msp430,对其内部结构和最小模块系统有了一个深入的了解。为了完成毕业设计我也在平时工作紧张的情况下,尽己所能努力完成毕业设计。在该设计中共用到了两个单片机msp430模块,一个用来发送数据,一个用来接收数据,实物图如下:图5.1发送模块实物图图5.2接收模块实物图图5.3总电路实物图如上图所示,左边为发送模块,右边为接收模块,其中发送与接受之间用到了两块无线模块NRF24L01,右边接收到数据后将会将其结果显示在LED点阵屏上,这样在广告屏上将会显示信息。硬件电路连好以后,将msp430的发送程序烧到左边的单片机,msp430的接受程序烧到右边的单片机,最终的显示结果如下图:图5.4最终显示结果5.2课题展望本文通过设计单片机控制单色LED显示屏的方法,对LED显示模块单元如何进行行列信号控制及信号传输中的驱动问题进行了研究。介绍了硬件的原理以及连接的方法,软件的设计流程以及部分代码,并给出了完整的电路图,经调试后可以正常显示温度、光照、时间信息,并且可动态显示。软件部分的设计跟硬件完美配合实现各个信息的显示。通过LED点阵显示原理,我们知道只要合理的安排行选信号以及列信号同时导通的组合顺序就可以显示任何的图形、文字。软件的设计就是完成将汉字点阵数据通过一些特殊的算法调整,得到跟LED点阵相对应的数据,并将这些数据以及控制信号传送到LED点阵屏,来实现分屏扫描显示以及左移扫描显示的效果。致谢经过本次的毕业设计实践,让我加深了对专业知识的认识与了解,同时这对我个人而言,它既是一次展现我动手能力的机会,也是一次对我专业知识全方面的考查。在整个设计过程中,我时刻严格要求自己,并且不断地反思自己的不足之处,争取做到更好。我要感谢学校里为我们提供了这样一个展现自己成果的平台,在这样一个平台上,我们不仅可以扩充自己的专业知识,而且也提高了自己的动手能力。在这里,还要特别感谢我的指导老师。在这段时间里,他不辞辛苦
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 红心网络安全
- 建筑项目开盘活动合作合同模板
- 超市加盟特许经营合同
- 眼科手术感染控制
- 心血管病人如何安全过冬
- 《中医药历史》课件
- 眼科门诊常规检查及手术
- 胃癌的预防和治疗
- 年产xxx高档釉面地项目可行性研究报告(可行性分析)
- 年产xx建材涂料项目可行性研究报告(项目建议书)
- 废弃塑料回收利用行业经营分析报告
- 国开(吉林)2024年秋《动物外产科》形考作业1-3终考答案
- 2024年冷库工程设计施工协议
- 工厂高层改造脚手架方案
- 武汉周黑鸭公司股利政策的优化的案例分析5600字论文
- 2022年安徽理工大学软件工程专业《计算机网络》科目期末试卷B(有答案)
- 疼痛护理学组年终总结
- 2024年广东省中考地理试题含答案
- 学校消防安全检查记录表
- 大学生创业英语智慧树知到期末考试答案章节答案2024年广西师范大学
- S7-1500 PLC应用技术 习题及答案
评论
0/150
提交评论