基于stc12c5410ad的温度测量设计_第1页
基于stc12c5410ad的温度测量设计_第2页
基于stc12c5410ad的温度测量设计_第3页
基于stc12c5410ad的温度测量设计_第4页
基于stc12c5410ad的温度测量设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要3关键词3Abstract3Keywords3引言31、设计软件简介41.1 Altium designer简介41.2 Keil简介41.3 Protues简介52、数字温度计设计方案论证62.1 微处理器部分62.2 温度传感器62.3 显示模块72.4 键盘模块72.5 报警模块72.6 稳压电源83、硬件系统设计84、软件设计114.1主程序框图114.2 温度测量子程序框图125、系统调试135.1 硬件调试135.2 系统仿真146、小结14附件:15A、程序代码15B、谢辞24C、参考资料251、设计软件简介1.1 Altium designer简介Altium design

2、er是澳大利亚Altium公司发布的一款电路设计软件,它提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案一个既满足当前,也满足未来开发需求的解决方案。它的主要特点有:1支持不依赖于FPGA厂商即各个厂商通用的数字系统开发。2丰富的原理图库,有大量的预综合元件,包括处理器。3在工程的设计和调试阶段都支持原理图导向设计方法。4丰

3、富的虚拟仪器。5为了方便在FPGA上设计嵌入式系统,Altium Designer完全综合了Altium独特的基于FPGA的现场设计开发板NanaBoard(Nano-level Breadoard)和一系列的混合到原理图层的FPGA物理设备。一旦设计被综合并下载到NanaBoard,设计者就可利用JTAG通信技术对任何核进行通信和控制。6支持软硬件并行开发,克服以往嵌入式系统软硬件开发的串行开发形式中的缺点。这种方法必将成为以后FPGA开发的主流方法。本设计过程中使用的版本是Altium Designer Summer 7.0图1 Altium Designer Summer 7.01.2

4、Keil简介Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。图2 Keil uVision31.3 Protues简介Protues软件是英国Labcent

5、er electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC3

6、3、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。本设计使用的版本为Protues7.5 sp32、数字温度计设计方案论证2.1微处理器部分受课程设计要求的限制,微处理器部分使用STC12C5410AD单片机。STC12C5410系列单片机是由宏晶科技生产的单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。其主要性能特点如下:1增强型1T流水线/精简指令集结

7、构8051CPU2工作频率范围:035MHz,相当于普通8051的0420MHz3通过I/O口(27/23个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏4ISP(在系统可编程)/ASP(在应用可编程),无需专用编程器5可通过串口(P3.0/P3.1)直接下载用户程序6内部集成MAX810专用复位电路(外部晶振20M以下时,可省外部复位电路)7时钟源:外部高精度晶体/时钟,内部R/C振荡器,用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟8常温下内部R/C振荡器频率为:5.65MHz5.95M

8、Hz, 精度不高时,可选择使用内部时钟,但因为有温漂,应认为是5MHz6.5MHz9共2个16位定时器/计数器10PWM(4位)/PCA(可编程计数器阵列),也可用来在实现4个定时器2.2 温度传感器方案一:采用PT100。温度传感器PT100,测量精度高,但是同样需要外围电路支持,然后进行AD转化,考虑到简化电路,提高系统运行可靠性,以及经济性(一片ADC0809大约需要15-20元),我们采用以下数字式温度传感器DS18B20。方案二:数字是温度传感器DS18b20.此款温度传感器内置AD,可以提供8、10、12位的转换,最高转化精度可达0.0625°C,温度误差可以控制在0.1

9、内,体积小巧,单线制连接,通过串行方式发送数据,节省单片机I/O资源,而且功耗极低,可以单线制供电。缺点是转化速度比较慢,在要求高速测温的场合不适应。我们的设计是测量室温,其信号是个缓变信号,18B20完全可以胜任。DS18b20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现的数字值读数方式。DS18B20的性能特点如下:1、独特的单线接口仅需要一个端口引脚进行通信;2、多个DS18B20可以并联在惟一的三线上,实现多点组网功能3、无须外部器件;4、可通过数据线供电,电压范围为3.05.

10、5;5、零待机功耗;6、温度以9或12位数字;7、用户可定义报警设置;8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供

11、电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。每一个 DSl820 包括一个唯一的 64 位长的序号该序号值存放在 DSl820 内部的 ROM(只读存贮器)中开始8位是产品类型编码(DSl820编码均为10H)接着的48位是每个器件唯一的序号最后8位是前面56位的CRC(循环冗余校验)码DSl820 中还有用于贮存测得的温度值的两个 8 位存贮器 RAM编号为 0 号和 1号,1号存贮器存放温度值的符号如果温度为负则1号存贮器8位全为1否则全为 0, 0 号存贮器用于存放温度值的补码LSB(最低位)的1表示0.5将存贮器中的二进制数求补码再转换成十进制数并除以 2 就

12、得到被测温度值(-550-125 )DSl820 的引脚如图五所示每只 D51820 都可以设置成两种供电方式即数据总线供电方式和外部供电方式 采取数据总线供电方式可以节省一根导线 但完成温度测量的时间较长采取外部供电方式则多用一根导线但测量速度较快。2.3 显示模块在本设计中使用4位共阴数码管作为显示模块,其特点是使用简单,功耗小,所需的电路及显示程序也比较简单,缺点是显示的位数有限,并且引脚比较多,接线比较复杂。2.4 键盘模块键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。键盘分两大类:编码键盘和非编码键盘。    &#

13、160; 编码键盘:由硬件逻辑电路完成必要的键识别工作与可靠性措施。每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。      非编码键盘:只简单地提供键盘的行列与矩阵,其他操作如键的识别,决定按键的读数等仅靠软件完成,故硬件较为简单,但占用CPU较多时间。有:独立式按键结构、矩阵式按键结构。本设计使用4*4矩阵键盘。2.5 报警模块本设计可以实现温度上下限报警,使用一个蜂鸣器发出警报。当温度达到上限或下限时,P3.0口送出高电平,推动蜂鸣器发出声音。图3 报警模块设计2.6 稳压电源本

14、设计使用自制稳压电源,由于STC12C5410AD单片机、DS18B20以及MAX232等元件的工作电压均为5V,故使用5V稳压电源,稳压芯片选用LM7805。其设计电路图如图4所示:图4 5V稳压电源3、硬件系统设计为方便设计与检测,本设计采用模块化设计,即各个模块在焊接的时候并不直接相连,而是各自独立,当使用时通过排线将各个部分连接,这样做的好处就是方便了硬件的检测,当某个模块出现问题时可以很快速的检错,并且不会涉及其他模块。数字温度计的系统框图如图5所示,控制部分使用STC12C5410AD单片机,温度传感器使用DS18B20,显示部分使用4位LED共阴数码管图5系统框图单片机最小系统的

15、设计如图6所示:图6 单片机最小系统串口下载部分的设计如图7所示:图7 串口下载部分数码管显示电路部分设计如图8所示:图8数码管显示电路本设计使用的数码管为4位共阴数码管,其引脚与共阳数码管完全一样,只是点亮时需要在位选端加GND电平而在段选端加高电平,其位选驱动使用NPN三极管9013,当9013基极高电平选中时,会在集电极产生零电平从而选中该位。键盘模块设计如图9所示:图9 键盘模块综合后的系统设计如图10所示:(按住Ctrl并滚动鼠标中键查看详细设计)图10 温度测量硬件设计图4、软件设计4.1主程序框图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温

16、度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图。初始化读取温度键盘扫描检查键读出温度值温度计算处理显示数据刷新发温度转换开始命令NY调用显示子程序设置上下限温度图11 主程序框图4.2 温度测量子程序框图温度测量子程序功能是读出并处理DS18B20测量的当前温度值,读出的温度值以BCD码的形式存放在缓冲区,温度的正负用一个符号标志来表示,温度正表示为0温度负表示为1。注意:DS18B20每一次读写之前要先进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预订操作。图12 温度测量程序框图5、系统调试5.1 硬件调试根据所做的系统硬

17、件图,利用Altium designer所自带的调试根据,对硬件进行检查,主要是检查是否有引脚连接错误,因为在制作元件集成库的时候已经对每个元件引脚的电气属性进行了定义,故可以检查每个引脚的电气属性是否有错。图13 一个元件的引脚属性对系统进行检错后没有出现错误,如图14:(按住Ctrl并滚动鼠标中键查看详细)图14 系统检错报告5.2 系统仿真由于Protues没有STC12C5410AD单片机,所以本设计使用AT89C51单片机作为中央微处理器。其仿真图如下图15所示:图15使用Protues仿真系统图6、小结本次课程设计使用STC12C5410AD单片机作为处理器完成设计,使我认识了一个

18、全新的单片机,由于STC12C5410AD与51单片机兼容,我所学的51单片机的知识同样也能适用于这款单片机,这使得学习过程缩短了不少。但在动手自己做的过程中也遇到了很多问题,比如在使用51单片机的时候程序下载是通过USB-JTAG下载线下载,但STC12C5410AD是通过串口下载,我第一次焊电路的时候MAX232没有焊好,结果没发识别硬件,在查找原因未果的情况下我又重新焊了一边电路,问题随之解决。通过这次课程设计,我对STC12C5410AD有了初步的了解,同时也复习了51单片机的知识,这对我以后的学习和工作有很大帮助。附件:A、程序代码#include <reg51.h> #

19、include "intrins.h" #define uchar unsigned char#define uint unsigned int/*共阴LED段码表*/unsigned char code tab=0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*端口定义*/sbit DQ=P37; /数据传输线接单片机的相应的引脚/*定义全局变量*/unsigned char tempL=0; /临时变量低位unsigned char tempH=0;/临时变量高位float temperature; /温度值ucha

20、r dis_con=0x1c,0x2c,0x34,0x38;unsigned int a; uchar ledlight,breaklight;uchar keyb,key; /按键情况uchar wei_state;unsigned int shi,ge,dian;/温度设置float high_t,low_t;/最高温最低温uchar stc_state;/设置状态变量sbit p3_2 = P32;sbit p3_3 = P33;sbit p3_4 = P34;sbit p3_5 = P35;/*函数功能:延时子程序入口参数:k出口参数:*/void delay(unsigned int

21、 k) unsigned int n; n=0; k*=6; while(n < k) n+; return; /*函数功能:数码管扫描延时子程序入口参数:出口参数:*/void delay1(void)int k;for(k=0;k<600;k+);/*函数功能:数码管显示子程序入口参数:k出口参数:*/void display_t(float k1)int k,k2;k=(int)k1;k2=(int)(k1-k)*10);P2=0XFF; P3=dis_con3;if(k/100=0)P2=0xff;elseP2=tabk/100; delay1();P2=0XFF; / P

22、3=dis_con2; P2=tab(k%100)/10;/P2=tab1; delay1();P2=0xff;P3=dis_con1; P2=tabk%10&0x7f;/P2=tab2; delay1();P2=0xff; P3=dis_con0; P2=tabk2&0xff; /P1=tab3;delay1();/P3=0xff;void display_set() /设置温度显示 P3=dis_con3;P2=0xFF; delay1(); P3=dis_con2; P2=tabshi; delay1();P3=dis_con1;P1=tabge&0x7f; de

23、lay1();P3=dis_con0; P2=tabdian; delay1();/*函数功能:DS18B20初始化子程序入口参数:出口参数:*/Init_DS18B20(void)unsigned char x=0; DQ=1; /DQ先置高 delay(8); /延时 DQ=0; /发送复位脉冲 delay(85); /延时(>480ms) DQ=1; /拉高数据线 delay(14); /等待(1560ms) /*函数功能:向DS18B20读一字节数据入口参数:出口参数:dat*/ReadOneChar(void) unsigned char i=0; unsigned char

24、dat=0; for (i=8;i>0;i-) DQ=1; delay(1); DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; delay(6); return(dat);/*函数功能:向DS18B20写一字节数据入口参数:dat出口参数:*/WriteOneChar(unsigned char dat) unsigned char i=0; for(i=8;i>0;i-) DQ=0; DQ=dat&0x01;delay(5);DQ=1;dat>>=1;delay(4);/*函数功能:向DS18B20读温度值入口参数:出

25、口参数:temperature*/float ReadTemperature(void) Init_DS18B20(); /初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0x44); /启动温度转换delay(125); /转换需要一点时间,延时Init_DS18B20(); /初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0xbe); /读温度寄存器(头两个值分别为温度的低位和高位)tempL=ReadOneChar(); /读出温度的低位LSBtempH=ReadOneChar(); /读出温度的高

26、位MSB /温度转换,把高低位做相应的运算转化为实际温度temperature=(tempH*256)+tempL)*0.0625; delay(200);return(temperature);/uchar Keytest() uchar temp;key = 16; P1&=0XF0;P1|=0XF0; temp=P2;temp&=0xf0;if(temp!=0xf0)delay(90);P1&=0XF0;P1|=0XF0;/delay(5);temp=P1;temp&=0xf0;if(temp!=0xf0)P1&=0XFE;P1|=0XFE;/de

27、lay(5);temp=P2;temp&=0xf0;/P1_0 = 0;P1_1 = 1;P1_2 = 1;P1_3 = 1;if(temp!=0xf0)if(temp=0XE0)key = 0;return(key);if(temp=0XD0)key = 1;return(key);if(temp=0XB0)key = 2;return(key);if(temp=0X70)key = 3;return(key);/P1_0 = 1;P1_1 = 0;P1_2 = 1;P1_3 = 1;P1&=0XFD;P1|=0XFD;temp=P2;temp&=0xf0;if(te

28、mp!=0xf0)if(temp=0XE0)key = 4;return(key);if(temp=0XD0)key = 5;return(key);if(temp=0XB0)key = 6;return(key);if(temp=0X70)key = 7;return(key);P1&=0XFB;P1|=0XFB;temp=P2;temp&=0xf0;/P1_0 = 1;P1_1 = 1;P1_2 = 0;P1_3 = 1;if(temp!=0xf0)if(temp=0XE0)key = 8;return(key);if(temp=0XD0)key = 9;return(ke

29、y);if(temp=0XB0)key = 10;return(key);if(temp=0X70)key = 11;return(key);P1&=0XF7;P1|=0XF7;temp=P1;temp&=0xf0;/P2_0 = 1;P2_1 = 1;P2_2 = 1;P2_3 = 0;if(temp!=0xf0)if(temp=0XE0)key = 12;return(key);if(temp=0XD0)key = 13;return(key);if(temp=0XB0)key = 14;return(key);if(temp=0X70)key = 15;return(ke

30、y);return(key);uchar led(uchar i)p3_2 = 0;p3_3 = 0;p3_4 = 0;p3_5 = 0;switch(i)/case 17:P2 = 0xc0; return(i);case 1:P2 = 0xF9; return(i); case 2:P2 = 0xA4; return(i);case 3:P2 = 0xB0; return(i);case 4:P2 = 0x99; return(i);case 5:P2 = 0x92; return(i);case 6:P2 = 0x82; return(i);case 7:P2 = 0xF8; retur

31、n(i);case 8:P2 = 0x80; return(i);case 9:P2 = 0x90; return(i);case 10:P2 = 0x88; return(i);case 11:P2 = 0x83; return(i);case 12:P2 = 0xC6; return(i);case 13:P2 = 0xA1; return(i);case 14:P2 = 0x86; return(i);case 15:P2 = 0x8E; return(i);case 16:P2 = 0xFE; return(i); /*函数功能:主程序入口参数:出口参数:*/ int tt; void

32、 main() float i;stc_state = 0;wei_state = 0;high_t = 50.0;low_t = 20.0;shi = 0;ge = 0;dian = 0;while(1)keyb=Keytest();if(stc_state = 0)&&(keyb = 0) /进入最高温设置状态stc_state = 1;tt=(int)high_t ;shi = tt/10;ge = tt%10;dian = (int)(high_t-tt)*10);if(stc_state = 1)&&(keyb = 15) /退出最高温设置状态stc_

33、state = 0;wei_state = 0;high_t = (float)(shi*10+ge+dian*0.1);if(stc_state = 1)&&(keyb != 15) /最高温设置/display_set();if(keyb = 2)|(keyb = 3)|(keyb = 4)wei_state =keyb;if(stc_state =0)&&(keyb = 1) /进入最低温设置状态stc_state = 2;tt=(int)low_t ;shi = tt/10;ge = tt%10;dian = (int)(low_t-tt)*10);if(stc_st

温馨提示

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

评论

0/150

提交评论