单片机原理实验讲义(6)

2019-01-27 18:58

单片机原理实验

五、 实验报告要求

实验报告要求写明实验目的,并提交以下内容。

1. 总结应用模块化方法设计系统程序的主要步骤及状态转移表应包含哪些要素?

2. 提交RDKEY.ASM、VARDFN.ASM二个模块文件的清单。

3. 提交待机模块、赋值模块细化的程序流图、汇编语言源程序清单。 4. 回答思考题。

六、 思考题

1. 估算你所编写的系统程序执行一次主循环的最长时间,即从执行“CLR TF0”到执行“AJMP MLOOP”转移等待MLOOP处所需的最长时间,如果该最长时间超过4mS会出现什么情况?

2. 为什么不能使用无条件转移指令由一个工作模块直接转移到另一个工作模块?

25

单片机原理实验

实验五、计数器应用实验

――基于热敏电阻和555时基电路的简易温度计设计

一、

实验目地

1. 掌握定时器/计数器综合应用设计方法。

2. 掌握基于热敏电阻和555时基电路的简易温度计设计方法。

3. 进一步学习模块化程序设计方法,巩固状态及其转移分析方法。

4. 进一步学习程序移植方法,巩固变量定义、初始化、数码管动态显示、读键状态及去抖处理等子程序(或子模块)的调整与应用。

二、 实验设备

PC 兼容机1台、目标程序下载接口电路1套、AT89S52实验板1套;操作系统为WindowsXP,安装有单片机集成开发软件“WAVE 3.2”和下载器驱动软件。

三、 实验原理

+5V555IC4481. 温度测量原理

常用的温度传感器有热电偶温度传感器、二极管温度传感器、半导体集成温度传感器、热敏电阻温度传感器,本实验采用热敏电阻和555时基电路构成简易的温度传感器,电路构成如图5.1所示。

图5.1是由555时基电路组成自激多谐振荡电路,电路的工作有三个过程。①上电时电容C5的电压uC5?0,555

RTNTC/10KC5103R63K762RESETDISCHGC7104VCCOUT35C6104T1THOLDCVOLTTRIGGND1输出高电平、放电端“DSI”关断,此时

电源通过电阻R6及RT向电容C5充电,图5.1:由555时基电路组成自激多谐振荡器 当充电至uC5?13VCC时,555状态不变仍输出高电平,继续充电。②电容C5从uC5?13VCC电平处通过R6及RT充电,此时输出为高电平;当充电至

表5.1:555时基电路逻辑功能表 TH × TR R OUT L L H DIS 导通 导通 关断 × L H H H ?1 ?23VCC3VCC ?1 ?23VCC3VCC× ?13VCCuC5?23VCC时,555状态翻转,输出低

电平、放电端“DIS”对地导通,电容

C5通过电阻RT放电;这个充电过程的时长T1满足:

23原状态 原状态 VCC?VCC?23VCCexp??T1(R6?RT)C5?,即T?(R16?RT)C5ln2 (1)

V③电容C5从uC5?2此时输出为低电平;当放电至uC5?13VCC3CC电平处通过RT放电,

26

单片机原理实验

时,555状态翻转,输出高电平、放电端“DSI”关断,电源又通过电阻R6及RT向电容C5充电,这个放电过程的时长T2满足:

13VCC?23VCCexp??,即T?T2RTC52?RTC5ln2 (2)

此后,电路双重复②③两过程,输出矩形脉冲波,周期T为:

T?(R6?2RT)C5ln2?0.69(R6?2RT)C5 (3)

若电阻RT采用热敏电阻,当温度变化时,振荡器输出脉冲频率FT变化,将振荡器输出信号与单片机T1计数器输入引脚相连,通过测量恒定时间间隔内脉冲的个数,由该脉冲计数值可换算出相应的温度。

表4.2:NTC10K热敏电阻温度与电阻值对应关系及振荡器100mS产生脉冲数

T(℃) RT(KΩ) 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 100mS 100mS 100mS 100mS T(℃) RT(KΩ) T(℃) RT(KΩ) T(℃) RT(KΩ) 脉冲数 脉冲数 脉冲数 脉冲数 32.5030 213 25.0 10.0000 630 50.0 3.5870 1424 75.0 1.4619 2447 30.9026 224 26.0 9.5718 654 51.0 3.4525 1463 76.0 1.4136 2487 29.3896 235 27.0 9.1642 680 52.0 3.3238 1502 77.0 1.3672 2527 27.9590 246 28.0 8.7760 705 53.0 3.2005 1542 78.0 1.3225 2567 26.6058 258 29.0 8.4063 731 54.0 3.0824 1581 79.0 1.2795 2607 25.3254 270 30.0 8.0541 758 55.0 2.9692 1621 80.0 1.2381 2646 24.1135 283 31.0 7.7184 786 56.0 2.8608 1662 81.0 1.1983 2686 22.9661 296 32.0 7.3985 814 57.0 2.7568 1702 82.0 1.1599 2724 21.8795 310 33.0 7.0935 843 58.0 2.6572 1743 83.0 1.1229 2763 20.8502 324 34.0 6.8026 873 59.0 2.5616 1784 84.0 1.0873 2801 19.8747 339 35.0 6.5251 903 60.0 2.4700 1825 85.0 1.0530 2838 18.9502 354 36.0 6.2604 934 61.0 2.3820 1867 86.0 1.0199 2876 18.0735 370 37.0 6.0077 965 62.0 2.2977 1908 87.0 0.9880 2913 17.2421 387 38.0 5.7666 997 63.0 2.2167 1950 88.0 0.9573 2949 16.4534 404 39.0 5.5363 1030 64.0 2.1390 1991 89.0 0.9277 2985 15.7049 421 40.0 5.3164 1063 65.0 2.0644 2033 90.0 0.8991 3020 14.9944 439 41.0 5.1064 1097 66.0 1.9928 2075 91.0 0.8715 3056 14.3198 458 42.0 4.9057 1131 67.0 1.9240 2116 92.0 0.8450 3090 13.6792 477 43.0 4.7140 1166 68.0 1.8579 2158 93.0 0.8193 3124 13.0705 497 44.0 4.5307 1202 69.0 1.7944 2200 94.0 0.7945 3158 12.4922 518 45.0 4.3554 1238 70.0 1.7334 2241 95.0 0.7707 3191 11.9425 539 46.0 4.1878 1274 71.0 1.6747 2283 96.0 0.7476 3224 11.4198 561 47.0 4.0275 1311 72.0 1.6183 2324 97.0 0.7253 3256 10.9227 583 48.0 3.8742 1348 73.0 1.5641 2365 98.0 0.7038 3288 10.4499 606 49.0 3.7275 1386 74.0 1.5120 2406 99.0 0.6831 3319 NTC10K负温度系数热敏电阻,其温度与电阻值的对应关系是非线性的,标称值10K是指该热敏电阻在25℃时的电阻值为10KΩ,测温范围为-20~100℃,表4.2第1和2栏给出NTC10K温度与电阻值的对应关系,此对应关系由厂商提供,可精确到0.5℃,考虑到电路其它元件的误差,本简易温度测量方法的误差不可能小于1℃,因此表4.1仅给出0℃以上的整数(℃)温度值所对应的电阻值。通常情况下,热系统的温度变化

27

单片机原理实验

较缓慢,100mS测一次热系统的温度已可满足绝大多数应用要求,按图5.1电路所给出的参数,由(3)式可计算出振荡电路输出信号在100mS内脉冲数与温度之间的关系,如表4.2第3栏所示。

2. 脉冲计数值换算为温度的算法原理

按前述的测温原理,单片机能够直接测量的是100mS内振荡器输出脉冲的个数,由于NTC10K热敏电阻的非线性,要将100mS的脉冲数转换成相应温度只能采用反函数的查表方法(只适用于单调的函数)。反查函数(单调上长)表的方法如下:①由0℃到99℃,从表中逐一取出各温度点的脉冲数;②求出“当前脉冲数-某温度点脉冲数”的差,若“差”≥0则取下一个温度点的脉冲数,再求“差”,直至“差”<0时则转下一步骤;③上一步骤确定当前温度在相邻的两温度点之间,还应判断当前温度与这两温度点中的哪个点更接近,判断方法如下:若“当前脉冲数-前个温度点脉冲数”(正)+“当前脉冲数-后个温度点脉冲数”(负,补码)≥0(有进位),则表明当前温度更接近后一个温度点。

若将当前脉冲数暂存在,“当前脉冲数-前个温度点脉冲数”暂存在,“当前脉冲数-后个温度点脉冲数”暂存在,转换结果当前温度保存在中,则上述算法可用图5.2所示流图表示。

3. 内部RAM的统筹规划

在实验三中,我们曾经强调:用汇编语言编程时,程序员必须对CPU资源进行统筹规划,必须在主程序的开始处对所有IO口和变量进行定义,于方便CPU资源的统筹规划、调整和修改;实验四中将IO口和变量定义部分独立成1个子程序模块。IO口的分配与硬件设计有关,不能随意更改,而内部RAM分配则由程序员安排,有很大的调整空间,然而内部RAM分配一般应遵循以下原则:①00H~1FH单元为工作寄存器区,即4个组的R0~R7,R0~R7一般用于保存各种运算的中间结果或循环控制变量,这些量只对某个模块有意义,退出该模块后其内保存的数据已没有意义,因而各模块均可重复使用这些工作寄存器。由于中断请求的断点是随机的,因此主程序、不同优先级的中断服务子程序不能使用同一组工作寄存器。②20H~2FH单

←0 ←0 由TEMP1查表取出某温度点脉冲数;←当前脉冲数-某温度点脉冲数 N “差”≥0? Y +1 N TEMP1=99? Y + N 非0则减1 进位? Y 转压缩BCD码 返回 图5.2:脉冲数转换温度算法流程

元为可位寻址区,该区域一般用于存储位控制变量或用户自定义状态标志位,如键状态位等。③30H~7FH单元为可直接寻址区,该区应分为30H~XXH段和XXH+1~7FH段,

28

单片机原理实验

前者用于保存重要变量,程序频繁访问这些存储单元,用于控制程序运行;后者为堆栈区,用于程序断点保护、中断现场保护及模块间数据的传递。两段的分界XXH应视系统对堆栈深度的要求而定,涉及主程序所调用的子程序中最大的嵌套级数、中断是否有优先级设定、中断现场保护的数据量、中断服务程序内是否有子程序调用、用堆栈进行模块间数据传递的数量等。如,某系统主程序所调用子程序中最多有二级嵌套(需4个堆栈单元),中断有二个优先级,高优先级中断服务程序不需保护现场(需2个堆栈单元),低优先级中断服务程序需要保护ACC和PSW且内嵌单级子程序调用(需6个堆栈单元),没有用堆栈进行模块间数据传递,则该系统所需堆栈深度为12个单元。④80H~FFH(52系列)只能间接寻址,用于数量相对较大、程序较不频繁访问的数据存储,如串口数据收发等。

四、 实验内容

1. 脉冲计数值换算为温度子程序设计

参照图5.2所示流程图,设计脉冲计数值转换为温度值子程序设计,列出程序清单。

建立工作文件夹“E:\\学号\\实验五”,使用“WAVE 3.2”集成开发软件,以“FTEMP.ASM”文件名建立源程序文件,录入、编辑脉冲计数值转换为温度值子程序。

2. 温度测量及超上限报警系统设计

在实验板上设计一个系统,实现以下功能:①上电时4位数码管显示“8952”1秒,指示灯全亮。②紧接着显示测量当前测量的温度值,同时LD1灯亮表示当前显示内容为实测温度,此时按键K0~11无效,SW1和SW2键有效。③若按SW2键一次,可开始对报警上限温度(有效范围0000~0099)进行设置,LD2亮表示此时可以利用数码显示和按键K0~9进行上限温度赋值,K0~9键代表“0~9”数值键,每按1次数值键后,原4位显示数值在显示器上左移1位,新输入的数值从右边进入,输入数值的位数不限,但显示器的最高两位始终为零;若再按“SW2”键一次,显示器上显示的数值保存,重新显示实测温度,LD1亮。④在显示实测温度、LD1亮的情况下,若按SW1键一次,转换为温度报警器,此时显示器高两位显示设置的上限温度,低两位显示实测温度,LD3亮表示具有温度超限报警,此时不能对显示数值进行修改;一旦实测温度达到或超过设置的上限温度则LD8亮,否则LD8来;再按SW1键一次重新显示温度,LD1亮。 请根据上述功能描述,用实验四所述的“状态分析法”对系统的状态、状态转移条件进行分析,得出系统的状态及其转移表;画出系统主程序框图、各工作状态细化流程图,写出主程序、各工作模块程序清单,以“MAIN.ASM”文件名建立源程序文件,录入、编辑“温度测量及超限报警系统”主程序。

3. 程序移植

将“实验四”中建立的5位LED数码管动态显示子程序DISP.ASM、初始化子程序INITIAL.ASM、变量及常数定义子程序VARDFN.ASM复制到当前工作文件夹。其中变量及常数定义子程序VARDFN.ASM需作适当的修改,添加温度测量值存储单元、100mS定时计数单元。

4. 软件调试

在工作文件夹中,以“PROJECT”文件名创建工程项目,将MAIN.ASM添加到模块

29


单片机原理实验讲义(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:考研政治知识结构框架图

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: