单片机原理实验
较缓慢,100mS测一次热系统的温度已可满足绝大多数应用要求,按图5.1电路所给出的参数,由(3)式可计算出振荡电路输出信号在100mS内脉冲数与温度之间的关系,如表4.2第3栏所示。
2. 脉冲计数值换算为温度的算法原理
按前述的测温原理,单片机能够直接测量的是100mS内振荡器输出脉冲的个数,由于NTC10K热敏电阻的非线性,要将100mS的脉冲数转换成相应温度只能采用反函数的查表方法(只适用于单调的函数)。反查函数(单调上长)表的方法如下:①由0℃到99℃,从表中逐一取出各温度点的脉冲数;②求出“当前脉冲数-某温度点脉冲数”的差,若“差”≥0则取下一个温度点的脉冲数,再求“差”,直至“差”<0时转下一步骤;③上一步骤确定当前温度在相邻的两温度点之间,还应判断当前温度与这两温度点中的哪个点更接近,判断方法如下:若“当前脉冲数-前个温度点脉冲数”(正)+“当前脉冲数-后个温度点脉冲数”(负,补码)≥0(有进位),则表明当前温度更接近后一个温度点。
27℃的脉冲数680(2A8H)和28℃的脉冲数705
由TEMP1查表取出某温度(2C1H)之间,因此“当前脉冲数-前个温度点
点脉冲数;
脉冲数-某温度点脉冲数 冲数”=FFF4H,两者之和为0001H,进位位=1,表明当前温度更接近28℃。
若将当前脉冲数暂存在
;====脉冲计数值查表转换为温度==== ;入口条件
;出口
MOV TEMP1,A MOV R6,A MOV R7,A
MOV DPTR,#TTAB
FTP0: MOV A,TEMP1 ;读某温度脉冲数 RL A
MOVC A,@A+DPTR MOV R4,A
28
“差”≥0? Y N
单片机原理实验
MOV A,TEMP1 RL A INC A
MOVC A,@A+DPTR MOV R5,A
CLR C ;
JC FTP2 ;\当前脉冲数<某温度脉冲数\则转移 MOV A,R5 ;
DEC TEMP1
FTP3: MOV A,TEMP1 ;温度值转换为压缩BCD码 MOV B,#10 DIV AB SWAP A ADD A,B MOV TEMP1,A RET
TTAB: DW 213,224,235,246,258,270,283,296,310,324 DW 339,354,370,387,404,421,439,458,477,497
29
单片机原理实验
DW 518,539,561,583,606,630,654,680,705,731 DW 758,786,814,843,873,903,934,965,997,1030
DW 1063,1097,1131,1166,1202,1238,1274,1311,1348,1386 DW 1424,1463,1502,1542,1581,1621,1662,1702,1743,1784 DW 1825,1867,1908,1950,1991,2033,2075,2116,2158,2200 DW 2241,2283,2324,2365,2406,2447,2487,2527,2567,2607 DW 2646,2686,2724,2763,2801,2838,2876,2913,2949,2985 DW 3020,3056,3090,3124,3158,3191,3224,3256,3288,3319
3. 内部RAM的统筹规划
在实验三中,我们曾经强调:用汇编语言编程时,程序员必须对CPU资源进行统筹规划,必须在主程序的开始处对所有IO口和变量进行定义,于方便CPU资源的统筹规划、调整和修改;实验四中将IO口和变量定义部分独立成1个子程序模块。IO口的分配与硬件设计有关,不能随意更改,而内部RAM分配则由程序员安排,有很大的调整空间,然而内部RAM分配一般应遵循以下原则:①00H~1FH单元为工作寄存器区,即4个组的R0~R7,R0~R7一般用于保存各种运算的中间结果或循环控制变量,这些量只对某个模块有意义,退出该模块后其内保存的数据已没有意义,因而各模块均可重复使用这些工作寄存器。由于中断请求的断点是随机的,因此主程序、不同优先级的中断服务子程序不能使用同一组工作寄存器。②20H~2FH单元为可位寻址区,该区域一般用于存储位控制变量或用户自定义状态标志位,如键状态位等。③30H~7FH单元为可直接寻址区,该区应分为30H~XXH段和XXH+1~7FH段,前者用于保存重要变量,程序频繁访问这些存储单元,用于控制程序运行;后者为堆栈区,用于程序断点保护、中断现场保护及模块间数据的传递。两段的分界XXH应视系统对堆栈深度的要求而定,涉及主程序所调用的子程序中最大的嵌套级数、中断是否有优先级设定、中断现场保护的数据量、中断服务程序内是否有子程序调用、用堆栈进行模块间数据传递的数量等。如,某系统主程序所调用子程序中最多有二级嵌套(需4个堆栈单元),中断有二个优先级,高优先级中断服务程序不需保护现场(需2个堆栈单元),低优先级中断服务程序需要保护ACC和PSW且内嵌单级子程序调用(需6个堆栈单元),没有用堆栈进行模块间数据传递,则该系统所需堆栈深度为12个单元。④80H~FFH(52系列)只能间接寻址,用于数量相对较大、程序较不频繁访问的数据存储,如串口数据收发等。
四、 实验内容
1. 温度测量及超上限报警系统设计
在实验板上设计一个系统,实现以下功能:①上电时4位数码管显示“8952”1秒,指示灯全亮。②紧接着显示当前测量的温度值,同时LD1灯亮表示当前显示内容为实测温度,此时按键K0~11无效,SW1和SW2键有效。③若按SW2键一次,可开始对报警上限温度(有效范围0000~0099)进行设置,LD2亮表示此时可以利用数码显示和按键K0~9进行上限温度赋值,K0~9键代表“0~9”数值键,每按1次数值键后,原4位显示数值在显示器上左移1位,新输入的数值从右边进入,输入数值的位数不限,但显示器的最高两位始终为零;若再按“SW2”键一次,显示器上显示的数值保存,重
30
单片机原理实验
新显示实测温度,LD1亮。④在显示实测温度、LD1亮的情况下,若按SW1键一次,转换为温度报警器,此时显示器高两位显示设置的上限温度,低两位显示实测温度,LD3亮表示具有温度超限报警,此时不能对显示数值进行修改;一旦实测温度达到或超过设置的上限温度则LD8亮,否则LD8灭;再按SW1键一次重新显示温度,LD1亮。
请根据上述功能描述,用实验四所述的“状态分析法”对系统的状态、状态转移条件进行分析,得出系统的状态及其转移表;画出系统主程序框图、各工作状态细化流程图,写出主程序、各工作模块程序清单。
建立工作文件夹“E:\\学号\\实验五”,使用“WAVE 3.2”集成开发软件,以“MAIN.ASM”文件名建立源程序文件,录入、编辑“温度测量及超限报警系统”主程序。
2. 脉冲计数值换算为温度子程序设计
以“FTEMP.ASM”文件名建立源程序文件,录入、编辑脉冲计数值转换为温度值子程序。
3. 程序移植
将“实验四”中建立的5位LED数码管动态显示子程序DISP.ASM、初始化子程序INITIAL.ASM、变量及常数定义子程序VARDFN.ASM复制到当前工作文件夹。其中变量及常数定义子程序VARDFN.ASM需作适当的修改,添加温度测量值存储单元
4. 软件调试
在工作文件夹中,以“PROJECT”文件名创建工程项目,将MAIN.ASM添加到模块文件中,编译项目直至通过。将编译通过的目标程序下载到实验板中,取下下载器,通电试运行。若目标程序运行不能达到预期效果,用实验一、所述方法进行模拟仿真,查找算法、程序错误,再编译、下载、运行目标程序直至达到预期效果,完成调试。
五、 实验报告要求
实验报告要求写明实验目的,并提交以下内容。
1. 简要表述本简易温度报警系统的状态、状态转移条件的分析过程,提交状态及其转移表。
2. 提交主程序、各工作模块子程序流图及程序清单(赋值模块除外)。 3. 回答思考题。
六、 思考题
1. 试从充放电过程的暂态方程出发说明为什么555振荡器输出高、低电平的时间为什么满足(1)、(2)式。
2. 在所有程序中多次使用工作寄存器,试述为什么可以这样作? 3. 试简述你的设计、调试体会。
31
单片机原理实验
实验六、中断实验 ――简易温度控制器设计
一、
实验目地
1. 掌握中断及中断服务程序的设计方法。
2. 掌握可控硅导通角控制方法和简易温度控制器设计方法。
3. 进一步学习程序移植方法、模块化程序设计方法,巩固状态及其转移分析方法。
二、 实验设备
PC 兼容机1台、目标程序下载接口电路1套、AT89S52实验板1套;操作系统为WindowsXP,安装有单片机集成开发软件“WAVE 3.2”和下载器驱动软件。
三、 实验原理
1. 可控硅导通角控制方法
用单片机控制可控硅导通角的控制电路如图6.1所示,电路可分成可控硅导通角控制电路(即加热功率调整电路)和工频同步电路二个部分。
可控硅是可控硅整流元件的简称,是一种具有三个PN 结的四层结构的大功率半导体器件,亦称为晶闸管。具有体积小、结构相对简单、功能强等特点,是比较常用的半导体器件之一。该器件被广泛应用于各种电子设备和电子产品中,如可控整流、逆变、变频、交流负载调压、无触点开关等。一般来说,可控硅主要用于强电电路,单片机系统对可控硅的控制应采用光隔离,单片机先控制光耦合可控硅(如MOC3021,100mA/400V),由光耦合可控硅再驱动大功率的可控硅。本实验板仅从控制原理角度出发,暂不考虑大功率可控硅驱动问题。如图6.1所示,采用100Ω/2W的功率电阻作为加热器,使用9Vac的交流电源,并将实验五所述的热敏电阻紧贴功率电阻,由单片机实时监测温度,直接控制光耦合可控硅,调整加热器功率,实现温度自动控制。
D1~4组成全波整流电路,为电源电路和工频同步电路所共用。D5将全波整流电路与电容滤波和稳压电路隔离(参见附录二总原理图),经隔离后A点的电压如图6.2(b)所示(若没有隔离,由于滤波电容的支撑,A点电位在任何时刻都不可能降为零)。全波整流电压经R2、R3和光耦合器IC2,后形成工频同步脉冲,如图6.2(c)
R5100/2WIC3MOC3021JP212CON29VACD44007工频交流电同步电路AD54007D340071D24007D14007C1470uF2IC2TLP521R21K+5VR310K43INT0u2加热功率调整电路+5VR4330KKG图6.1:可控硅导通角控制电路 32