单片机课设.doc

上传人:文库蛋蛋多 文档编号:4147723 上传时间:2023-04-07 格式:DOC 页数:26 大小:427.50KB
返回 下载 相关 举报
单片机课设.doc_第1页
第1页 / 共26页
单片机课设.doc_第2页
第2页 / 共26页
单片机课设.doc_第3页
第3页 / 共26页
单片机课设.doc_第4页
第4页 / 共26页
单片机课设.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《单片机课设.doc》由会员分享,可在线阅读,更多相关《单片机课设.doc(26页珍藏版)》请在三一办公上搜索。

1、单片机原理及应用课程设计设计题目:设计智能仪表实现智能数字显示学院: 专业班级:指导老师: 学号:姓名: 摘要智能仪器工作原理为传感器拾取被测参量的信息并转换成电信号,滤波去除干扰后送入多路模拟开关;由单片机逐路选通模拟开关将各输入通道的信号逐一送入程控增益放大器,放大后的信号经AD转换器转换成相应的脉冲信号后送入单片机中;单片机根据仪器所设定的初值进行相应的数据运算和处理(如非线性校正等);运算的结果被转换为相应的数据进行显示和打印;同时单片机把运算结果与存储于片内FlashROM(闪速存储器)或E2PROM(电可擦除存贮器)内的设定参数进行运算比较后,根据运算结果和控制要求,输出相应的控制

2、信号(如报警装置触发、继电器触点等)。此外,智能仪器还可以与PC机组成分布式测控系统,由单片机作为下位机采集各种测量信号与数据,通过串行通信将信息传输给上位机PC机,由PC机进行全局管理。智能仪器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。它的出现,极大地扩充了传统仪器的应用范围。智能仪器凭借其体积小、功能强、功耗低等优势,迅速地在家用电器、科研单位和工业企业中得到了广泛的应用。本课程设计主要介绍单片机在温度控制中的应用。是基于STC89C51单片机和B型(铂铑30)热电偶传感器的智能仪表,测温范围为4001200。可以实现对设定值和测量值的显示、

3、调整以及报警等,并用晶闸管脉宽调制驱动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

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转换后,经单片机处理后通过存储器对温度进行

5、存储然后再用数码管对采集的温度显示,还可以通过晶闸管脉宽调制驱动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;程序存

6、储器容量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能够用于外部程

7、序数据存储器,它可以被定义为数据/地址的第八位。在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口的管脚

8、被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:管脚 备选功能

9、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端以不变的频率周期输出正脉冲信号,此频率

10、为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加

11、密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。2、由AT89S51单片机构成的最小系统单片机最小系统由于51单片机的特点,P0口需要接上拉电阻;复位电路采用上电复位加按钮手动复位;晶振采用典型的11.0592MHz作为单片机的主频。3、按键操作电路 按键操作电路 低电平有效:当按键按下时,送给单片机的信号为低电平信号。 4、数码管显示电路采用两个8D锁存器74HC573分时锁存段码和位码,这样可以节省I/O引脚,采用10个I/O引脚,其中8位用来分时送段码与位码,另外两位用于连接74HC57

12、3的锁存器控制端,分别控制段码和位码,如下图示。5、 报警电路由蜂鸣器构成的报警电路;该电路采用9013作为驱动;当系统的温度值达到报警限值的时候,由蜂鸣器产生报警信号。6、电源电路该电路采用集成稳压芯片7805作为电源供给单片机及运算放大电路;输入电压为69V的直流电压;输出的VCC供单片机,+5V供放大电路;中间用一个0的电阻隔开,防止放大电路产生干扰信号干扰单片机。7、AD转换电路 采用TLC594 AD转换芯片,它具有6种串行接口时序模式,这些模式由I/OCLOCK同期和CS定义,根据TLC1549的功能结构和工作时序,其工作过程可分类3个阶段: 模拟量采样、模拟量转换和数字量传输。精

13、度为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来控制,设V

14、L为单片机输出低电平,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电压

15、提升为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/, 即温度

16、系数=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

17、)/ 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;f

18、or(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; /开

19、始接收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

20、 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; /显

21、示小数一位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

22、 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

23、;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

24、;/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)

25、; /松开去抖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度

26、对就的电势值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为选择数码管按

27、键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 m

28、ain()EA=1; /定时器1的初始化TMOD=0x10;TH1=(65536-5000)/256;TL1=(65536-5000)%256; ET1=1; TMOD=0x02; /定时器0的初始化TH1=0x06;TL1=0x06;ET0=1;read_byte(wendu,0x20);while(1) anjian();if(xianshi_time=1) xianshi(); xianshi_time=0;if(caiyang_time=1) ad();lvbo();chabiao();bianhuan();caiyang_time=0;if(kongzhi_time=1)shuchu

29、();baojing();kongzhi_time=0; delay(1); zkb+; if(zkb=10) zkb=0;void tim1() interrupt 3 /定时器1中断TH1=(65536-5000)/256;TL1=(65536-5000)%256;a+;if(a=5) /50msad_time=1; /AD转换周期xianshi_time=1; /显示周期 kongzhi_time=1; /控制周期caiyang_time=1; /采样周期void tim0() interrupt 1 /定时器0中断 ucahr tt; tt+; if(tt=100) tt=0; P33

30、=0;If(zkb=tt)P33=1;五、总结 本设计是基于STC89C51单片机智能测温仪表,通过查阅各种资料,包括传感器、单片机、智能、仪表、Altium Designer、keil等,对仪表的每一块都有了全新的认识和理解,同时也对它们的结构和原理有了一定深度的了解,以及各模块的软件设计,进一步提升了用C语言去编程,解决实际的问题,最后用Altium Designer绘制电路板。在此设计过程中,让我学到了很多,同时也复习了以前所学的知识。由于个人能力有限,整个系统还不太完善,还有许多有待改进。六、参考文献单片机原理及应用 夏路易 2010.4数字电子技术基础 阎 石 2008.5模拟电子技术基础 华成英 2008.4单片机原理 牛昱光 2009.7 微机原理与接口技术 马春燕 2008.1七、附录1、原理图2、PCB图

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号