单片机课设.doc_第1页
单片机课设.doc_第2页
单片机课设.doc_第3页
单片机课设.doc_第4页
单片机课设.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用课程设计设计题目:设计智能仪表实现智能数字显示学院: 专业班级:指导老师: 学号:姓名: 摘要智能仪器工作原理为传感器拾取被测参量的信息并转换成电信号,滤波去除干扰后送入多路模拟开关;由单片机逐路选通模拟开关将各输入通道的信号逐一送入程控增益放大器,放大后的信号经ad转换器转换成相应的脉冲信号后送入单片机中;单片机根据仪器所设定的初值进行相应的数据运算和处理(如非线性校正等);运算的结果被转换为相应的数据进行显示和打印;同时单片机把运算结果与存储于片内flashrom(闪速存储器)或e2prom(电可擦除存贮器)内的设定参数进行运算比较后,根据运算结果和控制要求,输出相应的控制信号(如报警装置触发、继电器触点等)。此外,智能仪器还可以与pc机组成分布式测控系统,由单片机作为下位机采集各种测量信号与数据,通过串行通信将信息传输给上位机pc机,由pc机进行全局管理。智能仪器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。它的出现,极大地扩充了传统仪器的应用范围。智能仪器凭借其体积小、功能强、功耗低等优势,迅速地在家用电器、科研单位和工业企业中得到了广泛的应用。本课程设计主要介绍单片机在温度控制中的应用。是基于stc89c51单片机和b型(铂铑30)热电偶传感器的智能仪表,测温范围为4001200。可以实现对设定值和测量值的显示、调整以及报警等,并用晶闸管脉宽调制驱动1000w电加热器。目录摘要1一、题目3题目-11. 设计原理-12. 硬件设计-23.1单片机的引脚图以及引脚功能-23.2数码管显示电路-33.3 a/d电路连接-43.4按钮电路连接-43.5 led灯电路连接-53.6 i2c接口存储器24c02电路连接-53.7 rs-232串口电路连接-63.8蜂鸣器电路连接-63.9电源电路连接-63.10信号调理电路连接-73.11驱动晶闸管并用晶闸管脉宽调制驱动1000w电加热器电路接线 -93. 软件设计-103.1 ad转换程序设计-10 4.2 报警程序设计-10 4.3串口程序设计-11 4.4 24c02程序设计-12 4.5 数据处理-14 5总结-22 6. 参考文献-22 7. 附录-227.1原理图-237.2 pcb图-24 一、题目:实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配b型(铂铑30)热电偶,测温范围为4001200。采用比例控制、并用晶闸管脉宽调制驱动1000w电加热器(电源电压为ac220v)。二、原理框图根据题目要求以stc89c51为主,采用j型(铁-铜镍)热电偶传感器通过采集温度,利用a/d转换后,经单片机处理后通过存储器对温度进行存储然后再用数码管对采集的温度显示,还可以通过晶闸管脉宽调制驱动1000w电加热器。蜂鸣器24c02b型电偶 信号调理led灯stc89c51单片机a/d数码显示按键moc3063隔离驱动1000w电加热器rs232串口 stc89c51测温仪表原理框图三、硬件设计1、单片机的引脚图以及引脚功能说明单片机的引脚图msc-51系列单片机的外形采用40条引脚双列直插封装(dip)。每条引脚有规定的序号和名称。dip封闭的引脚排列和逻辑符号如下图:msc-51系列单片机引脚图stc89c51单片机特点:12时钟/6时钟机器周期的8051cpu;工作电压3.4-5.5v;工作频率0-40mhz;程序存储器容量4kb;ram容量512b;i/o端口与at89s51相同;通过串口(p3.0 p3.1)直接下载用户程序到代码存储器中(isp功能),可下载10万次以上;具有eeprom;具有看门狗,冷启动后未关闭状态,一旦启动无法关闭;3个定时计数器;2个外部中断,掉电模式可由外部中断低电平触发唤醒;一个异步串行口;温度范围0-75(商业),-40-85(工业);具有pdip-40、plcc-44、封装。stc89c51引脚说明:vcc:供电电压。 gnd:接地。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口,如下表所示:管脚 备选功能p3.0 rxd(串行输入口) p3.1 txd(串行输出口)p3.2 /int0(外部中断0) p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。2、由at89s51单片机构成的最小系统单片机最小系统由于51单片机的特点,p0口需要接上拉电阻;复位电路采用上电复位加按钮手动复位;晶振采用典型的11.0592mhz作为单片机的主频。3、按键操作电路 按键操作电路 低电平有效:当按键按下时,送给单片机的信号为低电平信号。 4、数码管显示电路采用两个8d锁存器74hc573分时锁存段码和位码,这样可以节省i/o引脚,采用10个i/o引脚,其中8位用来分时送段码与位码,另外两位用于连接74hc573的锁存器控制端,分别控制段码和位码,如下图示。5、 报警电路由蜂鸣器构成的报警电路;该电路采用9013作为驱动;当系统的温度值达到报警限值的时候,由蜂鸣器产生报警信号。6、电源电路该电路采用集成稳压芯片7805作为电源供给单片机及运算放大电路;输入电压为69v的直流电压;输出的vcc供单片机,+5v供放大电路;中间用一个0的电阻隔开,防止放大电路产生干扰信号干扰单片机。7、ad转换电路 采用tlc594 ad转换芯片,它具有6种串行接口时序模式,这些模式由i/oclock同期和cs定义,根据tlc1549的功能结构和工作时序,其工作过程可分类3个阶段: 模拟量采样、模拟量转换和数字量传输。精度为8位a/d,输入电压范围为0-5v。8、da转换电路采用tlc5615d/a转换芯片,把温度转换成的代表电流的数字写入tlc5615,实现电流输出。9、驱动晶闸管并用晶闸管脉宽调制驱动1000w电加热器电路接线 (1)moc3062是过零型光隔离晶闸管驱动电路,该电路可以驱动12a电流的双向晶闸管也可以驱动其他大功率的晶闸管,其参数如下: moc3062主要极限参数 led正向电流if=60ma 反向耐压 vr=6v 接收器部分断态耐压为600v,峰值重复浪涌电流为1a moc3062一般特性led管部分 在if=30ma 时,压降vf=1.3-1.5v(2)图中电路由p3.3来控制,设vl为单片机输出低电平,vf为moc3062的 led管压降。ift是触发moc3062的电流,根据moc3062所给参数可以 得到则: r14=(5-vl-vf)/ ift3v/100ma=300 r15是用来限制moc3062的输出电流itsm,则: r15=vpeak/itsm=(220*1.414)v/1a=311取 r15=330 电阻r17是用来抗干扰的,一般取100到500 取 r17=39010、led灯电路连接 4个led灯分别用来上下限报警、按钮动作等。其中分别通过端口p2_0、p2_1、p2_2、p2_3进行控制。11、rs-232串口电路连接通过max232芯片将5v电压提升为10v及-10v,然后接收ttl/cmos的+5v电平,转换成10v的信号,再送到线路上。在接收方面,max232从线路止接收+10v的信号,经内部寄存器,转换成ttl/cmos的+5v电平,也就是max232只不地是个电平转换装置而已,只要+5v电源与4个小电容(10uf即可)就能提供双向的电平调整。接线图如上图。 12、信号调理电路连接信号调理电路b型热电偶传感器及电路(1)b型热电偶信号调理电路如上图,该电路采用lm35r b型热电偶实现冷补偿。因为lm35输出10 mv /,因此温度每变化1,r20 的压降增加7.3uv。经过r20和r18分压后的温度系数为7.3uv/, 即温度系数=12.4/1700=7.3uv/,通过r20和r18分压得到 也就是 10 mv/*(r20/( r20+ r18))=0.0073 mv/ 得到 r18=1368.86 r20 取 r20=100 得到 r18=136.9k(2)由铁-铜镍热电偶(b型)的分度表可得:当温度为400时输出的热电势为0.787mv,在1200时输出的热电势为6.786mv。由同相放大器将0.787-6.7896mv的电势放大成为0.2-5v。则:0.787m + b =0.5005 6.786m + b =3.5解得: m=0.5 b=0.107(rf1/( r21 + rf1 )( r17 + r19 )/ r19)=0.5vref ((r21/( r21 + rf1 ) ( r17 + r19 )/ r19)=0.107 假设rf1 = r17 , r21 = r19 ,r17 / r19 =m=0.5 vref =b=0.107取 r19= r21 =1000则r17 = rf1 =0.5k vref =0.107v(3)最后经过放大后的电压进入ad转换器中。四、软件设计单片机运行的程序是用来控制对象,实现对象控制的自动化和智能化。其中软件编程主要针对的是ad转换、数据处理、数据显示、数据报警以及按键操作等。1、ad转换程序设计uint ad()uint i,j,k;i=0;cs=1;for(j=0;j5000;j+);cs=0; /开始读取数据for(k=0;k10;k+) clk=0;i=(i1)|dout;clk=1;for(j=0;j=shangxian) buzzer=1; / 蜂鸣器响 led13=0; else if(wendu=xiaxian) buzzer=1; / 蜂鸣器灭 led14=0; else buzzer=0;3、串口程序设计void chuankou() uchar a,flag; tmod=0x20; /定时器2th1=0xfd; /8位重装数值tl1=0xfd; / 8位计数量 sm0=0; /串口工作在方式2sm1=1;ren=1; /开始接收ea=1; /总中断允许es=1; /串行允许pcon=0x80; while(1)if(flag=1)es=0;flag=0;sbuf=a; /将数据送到缓冲器中while(!ti);ti=0; /清零es=1;void serial() interrupt 4 /串行中断p1=sbuf;a=sbuf;flag=1;ri=0;4、数据处理(1)数字滤波所谓滤波就是从受到干扰的测量值中得到较为精确的有效测量值,其中有中位值滤波法、算术平均值滤波法、递推平均滤波法、中位值平均滤波法、低通滤波法。本程序采用算术平均值滤波法,程序如下:void delay(uchar x) /延时 uchar i,j; for(i=0;i100;i+) for(j=0;jx;j+);uchar lvbo()int sum=0;uchar i;for(i=0;im) max=mid; else min=mid; if(max-min)outm) out=outm; if(out0) out=0; 6、数码管程序设计 void xianshi()write_byte(tem,0x20);/将温度值写到地址0x20中去 xs3=tem/100; /百位xs2=tem/10/10; /十位xs1=tem/10%10; /个位xs0=tem-(uint)tem; /一位小数p2=tableduxs0; /显示小数一位duan=1; /打开段选duan=0; /锁存段选p2=0xfe; /选择一位数码管wei=1; /打开位选wei=0; /锁存位选delay(1); /延时p2=tabledu1xs1; /显示个位duan=1;duan=0;p2=0xfd;wei=1;wei=0;delay(1);p2=tableduxs2; /显示十位duan=1;duan=0;p2=0xfb;wei=1;wei=0;delay(1);p2=tableduxs3; /显示百位duan=1;duan=0;p2=0xf7;wei=1;wei=0;delay(1);7、按键程序设计void anjian()uint k,m,n,t;while(1)if(!s2)delay(1);if(!s2) /确认s2被按下if(k=5) k=0; k+;if(k=2) /第二次按下s2p2=0x71;/显示下(即下限报警)duan=1;duan=0;delay(1);p2=0xfe;/在最右边的显示wei=1;wei=0;delay(1);if(k=3) /第三次按下s2p2=0x6f;/显示s(即设定值)duan=1;duan=0;delay(1);p2=0xfe;/在最右边的显示wei=1;wei=0;delay(1);if(k=4) /第四次按下s2p2=0x73;/显示p(即比例)duan=1;duan=0;delay(1);p2=0xfe;/在最右边的显示wei=1;wei=0;delay(1); led6=0; /led7亮 while(!s2);/松开去抖if(!s3)delay(1);if(!s3) /确认s3被按下if(m=5) m=0; m+;switch(m)case1: p2=0xef;/s3第一次被按下显示 /上排的第一个数码管 wei=1;wei=0;case2: p2=0xdf;/s3第二次被按下显示 /上排的第二个数码管 wei=1;wei=0;case3: p2=0xbf;/s3第三次被按下显示 /上排的第三个数码管 wei=1;wei=0;case4: p2=0x7f;/s3第四次被按下显示 /上排的第四个数码管 wei=1;wei=0; led7=0;/led7亮 while(!s3); /松开去抖if(!s4)delay(1);if(!s4) /确认s4被按下if(n=10) n=0; n+; p2=talben; /按一次s4数值加1 duan=1; duan=0; led8=0; /led8亮 while(!s4); /松开去抖if(!s5)delay(1);if(!s5) /确认s5被按下if(t=0) t=9; t-; p2=talbet; /按一次s5数值减1 duan=1; duan=0; led9=0; /led9亮 while(!s5); /松开去抖8、主程序 #include#define uchar unsigned char #define uint unsigned int #define uint n 16 /定义采样数#define uchar shangxian 180/设置上限报警为180#define uchar xiaxian 20 /设置下限报警为20uchar dianya,wendu,zkb;uint ad_time,xianshi_time, kongzhi_time,caiyang_time;uchar xs8; /显示缓冲uchar code table9= /j型热电偶分度表, /第隔10度对就的电势值0.787,1.242,1.792,2.431,3.154,3.957,4.834,5.780,6.786;uchar code tabledu= /数码管译码数组0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code tabledu1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1; /显示数码译码数组带小数点sbit s2=p12; /定义s2为功能按键sbit s3=p13; /定义s3为选择数码管按键sbit s4=p14; /定义s4为增1按键sbit s5=p15; /定义s4为减1按键sbit led6=p34; /s2按下时led6亮sbit led7=p35;/s3按下时led7亮sbit led8=p36;/s4按下时led8亮sbit led9=p37;/s5按下时led9亮sbit duan=p17; /74373引脚申明sbit wei=p16;sbit sda=p04; /24c02引脚申明sbit scl=p03;sbit buzzer=p10;/蜂鸣器引脚申明sbit clk=p00; /ad引脚说明sbit dout=p01;sbit cs=p02;void main()ea=1; /定时器1的初始化tmod=0x10;th1=(65536-5000)/256;tl1=(65536-500

温馨提示

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

评论

0/150

提交评论