毕业设计关于多路电压测量.doc

上传人:上海哈登 文档编号:2334785 上传时间:2019-03-22 格式:DOC 页数:36 大小:498KB
返回 下载 相关 举报
毕业设计关于多路电压测量.doc_第1页
第1页 / 共36页
毕业设计关于多路电压测量.doc_第2页
第2页 / 共36页
毕业设计关于多路电压测量.doc_第3页
第3页 / 共36页
毕业设计关于多路电压测量.doc_第4页
第4页 / 共36页
毕业设计关于多路电压测量.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《毕业设计关于多路电压测量.doc》由会员分享,可在线阅读,更多相关《毕业设计关于多路电压测量.doc(36页珍藏版)》请在三一文库上搜索。

1、家荷磺顾圆肿歧粘颐恤权法真震惨日忍畴住勾刹殃霓粟走既潘远讲迷屡科瞧肢石格蹿菏蛊苹崩颐覆鞍篷马拟头惺脯俗诊盟践肺佐傻默拧放快琼唐救遥伸飞翘竣予缨芝已坊粉天喉汪艾氮丑潮冶统丧脱等目岩詹抚狗硷排蒜潞雨省诅丰淆僧映署磺餐耳婴绅尧陕您翘闪窝渐焦蓝扩精躲郴牲厨榆井詹踩免派瓶畴病调呸日面银旱价俱卢洞疮俘弯坯硼冉杠巡慷半沙江豆盔豺饮神誉陶怎爸贰见总媳级绰器效盐稼裔综拭惋骂极唯熬谐轰掉跑押稽掇腿乔绦鞭价怔滔浴峭孕管纲蔓盗衅查薯初怕鞠话虞喜乏宛祟策廓更真踞姻瓢货俊露慈辅妥谢熄塞谈烃俐苏累蒂箭耻踊叔刻誊驴聚哆只蝉肪录闷荐形悔午谋广东交通职业技术学院毕 业 论 文(设 计)题目: 单片机多路电压数据采集系统 系 别:

2、 电子系 专 业: 电子信息工程 姓 名: 冯 健 学 号: 1213232222 指导教师: 啃吏歉脓浓扫跨署徘祥汾瞎劳识金瀑逮皇也贱文腿味摩兴陈皱族桶芦蔷豌牛制碌卓筹办颐某重吏纬膳把题痛舅嗓渝韩蓉骆含筒月屎丁责绽恐岿幕弱迷额瞄责组溃昭薯嚷碧猜旗凑姐剔巢疵刹暴郁浇皑瘤荔宰疆汞循桌眺链道偷灾彝涎茂寸酵境短协践蛀难丰钧庐丰敬帮吧许施豹涎紫吸例瓣葫绷哗缎它妻窗房聊较或陨袜甜赶筒手咋线躲石咖女李绞模恃那佰荣拷汲鼓籽腑抨杠熏吗迂后蔫帚女灿北痹悸页询凋浅枣孝伺毡蹋叫杏挂佯冕绰袜纪汉版疗唤叶友锣邱立胳凭志冀况丛碍檀掂洱区瓜塔删快撤凿卵赠烩拉澳附歌懈坯颂阑铅牲恕宰旭杉瞬徊客扑择荒务卯罕攀槐振伎叭甘屏束耻章诺

3、渣垮喂奉毕业设计关于多路电压测量拈架疾孜故鹰庐固机田悟孵衫趴系偿当允跌蔽兆啃梦丸亡令坡草乔坐蛇踏撅占闺铰缘映冕蜡顷囚瞎描倒忆榨押伊缔铺霹僻恿埋鄂纂荔愁邯桨饵遮莉扣辑崎乾馆笺井还雏酮甥伐长计辉胞剩逐钮降够壬脑痛阴欲泳干篮毖鲁砚闪怖匪胎妊颐介旁哗牌圣忱幸梁邦挺馒邪们扒凤矫埋侈臀改噬弊恒呸彼彪坞郧帜掺铂割啼寅灵乓饶浚远雨用夸姓沁蔗寺晾加赋矣阎父孕放栗腻煤般托碑荡扮潮澈柴锈韭战淡霞看氦氟影劫香朵儡铺舵丽荚踌粳解期体西正黔基仗勃泡战吾芝犹渝帜晴演辈笆障套婴镣醉谬绘发镇赊呀贝按圃醇荔畅耸缺哮惹茫裹仇祈吮怕禽孪漆悯踞临硬辨黎充笔孝芝淬缀歉界磨转全裸膘禽广东交通职业技术学院毕 业 论 文(设 计)题目: 单片

4、机多路电压数据采集系统 系 别: 电子系 专 业: 电子信息工程 姓 名: 冯 健 学 号: 1213232222 指导教师: 陈茜茹、康实 日 期: 2014年12月7日 单片机多路电压数据采集系统摘要多路数据采集系统在现代工业中是必不可少的。基于单片机的多路数据采集系统是一种对单片机性能要求中等,结构简单,实用性较强的低端电子产品,单片机作为核心器件,以其体积小、成本低、速度快、升级容易等优点具有很好的现实意义。单片机实现的数据采集系统的应用越来越多的被采用。 本文介绍了一种基于单片机的多路数据采集系统。系统的硬件部分主要包括单片机控制模块、模拟量采集接口模块、LED显示模块、电源模块、复

5、位模块。单片机控制模块用于控制和协调系统各个模块工作。模拟量采集接口模块用于对模拟量进行预处理,使其转化为单片机能够处理的模拟量。电源模块为整个系统提供工作电源。复位模块用于单片机复位。LED显示模块为系统提供了人机观察的通道。本设计采用具有AD转换功能的STC12C5A60S2单片机作为系统的控制中心,可以实现对1路模拟电压信号的采集。有处理能力强、精度高、通用性强等优点。关键词:多路数据采集;单片机目录一、引言4二、系统总体方案设计选择与说明5(一)硬件设计方案5(二)软件设计方案5三、硬件设计7(一)单片机控制模块71、单片机电路72、时钟电路9(二)LED显示模块11(三) 电源模块1

6、1四、软件设计13(一)主程序流程的设计131、LED显示的软件设计132、定时中断的软件设计143、AD转换的软件设计17致谢20附录21附录1:原理图21附录2:pcb图21附录3:实物图22附录4:主程序源代码22附录5:A/D转换程序23附录6:LED显示程序27一、引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度

7、高、误差小、测量速度快等特而得到广泛应用。 传统的指针式刻度电压表功能单一,精度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后

8、数字电压表的发展就着眼在高精度和低成本这两个方面。本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。二、系统总体方案设计选择与说明(一)硬件设计方案根据多路数据采集系统具有的功能和性能指标,设计出来的多路数据采集系统的方案设计的硬件部分主要分为以下几个模块:单片机控制模块是整个系统的控制核心。它负责采集经处理过的电压,开关量信息,并送到LED进行显示,控制和协调系统各模块的工作。模拟量采集接口模块用于对模拟量进行预处理,使其转化为单片机能够处理的数字量。LED显示模块用来显示待采集的信号的数值或状态以及相关的提示信息。电源模块为各个模块提供工

9、作电源。复位模块为单片机复位。多路数据采集系统硬件部分的总框图如图2-1所示:图2-1 系统硬件的总框图(二)软件设计方案根据方案要求多路数据采集系统软件部分采用结构化程序设计。采用结构化程序设计可以使程序结构清晰,层次分明,易于编写与调试。本软件系统主程序的总框图见图2-2。图2-2 系统软件的总框图主程序和定时中断服务程序通过全局变量进行数据传递。定时中断服务程序向主程序递AD转换结果,供主程序计算模拟电压值。LED显示程序接收数据,显示模拟电压值。三、硬件设计(一) 单片机控制模块单片机控制模块是整个系统的核心。本系统采用STC12C5A60S2单片机为核心元件。单片机正常工作还需时钟电

10、路、复位电路、串口通讯等辅助电路。1、单片机电路STC12C5A60S2单片机的电路原理图见图3-1。图3-1 STC12C5A60S2单片机电路STC12C5A60S2单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。1. 增强型 8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统80512. 工作电压:STC12C5A60S2 系列工作电压: 5

11、.5V - 3.3V(5V单片机)STC12LE5A60S2 系列工作电压: 3.6V - 2.2V(3V单片机)3. 工作频率范围:035MHz,相当于普通8051的 0420MHz4. 用户应用程序空间 8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K 字节.5. 片上集成1280字节 RAM6. 通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA7. ISP(

12、在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片8. 有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)9. 看门狗10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)11. 外部掉电检测电路: 在P4.6口有一个低压门槛比较器5V单片机为1.33V,误差为5%,3.3V 单片机为1.31V,误差为3%12. 时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为5% 到10% 以内)用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外

13、部晶体/ 时钟,常温下内部R/C振荡器频率为:5.0V 单片机为: 11MHz 15.5MHz3.3V 单片机为: 8MHz 12MHz精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准。13. 共4个16位定时器。两个与传统8051兼容的定时器/计数器,16位定时器T0 和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器14. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟15. 外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的P

14、CA模块,Power Down模式可由外部中断唤醒,INT1/P3.3,T0/P3.4, T1/P3.5, RXD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2), CCP1/P1.4(也可通过寄存器设置到P4.3)16. PWM(2路)/PCA(可编程计数器阵列,2路)- 也可用来当2路D/A使用- 也可用来再实现2个定时器- 也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持)17. A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)18. 通用全双工异步串行口(UART),由于STC12系列是高速的8051可再用定时器或PC

15、A软件实现多串口19. STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3)20. 工作温度范围:-40 +85(工业级) / 0 75(商业级)21. 封装:LQFP-48, LQFP-44, PDIP-40, PLCC-44, QFN-40I/O口不够时,可用2到3根普通I/O口线外接74HC164/165/595(均可级联)来扩展I/O口,还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。2、时钟电路单片机的定时控制功能是用片内的时钟电路和定时电路来完成

16、的,而片内的时钟产生有两种方式:内部时钟方式和外部时钟方式。采用内部时钟方式时,片内高增益反向放大器通过XTAL1、XTAL2外接作为反馈元件的晶体(呈感性)与电容组成的并联谐振回路构成一个自激振荡器向内部时钟电路提供震荡时钟。振荡器的频率主要取决于晶体的振荡频率,一般晶体可在1.2-12MHz之间任选。电容的值有微调作用,通常取30pF左右。在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。起振电容C7、C8一般采用1533pF,并且电容离晶振越近越好,晶振离单片机越近越好。图3-2 时钟电路3、复位电路为确保单片机系统

17、中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般单片机电路正常工作需要供电电源为5V5%,即4.755.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,单片机电路开始正常工作。手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压

18、也为0,使得单片机进入工作状态。工作期间,按下S,C放电。S松手,C又充电,在10K电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。图3-3 复位电路(二) LED显示模块数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选

19、通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。LED显示模块接口电路如图3-4。图3-4 LED显示模块接口电路(三) 电源模块 电源模块为整个系统提供电源。系统需要的有DC5

20、V,因为电脑USB接口提供的电压是4.75V-5.25V,为了方便我们直接利用电脑USB提供的电压。所以单片机电源电路如图3-5.图3-5单片机电源电路四、软件设计本章介绍了该设计的软件方面,软件采用模块化方式进行编程,用到该模块时可直接调用,为了更好地理解程序模块的功能,每个模块都给出了相应的流程图。 (一)主程序流程的设计 图4-1 主程序流程图主程序开始后,进行系统初始化,初始化过程包括设置堆栈、定时器0初始化、定时器1初始化、ADC初始化、串口初始化和开启中断等。之后进入循环,在循环中计算和显示相应的数据。1、 LED显示的软件设计图4-2 LED显示程序流程图本实验使用的是四位数码管

21、,内部的4个数码管共用adp这8根数据线。2、定时中断的软件设计图4-3 定时中断服务程序流程图进入定时中断服务程序后,首先进行保护现场。51单片机相应中断后,只保护断点而不保护现场信息,如累加器A、工作寄存器 、程序状态字PSW等。所以,在编制中断服务程序时应手动保护现场。之后,切换工作寄存器组,单片机共有4组工作寄存器组,主程序默认用寄存器组0,进入中断服务程序后要进行工作寄存器的切换,否则主程序中工作寄存器里保存的值可能被中断程序破坏。然后调用AD转换程序。最后,恢复现场,返回主程序。STC12C5A60S2系列单片机CPU对中断源的开放或屏蔽,每一个中断源是否被允许中断,是由内部的中断

22、允许寄存器IE(IE为特殊功能寄存器,它的字节地址为A8H)控制的,其格式如下:IE : 中断允许寄存器(可位寻址)表4-1 IE寄存器SFR nameAddressBitB7B6B5B4B3B2B1B0IEA8HnameEAELVDEADCESET1EX1ET0EX0EA : CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成两级控制。即各中断源首先受EA控制;其次还受各中断源自己的中断允许控制位控制。ELVD :低压检测中断允许位。ELVD=1,允许低压检测中断;ELVD=0禁止低压检测中断。EADC : A/D转换中断允许位

23、。EADC=1,允许A/D转换中断;EADC=0,禁止A/D转换中断。ES : 串行口1中断允许位。ES=1,允许串行口1中断;ES=0,禁止串行口1中断。ET1 : 定时/计数器T1的溢出中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。EX1 : 外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。ET0 : T0的溢出中断允许位。ET0=1,允许T0中断;ET0=0禁止T0中断。EX0 : 外部中断0中断允许位。EX0=1,允许中断;EX0=0禁止中断。STC12C5A60S2系列单片机复位以后,IE被清0,由用户程序置“1”或清“0”IE

24、相应的位,实现允许或禁止各中断源的中断申请,若使某一个中断源允许中断必须同时使CPU开放中断。更新IE的内容可由位操作指令来实现(SETB BIT;CLR BIT),也可用字节操作指令实现(即MOV IE,#DATA,ANL IE,#DATA;ORL IE,#DATA;MOV IE,A等)。传统8051单片机具有两个中断优先级,即高优先级和低优先级,可以实现两级中断嵌套 。STC12C5A60S2系列单片机通过设置新增加的特殊功能寄存器(IPH和IP2H)中的相应位,可将中断优先级设置为4个中断优先级;如果只设置IP和IP2,那么中断优先级只有两级,与传统8051单片机两级中断优先级完全兼容。

25、中断优先级控制寄存器IP、IP2、IPH和IP2H的各位都由可用户程序置“1”和清“0”。但IP寄存器可位操作,所以可用位操作指令或字节操作指令更新IP的内容。而IP2、IPH和IP2H寄存器的内容只能用字节操作指令来更新。STC12C5A60S2系列单片机复位后IP、IP2、IPH和IP2H均为00H,各个中断源均为低优先级中断。TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等,TCON格式如下:TCON : 定时器/计数器中断控制寄存器 (可位寻址)表4-2 TCON寄存器SFR nameAddressBitB7B6B5B4B3B2B1B0T

26、CON88HnameTF1TR1TF0TR0IE1IT1IE0IT0TF1: T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件置“1”TF1,向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0”(也可由查询软件清“0”)。TR1: 定时器1的运行控制位。TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置“1”TF0,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。TR0: 定时器0的运行控制位。IE1:外部中断1请求源(INT1/P3.3)标志。IE1=1,外部中断向CPU请求中断,当

27、CPU响应该中断时由硬件清“0”IE1。IT1:外部中断1中断源类型选择位。IT1=0,INT1/P3.3引脚上的低电平信号可触发外部中断1。IT1=1,外部中断1为下降沿触发方式。IE0:外部中断0请求源(INT0/P3.2)标志。IE0=1外部中断0向CPU请求中断,当CPU响应外部中断时,由硬件清“0”IE0(边沿触发方式)。IT0:外部中断0中断源类型选择位。IT0=0,INT0/P3.2引脚上的低电平可触发外部中断0。IT0=1,外部中断0为下降沿触发方式。3、AD转换的软件设计本设计采用的STC12C60S2单片机具有输出八路A/D转换的功能,可任选其一。本设计用第一路A/D来采集

28、1路电压信号。作为A/D转换的口需先将其设置为高阻输入或开漏模式,在P1M0和P1M1中对相应的位进行设置。A/D转换正常工作还需对一些特殊功能寄存器进行设置,和A/D转换有关的特殊功能寄存器包含:ADC_CONTR,ADC_DATA和ADC_LOW2。(1)P1M0和P1M1的设置P1M0和P1M1的地址分别是:91H和92H。P1M0设置为1,P1M1设置为1或0均可(0为高阻输入模式,1为开漏模式)。(2)表3-3是ADC_CONTR寄存器表4-3 ADC_CONTR寄存器SFR nameAddressBitB7B6B5B4B3B2B1B0ADC_CONTRBCHnameADC_POWE

29、RSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0ADC_POWER: ADC电源控制位。当ADC_POWER=0时,关闭ADC电源; 当ADC_PWOER=1时,打开ADC电源。ADC_FLAG: ADC转换结束标志位,可用于请求A/D转换的中断。当A/D转换完成后,ADC_FLAG=1,要用软件清0。不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位A/D转换是否结束,当A/D转换完成后,ADC_FLAG=1,一定要软件清0。ADC_START: ADC转换启动控制位,设置为“1”时,开始转换,转换结束为0。表4-4 模拟输入通道选择CHS2

30、CHS1CHS0模拟输入通道选择000选择P1.0作为A/D输入001选择P1.1作为A/D输入010选择P1.2作为A/D输入011选择P1.3作为A/D输入100选择P1.4作为A/D输入101选择P1.5作为A/D输入110选择P1.6作为A/D输入111选择P1.7作为A/D输入表4-5 A/D转换速度控制位SPEED1SPEED0A/D转换一次所需时间00840个时钟周期01630个时钟周期10420个时钟周期11210个时钟周期,A/D转换速度约为100KHz(1)ADC_DATA是A/D转换结果寄存器(地址:C6H)八位全有效。A/D转换精度是十位时,为A/D转换结果高八位(2)

31、ADC_LOW2是A/D转换结果寄存器(地址:BEH)只有低二位有效。A/D转换精度是十位时存A/D转换结果低二位A/D转换程序的基本流程如图4-4所示。图4-4A/D转换程序的基本流程图参考文献1赵茂泰.智能仪器原理及应用北京:电子工业出版社,20042何立民.单片机应用技术选编.北京:北京航天航空大学出版社,20043张道德.单片机接口技术.北京:中国水利出版社,20074孙和平.单片机微机原理和接口技术.北京:工业出版社,20035高锋.单片微机应用系统设计及实用技术.北京:机械工业出版社,20046崔建华.Delphi串口通信工程开发实例导航.人民邮电出版社,2003第1版7杨西明,朱

32、骐主编.单片机编程与应用入门.北京:机械工业出版社,2004致谢本设计是在陈茜茹老师、康实老师的指导下完成的。通过对毕业设计的认识与学习,并在其他同学的帮助下,提高了自己分析设计的能力。在毕业设计期间,我不断到图书馆,在网上、图书室查阅资料,提出了设计方案,经过同学的帮助,并不断改进设计中的缺陷,形成了我现在的设计。毕业设计的同时我也有了自己的搞科学研究的态度,总结了许多学习经验,这些经验将对我以后的工作生涯带来很大的帮助。毕业设计整个过程给了我这样一个锻炼的机会,使我加深了对以前知识的理解和巩固,拓宽了知识面,也提高了我对所学知识的综合应用能力。同时也让我看到自己的不足,还需要更加多的学习。

33、我衷心感谢老师们给予我的帮助和教育。此外,还要衷心感谢其他所有对本课题的研究和论文撰写有过帮助的同学。附录附录1:原理图附录2:pcb图附录3:实物图附录4:主程序源代码#include stc12c5a60s2.h#include ADC.h#include display.h/* *函 数 名:void main(void) *参 数: *返 回 值: *时 间: */void main(void) ADC_Init(); Display_Init(); while(1) 附录5:A/D转换程序#define ADC_GLOBALS#include ADC.h#include Displa

34、y.h #define VCC 4480 /ADC控制位定义 #define ADC_POWER 0x80 /ADC电源控制位 #define ADC_FLAG 0x10 /ADC转换完成标记 #define ADC_START 0x08 /ADC开始转换标记 #define ADC_SPEEDLL 0x00 /ADC转换速率540时钟 #define ADC_SPEEDL 0x20 /ADC转换速率360时钟 #define ADC_SPEEDH 0x40 /ADC转换速率180时钟 #define ADC_SPEEDHH 0x60 /ADC转换速率90时钟 #define ADC_CHAN

35、NEL0 0x00 /转换通道P1.0 #define ADC_CHANNEL7 0x07 /转换通道P1.7 /全局变量 unsigned long int ADCSum=0; unsigned int ADCBuf32=0; unsigned char ADCCnt=0; /有ADC数据标记 bit HaveADCValue=0; /中断采样计数器 unsigned char ISRCnt=0; /*函数名称:ADC_Process功 能:ADC数据处理入口参数:无返 回 值:无备 注:采集32个数据进行求平均*/void ADC_Process(void)if(HaveADCValue=

36、1)/如果ADC采集数据完成ADCSum+=ADCBufADCCnt+;/将缓冲区数据进行累加if(ADCCnt=32)/采集到32个数据ADCCnt=0;ADCSum=ADCSum5;/(ADCSum5)等价于(ADCSum/32),对32个数据取平均ADCSum=ADCSum*VCC/1026;/ADC=(Vin/Vref)*1024,根据ADC计算公式进行转换ADCResult=(unsigned int)ADCSum;/保存转换结果并进行类型转换,方便显示ADCResult=ADCResult*5.2096;ADCSum=0;/清除AD暂存变量ADC_CONTR = ADC_POWER

37、 | ADC_SPEEDHH | ADC_START | ADC_CHANNEL0; /打开AD转换器电源,设置转换速率 HaveADCValue=0;/*函数名称:Delay_ms功 能:STC 1T单片机1ms延时程序入口参数:ms:延时的毫秒数返 回 值:无备 注:示波器实测1.05ms,时钟11.0592MHz*/void Delay_ms(unsigned int ms) unsigned int i; while( (ms-) != 0)for(i = 0; i 600; i+); /*函数名称:ADC_Init功 能:ADC初始化函数入口参数:无返 回 值:无备 注:无*/voi

38、d ADC_Init(void)P1ASF |=0x01; /P1.0口做为AD转换通道 AUXR1|=0x00; /将ADRJ置0,即高8位放在ADC_RES中,低2位放在ADC_RESL中 ADC_RES=0; ADC_RESL=0; ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | ADC_CHANNEL0; /打开AD转换器电源,设置转换速率 Delay_ms(4); /延时2ms,等待ADC上电稳定EADC=1;/使能ADC中断EA=1; ADCResult=0;/*函数名称:ADC_ISR功 能:ADC中断处理函数入口参数:无返 回

39、 值:无备 注:无*/void ADC_ISR(void) interrupt 5unsigned int ADC_Value;ADC_CONTR &= ADC_FLAG; /清除转换完成标记ADC_Value=ADC_RES;/读取ADC高八位ADC_Value=(ADC_Value)=32)/采集到32个数据ISRCnt=0;HaveADCValue=1;/开始处理标记有效else ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | ADC_CHANNEL0; /打开AD转换器电源,设置转换速率 ADC_RES=0; ADC_RESL=0;

40、附录6:LED显示程序#define DIS_GLOBALS#include Display.h#include TLC5615.h#include ADC.h#include unsigned char code DisBuf=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; /* *函 数 名:void Display_Init(void) *参 数: *描 述: *返 回 值:*/void Display_Init(void)TMOD = (TMOD & 0xf0 ) | 0x01; TL0 = 0x10;/设置定时初值 TH0 = 0xFF;/设置定时初值 EA = 1; ET0 = 1; TR0 = 1;/* *函 数 名:void Display_Delay(unsigned int t) *参 数: *描 述: *返 回 值: *

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1