旋转式电子桌椅设计报告_第1页
旋转式电子桌椅设计报告_第2页
旋转式电子桌椅设计报告_第3页
旋转式电子桌椅设计报告_第4页
旋转式电子桌椅设计报告_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

年电子设计选拔赛题目:旋转式电子桌牌参赛队员:专业:11级电气四班参赛队员:专业:12级电气一班参赛队员:专业:13级电气一班2014-6-20

摘要为了满足旋转式电子桌椅的设计要求,基于视觉暂留特性设计并制作了一个13点线阵LED模块的显示屏。首先,在控制器的管理下,通过线状LED控制和电机驱动控制这两部分来完成基于STC89C52单片机的旋转式电子桌椅文字显示装置的设计;经过软硬件调试,该部分实现了中英文字符显示转速显示等功能。其次,用MSP430G2553测量直流电机的电压和电流,通过LCM12864显示。然后,通过NRF2401无线模块、串口模块与电脑进行无线通信,能通过上位机界面修改LED显示屏的内容。实际测试表明,所采用的设计方案先进有效,完全达到了设计要求。该显示装置电路简单、显示内容稳定清晰,并扩展了无线通信和上位机功能,客服了点阵LED显示屏的不足,可以用于很多的场合,比如广告牌、家庭装饰、记分牌、娱乐显示等。关键词:视觉暂留;LED旋转屏;无线通信;上位机界面;单片机

目录摘要第二章 系统方案的设计与论证 21.1系统总体框架 21.2方案论证与比较 21.2.1系统供电方案 21.2.2显示部分: 31.2.3芯片的选择: 31.2.4键盘选择: 41.2.5电机选择 41.2.6电机驱动模块的选择: 41.2.7液晶的选择: 51.2.8无线通信模块选择 5第二章理论分析与计算 62.1旋转LED显示屏简介 62.2系统机械结构 72.3重心调节 8第三章系统的硬件电路设计 93.1系统硬件框架图 93.2单片机最小系统 93.3旋转式LED模块 93.4RF模块 103.5串口通信模块 103.6RF供电模块 113.7LCD显示模块 11第四章系统的软件设计 144.1系统程序流程图 144.2上位机界面设计 144.3主控机程序流程设计 164.4从机程序流程设计 164.5MSP430测量程序流程设计 18第五章测试方法和结论 195.1测试方案及测试仪器 195.2数据测试 195.2.1电压电流测量数据 195.1.2RF实际通信过程示波器图 195.3测试结果分析 20第六章小结 21第七章参考文献 21附录一:主电路原理图 22附录二:部分源程序 23(一) 主控机主程序 23(二)从机主程序 25(三)MSP430测量主程序 27

系统方案的设计与论证1.1系统总体框架根据题目分析,本设计由机械旋转部件、显示电路、无线通信电路等几部分构成。通信电路通信电路用于通过计算机向显示屏下载显示内容,由于显示屏在高速旋转的情况下不便于接线进行显示内容的更改,所以设计使用了RF通信电路,该模块选用2.4GHz高速2Mbps无线收发芯片NRF24L01作为RF的实现芯片,采用NRF24L01高速嵌入式无线数据传送模块来实现通信。总体框架如图1-1所示。图1-1总体框架1.2方案论证与比较1.2.1系统供电方案方案1:采用固定电池供电。即在电路板是直接附带一个蓄电池,为系统供电。这种供电方式比较简单。但是,有两个问题难以解决。首先,高亮度LED的功耗比较大,而电池的蓄电量有限,这就难以实现系统的长期运作;其二,由于电池的体积和重量比较大,若固定在板子上,电量用完后,难以替换。若不固定,在电机转动的时候可能会甩出去,引起安全隐患。同时,也增加了旋转重心的调节的难度。故不采用此方法。方案2:采用电刷供电。即在电机的转轴上,手工增加一个电刷,通过电刷为系统供电。此方法能够让系统长期供电,但是由于增加了电刷,电机的摩擦增大,势必会使系统的功耗增加。故不采用此方法。方案3:从电机转子中引出电源线,为系统供电。此方法直接在电机的转子中引出电源线,通过整流滤波后,可以作为系统供电,同时也可以作为系统控制时序的中断源。由于显示屏在高速旋转的情况下不便于接线,所以不采用该方案。综合上面几种,本系统采用复合供电方式,即:LED显示屏采用固定蓄电池供电,电机采用12V电源供电,上下采用独立供电方案。1.2.2显示部分:显示部分是本次设计最核心的部分,对于LED线阵有以下两种方案:方案一:静态显示,将一帧图像中的每一个二极管的状态分别用0和1表示,若为1,则表示LED无电流,即暗状态;若为0则表示二极管被点亮。若给每一个发光二极管一个驱动电路,一幅画面输入以后,所有LED的状态保持到下一幅画。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,成本高,且可靠性也较低。方案二:动态显示,对一幅画面进行分割,对组成画面的各部分分别显示,是动态显示方式。动态显示方式,可以避免静态显示的问题。但设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既应保证驱动电路易实现,又要保证图像稳定,无闪烁。动态显示采用多路复用技术的动态扫描显示方式,复用的程度不是无限增加的,因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素.我们通过实验发现,当扫描刷新频率(发光二极管的停闪频率)为50Hz,发光二极管导通时间≥1ms时,显示亮度较好,无闪烁感.。经过上述两种方案比较,我们采用方案二。1.2.3芯片的选择:方案一:采取并口输入,能更准确的控制到每一个led。使led旋转屏能呈现更好的效果。方案二:选取串口输入,但驱动力弱,对于旋转LED显示屏来说不稳定。经过上述两种方案比较,我们采用方案一。1.2.4键盘选择:方案一:采用独立式键盘。由于各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。此种键盘适用于按键较少或操作速度较高的场合。方案二:采用行列式键盘。它由行线和列线组成,按键位于行列的交叉点上,行线信号和列线信号分别通过两个接口和CPU相连,通过行列扫描法判定按键的位置。方案三:采用并串转换。将口线数据输入到单片机的串行口,利用串行通信方式0扩展键盘接口,这样节省了IO口,但牺牲了速度。综合考虑,采用方案一与方案二的巧妙结合。1.2.5电机选择方案1:采用步进电机。步进电机能够准确的定向,但是图像或者文字的分辨率受到步进电机的步进角度的限制。并且步进电机以及控制电路成本较高,并且需要单片机控制,占用CPU的资源。方案2:采用普通的电机。此方案不占用单片机I/O口,节省单片机资源,使用方便,成本较低,通过简单的改装,可以给系统供电。综合各方面考虑,为了节省成本,简单系统电路,以及更方便的为系统供电,使系统能够长期工作,故采用方案2。1.2.6电机驱动模块的选择:方案一:使用高耐压复合晶体管芯片ULN2003来驱动电机。方案二:使用L298N电机驱动模块。ULN2003最大工作电流为500mA,对于本系统中的直流减速电机驱动能力不足。相反,L298N电机驱动芯片工作电压高,最高工作电压可达46V,内含两个H桥的高电压电流全桥式驱动器可以很好的控制本系统中的直流减速电机。故采用方案二。1.2.7液晶的选择:方案一:带中文字库的128864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块方案二:12232具有2560位显示RAM(DDRAM),即80×8×4位具有与68系列或80系列相适配的MPU接口功能,并有专用的指令集,可完成文本显示或图形显示的功能设置综合考虑,我们采用方案一的串口,既节省了IO口,和得到更多的显示信息。1.2.8无线通信模块选择方案1:使用采用红外通信,电路简单,但红外通讯需要大量的编码、译码,程序设计复杂,且由于AT89S52速度比较慢,在短时间难以做太多的运算,故不采用此方法。方案2:使用NRF2401无线模块通信。nRF2401是单片射频收发芯片,工作于2.4~2.5GHzISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。且电路比较简单,使用方法也简单,只需把数据送到串口,就可以立即发送,只需进行初始化,不需要对数据进行曼切斯特编码,具有全双工的通信功能,受外界影响较小。在处理器运算速度相对比较慢的情况下,采用此方法。

第二章理论分析与计算2.1旋转LED显示屏简介LED显示屏已广泛应用于广告、车站、银行、商场等公共场所。它具有功耗小、寿命长、色彩好等优点。现在的LED显示屏的发光器件主要采用LED平板模块,室内显示屏主要采用16行循环扫描的方法,即每16行为一个单元,在每一帧中,逐次每行亮十六分之一秒的时间,由于帧频一般大于60Hz,我们并不觉察到扫描,而认为是一幅稳定的图像。这种类型的显示屏有两个问题有待改进:第一、显示屏整个面积全由LED模块组成,器件数量多,成本高;第二、由于显示屏是一个平面,而且LED象素点有一定视角限制,使显示屏的可视范围被局限到正面某个范围之内,在应用中使显示屏的信息发布受到了空间的限制。新型的旋转柱式显示屏,克服了以上两个不足,以机械转动扫描方式代替逐行扫描,成本大大降低,可视范围做到了360度。本文介绍了它的显示原理,系统组成,指出了设计中要注意的几个核心问题,并提出了一些新的发展方向。旋转扫描的原理:由于人眼具有视觉暂留的特性,当画面以一定速率刷新时,我们看到的就是连续的图像,电视机显示采用逐点扫描方式,每秒钟要刷新画面50场(25帧),而在人眼中则是一幅完整的画面,传统LED显示屏一般采用1/16扫描,16行进行逐行循环点亮,由于刷新速率足够大,看到的也是一幅稳定的画面。它的原理示意如图2-1所示,其中(a)(b)(c)(d)(e)分别是不同时刻的显示状态,(f)为人眼看到的完整画面“3”。在这种LED显示屏中,采用的是逐行换位下移点亮器件的扫描方式,每一行都必须有LED显示器件,这就使显示屏的成本偏大。图2-1传统LED显示屏的显示原理图旋转扫描方式显示器只有一列,由电机带动它进行旋转,运行到某一位置时就显示该位置的状态,到下一位置后又显示下一位置的状态,即一列显示器件要完成全部图像的显示,扫描过程由机械转动更换位置来实现.其显示原理如图2-2。所示。图中a)b)c)是图2-2旋转柱式显示屏的显示原理图不同时刻的显示状态,d)是人眼看到的完整画面“3”。由于旋转扫描成像不是平面,而是一个柱面,所以称之为旋转柱式显示屏,其观看视角是360°。2.2系统机械结构旋转式LED文字显示装置示意图如图2-3所示。电机安装在底座上,电机旋转时带动着旋转式LED也旋转。旋转式LED和电机通过一个齿轮盘连接,大致结构如图2-3所示。图2-3系统机械结构2.3重心调节重心调节是最困难的一个技术环节。旋转的重心直接关系到系统的稳定的运行,以及安全性问题。旋转的重心如果不在转轴上的话,在高速的旋转中,会产生剧烈的抖动,在巨大的离心力下,会使整个系统分解,产生安全隐患。所以,重心调节是必须解决的问题。下面介绍重心调节的方法。首先是电路板的外观设置。根据物理质心计算方法,可知道,均匀的圆盘的重心就在圆盘的中心。但是,由于电子器件的封装,重量都是不同的,圆盘电路板的重心是不均匀分布的,比较难调节,故不采用这种方法。 根据杠杆原理,当支点两端的物体的质量与力距乘积相等时,杠杆就处于平衡。因此我采用了长条方型的电路板结构。M1M2M2M1M1M2M2M1L2L1L2L1L1 L1 图2-4杠杆原理示意图如上图2-4所示,只要M1*L1=M2*L2时,在布PCB的同时,只要通过简单的测量和计算便可以使得杠杆处于平衡。

第三章系统的硬件电路设计3.1系统硬件框架图根据前面方案的论证,我们设计出本系统的总体架构如图3-1所示。图3-1系统硬件框图3.2单片机最小系统STC89C52单片机最小系统包括晶体振荡电路、复位开关和电源部分。下图为AT89C52单片机最小系统。图3-2单片机最小系统图3.3旋转式LED模块在单片机的IO口串联一个电阻与led相连,最后接到VCC上。当IO口为低电平时点亮led灯。图3-3旋转式LED模块3.4RF模块图3-4RF模块内部结构图为了解决显示屏在高速旋转的情况下不便于接线进行显示内容的更改存在的问题,我们采用NRF24L01来实现主从控制器之间进行通信,NRF24L01是NORDIC公司最近生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的EnhancedShortBurst协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2Mbps。NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信能。图3-4是NRF24L01的内部结构图。3.5串口通信模块为了解决RF无线通信与电脑上位机通信的同步数据处理问题,本系统采用STC89C52作为微处理器,通过串口通信将显示屏更改的内容发送到单片机上,然后再由RF无线通信模块将数据发送给LED显示屏微处理器。-图3-5串口模块电路3.6RF供电模块由于电压工作范围:1.9V~3.6V,直接用5V给RF模块供电会使其烧坏,为了保证其能正常工作,采用AMS1117稳压管给其提供3.3V电压。3.3V供电模块电路如图3-6所示。图3-63.3V供电模块3.7LCD显示模块图3-7LCD(12864)显示液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字和图形,内置8192个中文汉字,128个字符,可与CPU直接接口,提供两种界面来连接微机处理器(嵌入式处理器STC12C5A60S2):8位并行及串行两种连接方式,有多种功能:光标显示,画面移动,睡眠模式,外观尺寸:93×70×12.5mm,视域尺寸:73×39mm,本系统使用8位串行连接方式,用LCD12864显示直流电机将的电压和电流值。3.8电压、电流检测模块(一)主函数主函数的流程框图如图1所示。主函数主要是调用系统初始化函数和循环开启ADC转换,这是由于ADC10采用单通道单次转换模式,每次采样后需要重新开启ADC,才会进行下一次信号采样转换。另外,信号的采样与处理以及电压值的显示都是通过中断来完成。(二)系统初始化函数系统初始化的流程框图如图2所示。该函数对看门狗的工作模式、所需的I/O口以及ADC10和12864进行定义或初始化配置。(三)ADC初始化函数ADC初始化的流程框图如图3所示。该函数的任务是对转换控制寄存器ADC10CTL0和ADC10CTL1的初始化配置。其中,ADC10CTL0需要配置的是ADC10的开关、采样周期、参考电压、ADC10中断使能;而ADC10CTL1则只需要对外部采样通道和ADC的工作模式进行选择。(四)液晶屏初始化液晶屏初始化的流程框图如图4所示。该函数需要写指令控制:清屏指令、功能设定为基本指令集操作、地址归0、开显示且关闭光标及其反白显示。(五)中断函数中断函数用到了ADC中断函数和看门狗中断函数。ADC中断函数的流程框图如图5所示,每4个ADC10CLKS周期会产生一次中断,ADC10会将采集到的电压值自动保存在转换存储寄存器ADC10MEM中,直接读取该寄存器就可以取出数据,再通过固定的转换公式转换成测得的电压值。看门狗中断函数的流程框图如图6所示,每隔1s会产生一次中断,更新液晶屏显示的电压值。第四章系统的软件设计4.1系统程序流程图系统软件设计采用模块化设计的方法,它是把一个功能完整的较大的程序分解为若干个功能相对独立的较小的程序模块,对各个程序模块分别进行设计、编程和调试,最后把各个调试好的程序模块联成一个大的程序。模块化程序设计的优点是单个功能明确设计和调试比较方便、容易完成。一个模块可以为多个程序所共享。模块化编程的具体体现是把各个功能相对独立的模块作为子函数,主程序是一个不断循环检测结构。当系统上电自检、初始化后,进入信号输出的循环,并自动查询面板按键的状态,以检测用户可能输入的指令,确定程序将要执行的功能。本系统软件由上位机界面、主控机程序模块、从机程序模块以及MSP430测量模块组成。4.2上位机界面设计上位机界面在易语言开发环境下调试并实现功能。易语言具有全可视化编程、集成化开发环境。集界面设计、代码编写、调试分析、编译打包等于一体的优点。图4-1上位机操作界面

4.3主控机程序流程设计首先,对单片机串口初始化,设置波特率为9600bit/s,以及nRF401初始化设置,因为nRF401是半双工的无线通讯,所以初始设置为发射状态,选择通信频道1。然后,调用取模软件对字符串进行取模,从串口通过nRF401把命令发送出去。图4-2主控机程序框架图4.4从机程序流程设计从机的程序开始,对NRF401、外部中断0、定时器0进行初始化,然后进入默认的中文显示模式,因为13阵列每个点显示的时间是由定时器确定的,但是,电机的转速,一开始都是不确定的,先通过霍尔元件将电机的转速测量出来。然后再四分屏显示信息。下面简单说下,自适应算法的实现过程。首先,把假设旋转一周显示的点阵数为16*128。那就意味着旋转一周需要显示的点数为128个。由于电机旋转一周产生的中断次数为3次。那么每次外部中断发生时,应该扫描的点数为43个。在这里我设计为45个。也就是外部中断产生时,定时器应该产生的中断次数为45次(也就是扫描45个点)。当进入外部中断时,通过判断计时的中断次数来重新调整计时器的值,如果定时器中断次数大于45,表明LED显示一个点的时间太短(图象或者文字宽度减少),应该适当的延长定时器定时时间;若定时器中断次数小于45,表明LED显示一个点的时间过长,应该适当减少定时器定时时间。通过对定时器定时时间的不断调整(也就是调整LED显示每一个点的时间),从而达到稳定的显示。这种方法只需在软件上进行修改、调试,即使电机的转速发生了改变,也能够正确的显示文字或图象。图4-3从机程序流程图4.5MSP430测量程序流程设计

第五章测试方法和结论5.1测试方案及测试仪器测试方案:将MSP430模块开启后,用万用表测量直流电机的电压和电流值,反复测量多次并记录数据,然后比较LCD12864液晶显示的电压和电流值。开启另外一个MSP430模块,对电机进行PWM控制,用示波器演示PWM输出引脚的波形。同时也用示波器测试无线发射是否成功。测试所用仪器见表4.1所示。表5-1 测试仪器序号名称、型号、规格数量1FLUKE17B万用表12TDS-2024数字存储示波器15.2数据测试5.2.1电压电流测量数据表5-3直流电机电压、电流测量结果次数LCD显示值万用表测量值电压值电流值电压值电流值17.4V0.539A8.14V0.485A27.18V1.230A8.62V1.10737.07V1.136A7.78V1.022A46.94V1.024A7.63V0.922A56.81V1.0067.49V0.905A5.1.2RF实际通信过程示波器图对于NRF2041的编程主要是通过命令以及中断信号IRQ共同完成的。对于发射节点,如果使能ACK和IRQ功能,则当通信成功以后(也就是发射节点接收到了接收节点送回来的ACK信号)IRQ线会置低;对于接收节点如果使能ACK和IRQ功能,则当通信成功以后IRQ线会置低。根据以上情况,用示波器测试RF无线模块是否收发成功。黄色信号是CE,绿色信号是IRQ,接收成功的示波器如下图所示。图5-1RF发射成功波形图5.3测试结果分析从表5-2、5-3我们可以看出,在基础部分,直流电机的电压和电流值,误差比较下,与预期效果比较符合。从图5-1可知,从第一批SCK的最后一个信号到IRQ置低大致需要1ms,说明通信成功。

第六章小结在这次选拔赛中,使我们熟悉的掌握51单片机和msp430单片机的编程,我们制作的旋转式电子桌椅基本上完成题目的基本要求,实现了控制好直流电机的转速,使直流电机的转速平稳,也完成了无线通信和上位机模块,但是有一些问题没有完全解决,比如通信协议中的数据处理不是很完善。通过这次选拔赛,我们学到了很多,它锻炼了我们的团队合作能力;同时强化了我们队专业知识的学习,将理论应用于实际。第七章参考文献[1]陈尚松,雷加,郭庆.电子测量与仪器[M].北京:电子工业出版社,2005:108~126[2]徐科军.传感器与检测技术[M].北京:电子工业出版社,2004:12~33[3]马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,1999:20~83[4]王幸之.AT89系列单片机原理与接口技术[M].北京:北京航空航天大学出版社,2004:33~52[5]Schultz.Candthe8051:ProgrammingandMultitasking.PTRPrentice-Hall.1993:33~52[6]何立民.MCS-51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,2003:59~102[7]康华光.电子技术基础模拟部分(第五版)[M].北京:高等教育出版社,2006:101~147[8]樊昌信,徐炳祥,吴成柯等.通信原理(第五版)[M].北京:国防工业出版社,2004:133~137[9]阎石,数字电子技术基础(第五版)[M].北京:高等教育出版社,2006:109~114[10]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,2004:87~120.[11]戴佳,苗龙,陈斌.51单片机应用系统开发典型实例[M].北京:中国电力出版社,2005:25~85.附录一:主电路原理图

附录二:部分源程序主控机主程序#include"head.h"#include"RF.H" //RF发送模式//#include"dianzheng.h"#include"uart.h"/*RF发送延时函数和发送数据函数*/voidDelay()//@11.0592MHz延时时间为4*RF_BHms{uchari,j,k;k=30;do{ i=44;j=3; do{while(--j);}while(--i); }while(--k);}voidRF_FS(){uinti=0; RF_DJ; RF_BW(); for(i=0;i<32;i++){RF_W(uart_data[i+num_fs*32]);} num_fs++; if(i==32){i=0;} if(num_fs==5) {num_fs=0;} RF_END; RF_QD; }voidmain(void){ucharm;/*初始化部分*/RF_DJ;RF_INIT();RF_END;RF_SRX; InitUART();SendStr("UARTtest,技术论坛:请在发送区输入任意信息");ES=1;/****************END*********************/while(1){//display(); //点阵显示(后三行均为显示处理)//shijian++;//if(shijian==50){shijian=0;wu++;}//if(wu==20){wu=0;}if(Flag_RF==1){ Flag_RF=0;//RF发送标志位清零 for(m=0;m<20;m++) { if(!RF_IRQ){RF_DJ;RF_SRX;RF_END;RF_CIN;RF_CRX;RF_QD;} Delay(); RF_FS(); }}} }(二)从机主程序//#include"dianzheng.h"#include"STC12LE5204AD.H"#include"LED.H"#include"RF.H"uintnum=0;uintnum_js=0; //RF接收的移位标志位(每次移32位)voidRF_DACL(){//从机号流水号误码命令数据uinti;if(RF_RREG(0X07)&0X30){RF_END;RF_SRX;return;}//接收中断验证 RF_BR();//设置连续读模式 for(i=0;i<32;i++){pai3[i+num_js*32]=RF_R();} num_js++; if(num_js==5){num_js=0;TR0=1;}}voidmain(void){/*初始化部分*/RF_DJ;RF_INIT();RF_END;RF_SRX;IT0=1;//跳变沿出发方式(下降沿)EX0=1;//打开INT0的中断允许。设置INT1IT1=1;EX1=1;TMOD=0x02; //选择方式2TH0=0xA3; //0.1MSTL0=0xA3;ET0=1; //开定时器0中断EA=1; //开总中断TR0=1; //开定时器0P0=0xFF;P1=0xFF;/****************END*********************///TR0=1; while(1) { v=10000/n; bai=v%1000/100; shi=v%100/10; ge=v%10;// display(); //点阵显示(后三行均为显示处理)// shijian++;// if(shijian==50){shijian=0;wu++;}// if(wu==20){wu=0;} if(!RF_IRQ){TR0=0;RF_DJ;RF_DACL();RF_END;RF_CIN;RF_CRX;RF_QD;}//RF_END;RF_SRX; } }voidint0(void)interrupt0{ display1(); n=t; t=0; } voidtime(void)interrupt1{ t++; if(t==n/4) { display2(); } if(t==2*n/4) { display3(); } if(t==3*n/4) { display4(); }}(三)MSP430测量主程序/*msp430g2553电流检测及PWM调速*/#include<msp430g2452.h>#defineuintunsignedint#defineucharunsignedchar#defineBIT(x)(1<<(x))#defineRange_3V0//量程为0~3V#defineRange_15V1//量程为0~15VvoidSystem_Init(void);voidADC_Init(void);voidLCD_Init();voidLCD_Send(uchartype,uchartransdata);voidDelay_nms(uintn);voidLCD_Pos(ucharx,uchary);voidLCD_Display_String(constuchar*pt,ucharnum);voidLCD_Display(longintData);voidLCD_Display_Digit(longintnum);ucharLCD_Table[]={'0','1','2','3','4','5','6','7','8','9','.','A'};longintVoltage;//全局变量VoltagelongintAO;//全局变量AuintVoltage_Range;voidSystem_Init(void){WDTCTL=WDT_ADLY_1000;//看门狗工作在定时器模式,1s中断一次IE1|=WDTIE;//使能看门狗中断P1DIR|=BIT0+BIT1+BIT6; //相应的位端口设置为输出P1DIR&=~BIT3;//P1.3作为按键输入P1SEL|=BIT6;//P1.6作为PWM输出P1IE|=BIT3;//P1.3interruptenabledP1IES|=BIT3;//P1.3Hi/loedgeP1REN|=BIT3;//P1.3pullupCCR0=10000;//PWM周期=(CCRO+1)/1048576,频率=1.048576MHz/(CCRO+1))CCTL1=OUTMOD_7;//CCR1reset/setCCR1=1000;//CCR1PWM占空比%=(CCR1+1)/(CCRO+1)TACTL=TASSEL_2+MC_1+TACLR;//MCLK,upmode,适用于高频率P1SEL|=BIT4;//P1.4为A4通道Voltage_Range=Range_3V;//Range_3V即量程为3V,Range_15V即量程为15VADC_Init();//ADC初始化;LCD_Init(); //液晶初始化}voidADC_Init(void){ADC10CTL0&=~ENC;//复位转换允许位ADC10CTL0|=ADC10ON+ADC10SHT_0+SREF_0+ADC10IE;//设置转换控制寄存器ADC10CTL0,ADC10ON=0x010,使ADC10内核工作//ADC10SHT_0=0*0x800u,确定采样周期为4xADC10CLKs//SREF_0=0*0x2000u,选择参考电压为VR+=AVCC,VR-=AVSS//ADC10IE=0x00使对应通道转换后产生中断ADC10CTL1|=INCH_4+CONSEQ_0;//设置AD转换控制寄存器ADC10CTL1,INCH_0=0*0x1000u,选择通道A4//CONSEQ_1=1*2u,设置工作模式为单通道、单次转换模式ADC10CTL0|=ENC+ADC10SC;//设置转换控制寄存器ADC12CTL0,ENC=0x002使转换允许位为1//ADC12SC=0x001使采样/转换控制位为1_EINT();//总中断使能}#pragmavector=ADC10_VECTOR__interruptvoidADC10_Interrupt(void){uintdata;data=ADC10MEM;//将AD采样值存入dataif(Voltage_Range==Range_3V)//V(实际)=(VR+-VR-)*data/1023+VR-Voltage=(uint)(0.540*35.4*data/10.23);//Voltage是实际电压值的1000倍elseVoltage=(uint)(35.4*data/10.23*5.38);}#pragmavector=WDT_VECTOR__interruptvoidwatchdog_timer(void){LCD_Display(Voltage);//显示电压值}voidLCD_Init(){Delay_nms(2);LCD_Send(0,0x01);//清屏指令Delay_nms(2); //延时等待液晶完成复位LCD_Send(0,0x30); //功能设定:基本指令集操作Delay_nms(2);LCD_Send(0,0x02); //地址归0Delay_nms(2);LCD_Send(0,0x0c); //开显示,且关闭光标及其反白显示Delay_nms(2);}voidLCD_Send(uchartype,uchartransdata){ucharfirstbyte=0xf8;uchartemp,i,j;if(type)firstbyte|=0x02;P1OUT&=~BIT1;for(j=3;j>0;j--){switch(j){case3:temp=firstbyte;break;case2:temp=transdata&0xf0;break;case1:temp=(transdata<<4)&0xf0;br

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论