1 / 70

一、实训目的 熟悉常用温度传感器 AD590 的特性及接口电路的设计方法; 学会模块化程序设计方法 二、课题要求 制作一个水温自动控制系统,要求如下:

第 10 章 综合实训. 课题一 水温控制系统设计. 一、实训目的 熟悉常用温度传感器 AD590 的特性及接口电路的设计方法; 学会模块化程序设计方法 二、课题要求 制作一个水温自动控制系统,要求如下: 温度设定范围 40~90℃ ,最小区分度 1℃ ,标定误差≤ 1℃ 。 用十进制数码显示水的实际温度。 环境温度降低时,温度控制的静态误差≤ 1℃ 。. 三、背景知识 1 、 AD590 温度传感器简介

zelia
Download Presentation

一、实训目的 熟悉常用温度传感器 AD590 的特性及接口电路的设计方法; 学会模块化程序设计方法 二、课题要求 制作一个水温自动控制系统,要求如下:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第10章 综合实训 课题一 水温控制系统设计 一、实训目的 • 熟悉常用温度传感器AD590的特性及接口电路的设计方法; • 学会模块化程序设计方法 二、课题要求 • 制作一个水温自动控制系统,要求如下: • 温度设定范围40~90℃,最小区分度1℃,标定误差≤1℃。 • 用十进制数码显示水的实际温度。 • 环境温度降低时,温度控制的静态误差≤1℃。

  2. 三、背景知识 1、AD590温度传感器简介 AD590是美国AD公司生产的单片集成两端感温电流源。它的测温范围为-55℃~+150℃,工作电压范围为4V~30V,可以承受44V正向电压和20V反向电压,输出电阻为710M。它产生的电流与绝对温度成正比,非线性误差为±0.3℃。图10—1为AD590的引脚图,表10—1为AD590温度与电流的关系表。 (a)引脚 (b)封装 (c)图形符号 图10—1 AD590引脚、封装及图形符号

  3. 表10—1 各温度与电流、电压参考关系表

  4. AD590是电流输出型器件,必须利用接口电路将AD590输出的电流信号转换成电压信号,再经A/D转换器转换成数字信号,提供给单片机处理。在AD590是电流输出型器件,必须利用接口电路将AD590输出的电流信号转换成电压信号,再经A/D转换器转换成数字信号,提供给单片机处理。在 2、AD590接口电路 表10—1中,列出了在不同温度值下的AD590的输出电流,通过图10—2的放大电路可将输出电流转换成0~5V的模拟电压。 图10—2 温度采集电路

  5. 四、硬件电路 • 硬件电路由单片机、温度检测模块、加热控制模块、键盘设定模块及数据显示模块构成。 1、单片机选择 由于系统对控制精度的要求不高,所以选用内部具有程序存储器芯片的AT89C51就可以满足要求了。 2、温度检测模块 温度检测模块由温度传感器、信号放大器及A/D转换器组成。由AD590将温度转换成电流信号再经信号放大器得到对应的模拟电压,再经ADC0809转换后接入单片机。如图10—3所示。

  6. 3、加热控制模块 加热控制信号经反相器反相后,驱动固态继电器(SSR)工作,从而接通或断开加热丝两端电源,实现对水的加热控制。加热控制电路如图10—3所示。 为了使加热控制更加精确,系统采用了三组加热电炉丝组合实现,当温差小于5ºC时,仅A组加热丝工作;当温差在5ºC~10ºC之间时,采用A、B两组加热控制;当温差大于10ºC时,采用A、B、C三组加热控制。 4、键盘设定及数据显示模块 键盘扫描由11个按键及3位LED共阳极显示器组成。通过P1、P2口直接驱动键盘,为了简化显示接口,这里采用了串行口扩展LED显示器。如图10—3所示。

  7. 图10—3 水温控制系统硬件原理图

  8. 五、软件设计 1、程序结构设计 (1)主程序 用于进行初始化处理,包括各端口的初始化,定时/计数器的设定、中断允许的设定等。同时进行键盘的扫描输入。图10—4为主程序流程图。 (2)定时中断服务程序 通过单片机内部的定时器T0进行50ms定时,再通过寄存器R6进行计数,以实现1s定时中断的要求。进入中断服务程序后,可进行当前温度的检测及显示,根据所测值与设定值比较进行温度控制等。图10—5为中断服务程序流程图。

  9. 图10—4 主程序流程图图10—5 定时中断服务程序流程图

  10. (3)温度检测程序 温度检测采用每1s定时采样的方式,为了实现温度的准确检测,采用了平均值滤波法抗干扰。即连续4次启动ADC0809进行A/D转换,求取转换结果的平均值,存入指定单元,以得到检测温度值。图10—6为温度检测程序流程图。 (4)温度控制程序 通过比较键盘设定值与温度检测值的差别,按照一定的控制规律,控制输出口线的状态,实现三组加热丝的控制。图10—7为温度控制程序流程图。 (5)温度显示程序 在每次温度检测后,进行一次温度显示刷新;在进行温度设定时,显示设定温度值。

  11. 2、主要程序模块清单 主程序: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0030H MAIN: MOV SP,#60H MOV P1,#0FFH;关电炉,开显示 MOV SCON,#00H ;设置串行口工作 ;方式0,发送 MOV TMOD,#01H ;定时器初始化 MOV TH0,#3CH ;50ms定时初值

  12. MOV TL0,#0B0H MOV R6,#14H ;1s定时用(50ms20次) MOV 5DH,#00H ;显示缓冲区清零 MOV 5EH,#00H MOV 5FH,#00H ACALL DISP SETB ET0 SETB EA SETB TR0 LM0:ACALL KEYSCAN;调用键盘扫描子程序(略), ;用于设定温度值 AJMP LM0

  13. 图10—7 温度控制程序流程图 图10—6 温度检测程序流程图

  14. 定时中断服务程序: T0INT: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R6,T0END;1s未到,中断返回 CLR TR0 CLR EA MOV R6,#14H ;恢复R6初值 ACALL TADC ;调用温度检测子程序 ACALL XSCL ;调用标度转换子程序 ACALL DISP ;调用显示子程序 ACALL TCONT;调用温度控制子程序 SETB TR0 SETB EA T0END: RETI

  15. 温度检测子程序: TADC: MOV 50H,#00H ;清存检测值单元 MOV B,#00H MOV R7,#04H ;设置转换次数 MOV DPTR,#7FFFH;送ADC0809地址 TT0: MOVX @DPTR,A;启动A/D转换 JB P3.2,$ ;等待转换结束 MOVX A,@DPTR;读A/D转换数据 ADD A,50H MOV 50H,A JNC TT1;是否超出8位二进制范围 INC B

  16. TT1: DJNZ R7,TT0 ;4次转换是否完成 CLR C ;求4次A/D转换的平均值 XCH A,B RRC A XCH A,B RRC A CLR C XCH A,B RRC A XCH A,B RRC A MOV 50H,A ;平均值存50H RET

  17. 温度控制子程序: TCONT: MOV A,51H CLR C SUBB A,50H ;设定值—实测值 MOV R0,A JNC CCPR ;小于设定温度,接通相应加热器 MOV P1,#0FFH ;否则,关闭加热器 AJMP CONEND CCPR: MOV A,R0 SUBB A,#19H JC CCPR1

  18. MOV P1,#0F8H ;开三组加热器 AJMP CONEND CCPR1: MOV A,R0 SUBB A,#0CH JC CCPR2 MOV P1,#0FCH ;开两组加热器 AJMP CONEND CCPR2: MOV P1,#0FEH ;开一组加热器 CONEND: RET

  19. 显示子程序: DISP: MOV R2,#03H ;显示数据的个数 MOV R1,#5DH ;显示缓冲区首址 SETB P1.3 DL0: MOV A,@R1 ;取要显示的数 MOV DPTR,#TAB MOVC A,@A+DPTR ;查字型码 MOV SBUF,A ;送出数据 DL1: JNB TI,DL1 ;是否输完一个字节 CLR TI ;清发送完标志 INC R1 DJNZ R2,DL0 ;三个数是否都显示完? RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;0~9字型码 DB 92H,82H,0F8H,80H,90H

  20. 六、总结与提高 设计、调试大型程序时,应该: • 先根据要求划分模块,优化结构; • 再根据各模块特点确定何为主程序,何为子程序,何为中断服务程序,相互间如何调用; • 接着根据各模块性质和功能将各模块细化,设计出程序流程图; • 最后根据各模块流程图编制具体程序。 调试时应先调主程序,实现最基本最主要的功能,在此基础上再将各模块功能往主程序上堆砌,直至各模块联调、统调,实现全部功能。

  21. 在这个课题中,采用了软件滤波方式提高检测环节的准确,并且采用了三组加热控制提高了温度变化的精度。在此基础上,还可以增加液面检测、缺水报警电路及打印电路等其它辅助电路的设计,使这个控制系统更完善。在这个课题中,采用了软件滤波方式提高检测环节的准确,并且采用了三组加热控制提高了温度变化的精度。在此基础上,还可以增加液面检测、缺水报警电路及打印电路等其它辅助电路的设计,使这个控制系统更完善。

  22. 课题二 用8×8点阵显示器制作电子显示屏 • 一、实训目的 • 熟悉8×8点阵显示器与单片机的接口电路及其设计方法; • 学会模块化程序设计方法。 • 二、课题要求 • 制作一个8×8点阵显示器。要求如下: • 1. 显示“电子设计”四个文字; • 2. 显示方式可由K1、K2和K3三个键选择: K1为逐字显示,K2为向上滚动显示,K3为向左滚动显示。

  23. 三、硬件电路 • 显示器采用AT89C51单片机作控制器,时钟频率为12MHz,8×8点阵显示器采用共阳极结构,其电路如图10—8所示。 • P0作为字符数据输出口, • P2为字符显示扫描输出口, • P1.0~P1.2口分别接开关K1、K2、K3, 通过改变电阻(270Ω)的大小可改变显示字符的亮度,驱动用9012三极管。

  24. 图10—8 硬件电路图

  25. 四、软件设计 1、程序结构设计 (1)主程序 主程序用于对系统进行初始化,扫描按键开关状态,由按键标志位值(00H、01H、02H)决定显示的方式。主程序流程图如图10—9所示。

  26. 图10—9 主程序流程图

  27. (2)初始化子程序 • 用于对端口进行复位操作,将显示用的字符数据从字符表中装入内存单元50H~6FH中。字符表中的每个文字占用8个地址单元。 • (3)显示子程序 • 显示子程序由显示功能选择程序和显示控制程序组成。 • 显示功能选择程序: 负责每次显示时的显示地址首址(在B寄存器中)、每个字的显示时间(由30H中的数据决定)和下一个显示地址的间隔(31H中的数据决定)的处理。

  28. 显示子程序: 负责对指定8个地址单元的数据进行输出显示。 显示一个完整文字的时间约为8ms。 在显示子程序中,1ms延时程序是用调用键扫描子程序的方法实现的。图10—10为逐字显示及向上滚动显示方式时的显示控制程序流程图。 • (4)按键扫描程序 • 用于将按键的状态扫描至20H单元的低三位(20H.0、20H.1、20H.2)中。同时在程序中利用按键扫描程序代替显示程序中的1ms延时程序,既可以提高按键的快速响应,又可以提高动态显示的扫描频率,减少文字显示时的闪烁现象。

  29. 图10—10 逐字显示及上移显示程序流程图

  30. 2、主要程序模块清单 主程序: START: MOV 20H,#00H ;20H内存单元清0 SETB 00H ;20H.0位置1 START1: LCALL CLEARMEN ;调用上电初始化子 ; 程序 JB 00H,FUN0 ;20H.0位为1,执行FUN0 JB 01H,FUN1 ;20H.1位为1,执行FUN1 JB 02H,FUN2 ;20H.2位为1,执行FUN2 AJMP START1

  31. 初始化程序: CLEARMEN: MOV A,#0FFH ;四端口置1 MOV P1,A MOV P2,A MOV P3,A MOV P0,A MOV DPTR,#TAB;取“电子设计”字 ;符表首址 CLR A MOV 21H,A ;21H-24H内存单元清0 MOV 22H,A MOV 23H,A MOV 24H,A MOV R3,A ;R3寄存器清0

  32. MOV R1,#50H ;设字符表移入内存 ;单元首址 MOV R2,#20H;设查表次数(32次) CLLOOP: MOVC A,@A+DPTR;查表字符数据移入 ;内存单元 MOV @R1,A MOV A,R3 INC A MOV R3,A INC R1 DJNZ R2,CLLOOP;是否已查表32 ;次,未完转CLLOOP RET

  33. TAB: DB 0EFH,83H,0ABH,83H,0ABH,83H,0EEH,0E0H ; 电 DB 0FFH,0C7H,0EFH,83H,0EFH,0EFH,0CFH,0EFH ; 子 DB 0B1H,0B5H,04H,0BFH,0B1H,0B5H,9BH,0A4H ; 设 DB 0BBH,0BBH,1BH,0A0H,0BBH,0BBH,9BH,0BBH ;计

  34. 键扫描子程序: KEYWORK:MOV P1,#0FFH;置输入状态 JNB P1.0,KEY1 ;P1.0为0(键按下)转KEY1 JNB P1.1,KEY2 ;P1.1为0(键按下)转KEY2 JNB P1.2,KEY3 ;P1.2为0(键按下)转KEY3 KEYRET: RET KEY1: LCALL DL10MS ;按键1功能处理,延 ;时10ms削抖动 JB P1.0,KEYRET ;是干扰转KEYRET结束 SETB 00H ;置逐字显示方式标志 ;(20H.0=1) CLR 01H CLR 02H RET ;子程序返回

  35. KEY2: LCALL DL10MS;按键2功能处理 JB P1.1,KEYRET SETB 01H ;置上移显示方式标志 ;(20H.1=1) CLR 00H CLR 02H RET KEY3: LCALL DL10MS ; 按键3功能处理 JB P1.2,KEYRET SETB 02H ;置左移显示方式标志 ;(20H.2=1) CLR 01H CLR 00H RET

  36. 显示功能选择程序: FUN0:MOV 30H,#80H;逐字显示,1帧显示时间 ;(约1s) MOV 31H,#08H ;换帧跳转步距为8 LJMP DISP1 ;转显示子程序DISP1 FUN1:MOV 30H,#0AH ;上移显示,1帧显示时间 ;(约80ms) MOV 31H,#01H ;换帧跳转步距为1 LJMP DISP1 ;转显示子程序DISP1 FUN2:LJMP DISP2 ;左移显示

  37. 显示控制程序: DISP1: MOV B,#50H ;显示数据首址 MOV R4,30H ;放入1帧显示时间控制数据 MOV R5,31H ;放入跳转步距控制数据 LOOP: LCALL DISPLAY ;调用显示子程序一次 DJNZ R4,LOOP ;1帧显示时间未到再转 ;LOOP循环 MOV R4,30H ;1帧显示时间到,重装初值 MOV A,B CJNE A,#68H,CONT;不是末地址转CONT AJMP START1 ;是末地址,一次显示结束 ;跳回START1 CONT:ADD A,R5 ;次帧扫描首址调整 MOV B,A AJMP LOOP ;转LOOP进行次帧扫描

  38. 显示子程序: DISPLAY: MOV A,#0FFH MOV P0,A ;关显示数据 MOV P2,A ;关扫描 MOV R6,#0FEH ;赋扫描字 MOV R0,B;赋显示数据首地址 MOV R7,#08H ;一次扫描8行 DISLOOP: MOV A,@R0 ;取显示数据 MOV P0,A ;放入P0口 MOV P2,R6 ;扫描输出(显示 ;某一行) LCALL DL1MS ;亮1毫秒 INC R0 ;指向下一行数据地址 MOV A,R6 ;扫描字移入A

  39. RL A ;循环左移一位 MOV R6,A ;放回R6 DJNZ R7,DISLOOP ;8行扫描未完转 DISLOOP ;继续 RET ;8行扫描结束 1毫秒延时子程序: DL1MS: MOV R3,#64H ;100×(10+2)μs LOOPK: LCALL KEYWORK DJNZ R3,LOOPK RET

  40. 五、总结与提高 该课程设计中,可以看出LED点阵显示的控制是在七段LED数码管显示控制的基础上扩展实现的,二者都是采用动态扫描方式进行设计,从原理上是完全相同的。在这个课题的基础上,还可扩展多个LED点阵显示以实现更加复杂的分批显示模式及中文字幕的显示。

  41. 课题三 电子万年历的设计与制作 • 一、实训目的 • 熟悉DS12887时钟日历芯片的特性及设置方法,DS12887芯片与单片机的接口电路及其设计方法; • 学会模块化程序设计方法。

  42. 二、课题要求 • 制作一个可调万年历。要求如下: • 内定时间为2000年1月1日12点00分00秒,提供给新产品或换电池时使用。 • 时间调整:开机时,光标停在“年”,移动光标依次修改年、月、日、时、分、秒。 • 每按P1.0一次,光标依年、月、日、时、分、秒顺序移动。 • 每按P1.1一次,光标所在位置的值加1。 • 每按P1.2一次,光标所在位置的值减1。 • 采用LCD液晶显示器显示。

  43. 三、背景资料 时钟日历芯片DS12887: • 能够自动产生年、月、日、时、分、秒等时间信息, • 芯片内部带有锂电池,外部掉电时,其内部时间信息能够保持10年之久; • 有12小时制和24小时制两种工作模式; • 时间的表示方法有两种:二进制数表示和BCD码表示。 • 用户可对DS12887进行编程以实现多种方波输出, • 用户可对其内部的三路中断通过软件进行屏蔽。

  44. 1、引脚说明 • Vcc:直流电源+5V输入 • 当Vcc输入为+5V时,用户可以访问DS12887内RAM中的数据,并可对其进行读、写操作; • 当Vcc的输入小于+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯片内的时间信息; • 当Vcc的输入小于+3V时,DS12887会自动将电源切换到内部自带的锂电池上,以保证内部的电路能够正常工作。 图10—11 DS12887引脚图

  45. GND:地 • MOT:总线模式选择 当MOT接Vcc时选用Motorola总线模式,当MOT接GND时选用Intel总线模式。 • SQW:方波输出 当供电电压Vcc大于4.25V时,SQW脚可进行方波输出,此时用户可以通过对控制寄存器编程来得到13种方波信号的输出。 • AD0~AD7:双向地址/数据总线。 • AS:地址有效输入。 • DS/ :数据选通/读允许 当MOT接Vcc时作为数据选通;当MOT接GND时,作为读允许输入。

  46. R/ :读/写允许输入。 若MOT接Vcc,该引脚为高电平时读操作,为低电平时写操作;若MOT接GND,该引脚作为写允许输入。 • :片选输入。低电平有效。 • :中断请求输出。低电平有效。 • :复位端。低电平有效,复位操作不影响时钟日历工作。 • NC:空引脚。

  47. 2、存储器分配与设置 DS12887片内RAM与寄存器地址分配见图10—12。 DS12887带有128字节片内RAM: • 10字节的时标寄存器:用来存储时间信息,地址00H~09H CPU可以通过读取时标寄存器获得时间与日历值,也可以编程设置其初值,时标寄存器的值可以用二进制或BCD码表示。 • 4字节的控制寄存器:用来存储控制信息,地址0AH~0DH 用户可通过对控制寄存器编程实现从SQW引脚输出多种不同频率的方波,并可对其内部的三路中断通过软件进行屏蔽。 • 114字节作为通用RAM供用户使用,地址为0EH~7FH。

  48. 10—12 片内RAM与寄存器地址分配

  49. 时标寄存器的数据格式,见下表所示。

  50. 控制寄存器的格式 ①寄存器A用于选择时钟频率、中断周期和SQW输出频率,格式如下:

More Related