单片机智能电子温度计设计(电路图+原理图+源代码)课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机智能电子温度计设计(电路图+原理图+源代码)-课程
设计
单片机智能电子温度计设计(电路图+原理图+源代码)
智能电子温度计,要求显示温度和时间,能实现异常温度报警,温度和时间可设置。
自己构思系统的功能,成分发挥想象力和创造力,尽可能实现较多的功能,并能实现功能的扩展。
1. 根据课题,查阅相关资料;
2. 画出系统的原理框图;
3. 画出单元电路图;
4. 编写相应部分程序;
5. 撰写说明书。
1. 靳达.单片机应用系统开发实例导航.北京:人民邮电出版社,。
2. 张俊谟。
单片机中级教程.原理与应用北京:北京航空航天大学出版社,。
3. 何立民.MCS-51系列单片机应用系统设计(系统配置与接口技术)。
目录
单片机课程设计任务书 2
智能体温计的设计 7
一、主要模块的方案论证与比较 7
1.1 温度传感器的选择 7
1.2 A/D转换器的选择 7
1.3 时间模块 8
二、总系统设计方案 10
2.1 总系统方案设计描述 10
2.2 系统电路原理图 10
电源电路模块 10
2.2.2 温度检测、放大模块 11
2.2.3 A/D转换模块 12
温度设制、显示及报警电路模块 15
2.2.5 时间设制、显示模块 16
三、系统软件设计 17
系统程序流程图 17
时间设置流程 18
四、系统测试 21
4.1 硬件测试 21
4.1.1 单元模块的测试 21
系统整体测试 21
软件测试 21
4.3 硬件与软件的联机测试 21
五、测试数据及实验结果 23
5.1 测试数据 23
5.2 测试结果分析 23
六、总结和体会 24
七、参考文献 25
附录1 26
附录2(程序) 1068
单片机智能电子温度计设计(电路图+原理图+源代码)
智能体温计的设计
摘要:本智能体温计采用AT89S51作为核心器件实现对系统的自动控制,采用双单片机串行处理结构。
外界温度经AD590集成温度传感器采集,温度变化转换为线性电压信号,再经由OP07构成高精度低温漂的放大电路处理后,作为ADC0809的模拟输入信号,由ADC0809完成A/D转换,得到8位的数字信号送入单片机1(AT89S51)。
单片机1将采集到温度值在LED数码管上显示出来。
单片2(AT89S51)设置和调节系统时间。
此外温度预制,报警电路模块功能也由单片机1完成。
通过系统的设计与实现说明本设计方案切实可以,能够完成题目所要求的基本功能部分,并留有相应的接口,为完成扩展功能打下基础。
关键字:单片机 AD590 ADC0809
一、主要模块的方案论证与比较
1.1 温度传感器的选择
方案一:采用热敏电阻。
热敏电阻价格便宜,对温度灵敏,原理简单,但线性度不好,如不进行线性补偿,对于本设计归一化输出的要求,难于达到设计精度;如要对非线性进行补偿,则电路结构复杂,难于调整。
故不采用。
方案二:采用热电偶。
热电偶在测温范围内热电性质稳定,不随时间变化而变化,电阻温度系数小,导电率高,比热小,但热电偶一般体积较大,使用不方便,价格相对较高。
作为一个智能体温计的温度传感器,要求体积小,使用方便,便于携带,故此方案不合适。
方案三:采用集成温度传感器。
集成温度传感器一般且有具有线性好、精度高、灵敏度高、体积小、使用方便等优点。
根据实验室现有材料可选取AD590。
AD590的测温范围为-55℃~+150℃,能满足本设计的0~50度测量要求。
根据相关技术资料:AD590线性电流输出为1 A/K,正比于绝对温度;AD590的电源电压范围为4V~30V,并可承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。
该方案能完全满足此设计的要求,故采用此方案。
1.2 A/D转换器的选择
方案一:选用AD574。
AD574的数字量位数可设成8位也可以设为12位,且无需外接CLOCK时钟,转换时间达到25μs,输出模拟电压可以是单极性的0-10V 或0-20V,也可以是双极性的±5V或±10V之间。
AD574精度高,但与8位的单片机接口较复杂,且价格昂贵,考虑到体温计是对温度的测量,其响应时间的要求不高。
故不选用此方案。
方案二:选用ICL7135。
这类芯片比较适合于低速测量仪器,适用于精度高,速度要求不高的系统设计中。
ICL7135的输出为动态扫描BCD码,与单片机的接口较复杂。
且它的满量程输入为2V电压,如在本设计中使用要进行衰减,较难保证转换精度。
方案三:选用ADC0809。
ADC0809数字量是8位,转换时间为100μs,输入模拟电压为单极性的0-5V。
由于本设计的要求精度不是很高,ADC0809可以达到要求,故选用此方案。
1.3 时间模块
方案一: 8279扩展。
该方案方框图如图所示,8279是一种可编程的键盘/显示接口专用芯片,它含有键盘输入和显示输出两种功能,键扫描程序和动态显示程序全由8279硬件自动完成,此种方案能以比较简单的硬件
电路和较少的软件开销实现单片机与键盘、LED显示器的接口。
方案二: 8155扩展,LED动态显示。
该方案方框图如图所示,8155是一块可编程的接口芯片,与单片机的接口非常简单,它的键盘、显示共用一个接口电路,可节省I/O口。
但动态扫描方式需占用CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。
方案三: 串口扩展,LED静态显示。
该方案方框图如图所示,独立式键盘配置灵活,软件结构简单,按键较多时不宜采用。
静态显示占用口资源少,采用串口传输实现静态显示, LED数码管与单片机之间通过6个移位寄存器相连,显示亮度有保证,但此方案的硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行口资源较少的场合。
方案四: 独立式按键,LED动态显示。
该方案方框图如图所示,独立式按键直接与单片机I/O口相连构成键盘,每个按键不会相互影响,因本系统用到的按键比较少,采用独立式键盘不会浪费I/O口线,所以本系统采用独立式键盘。
动态显示的亮度虽然不如静态显示,但其硬件电路较简单,可节省硬件成本,虽然动态扫描需占用CPU较多的时间,但本系统中的单片机没有很多实时测控任务,因此,本系统采用此种方案。
单片机智能电子温度计设计(电路图+原理图+源代码)
二、总系统设计方案
2.1 总系统方案设计描述
根据题目要求,将系统分为若干模块,以单片机为核心,完成多项功能。
图1 系统框图
系统框图如图1,AD590把采集的外部温度信号转换成相应的电压,再经过
OP07运放放大后作为ADC0809的模拟输入信号,ADC0809将此模拟信号转换成数字信号,通过并口送入到单片机1。
单片机1把这些信号处理后通过LED数码管显示出来,单片机2控制显示时间。
2.2 系统电路原理图
见附录1。
如图所示,该电路主要由电源电路,温度检测、放大电路,单片机电路,A/D转换电路,按键输入、报警电路,数码管扫描显示电路组成。
电源电路模块
图3 电源电路图
如图3所示,220V交流电经变压器市降压、桥式整流、电容滤波后由7812、7805、7905三端集成稳压管分别得到+12V、+5V、-5V电压。
给整个电路供电。
2.2.2 温度检测、放大模块
图4 AD590温度检测、放大电路图
如图4所示,温度检测、放大电路主要器件的作用:OP1:电压跟随器;OP2:电压跟随器;OP3:差分放大电路;AD590:温度传感器;SVR:零位调整。
(1)AD590简介
AD590是电流输出型的半导体温度感测组件,主要特性如下:
1.具有线性输出电流。
2.宽广的操作温度范围(-55℃~150℃)。
3.宽广的工作电压范围(+4V~+30V)。
4.良好的隔离性。
AD590的包装与等效电路如图4所示,是TO-52型金属外壳包装。
他是两端子的半导体温度感测组件,另有一端子是外壳接脚,可接地以减少噪声干扰。
AD590如同一个随温度而改变输出电流的定电流源,输出电流与外壳的开氏(K)温度成正比。
开氏温度与摄氏温度的单位相等,0℃等于,100℃等于。
当温度为0℃时,AD590的输出电流是。
而温度为100℃时,输出电流是。
温度每升高1℃,输出电流增加1μA,及温度系数为1μA/℃。
图5 AD590包装与等效电路图
(2)图2温度检测、放大电路原理
AD590当温度增加1℃时,其输出电流会增加1μA。
即AD590的温度系数为
1μA/℃。
所以在T(℃)时的电流I1(T)为,而温度每变化1℃时,V2的电压变化是为,表示温度每增加1℃,V2会增加10mV。
在0℃时V2就已经有电压存在,其值为,则T(℃)时,。
如图3所示,OP3组成差动放大器,电压增益为。
零位调整SVR1则用于抵补0℃的电压值,由差动放大器的公式可得知,若调整SVR1使V1的电压为,则0℃时,差动放大器的输出VO为0V。
也就是说,若温度是在0℃至50℃之间,则差动放大器的输出电压是在0V至5V之间,亦即每的输出代表温度上升1℃。
与设计要求相符合。
2.2.3 A/D转换模块
如图6:ADC0809把从放大电路传送过来的模拟信号转变成数字信号,并行传送给单片机的P0口,让单片机处理。
图6 A/D转换电路图
(1)ADC0809简介
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
1)ADC0809的内部逻辑结构
由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D 转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
图 ADC0809的内部逻辑结构图
单片机智能电子温度计设计(电路图+原理图+源代码)
2) ADC0809引脚结构
ADC0809各脚功能如下:
D7-D0:8位数字量输出引脚。
IN0-IN7:8位模拟量输入引脚。
VCC:+5V工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端。
START:A/D转换启动信号输入端。
ALE:地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).
EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:输出允许控制端,用以打开三态数据输出锁存器。
CLK:时钟信号输入端(一般为500KHz)。
A、B、C:地址输入线。
图7 ADC0809引脚图
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条
ALE为地址锁存允许输入线,高电平有效。
当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。
A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择表如下表所示。
C B A 选择的通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3
1 0 0 IN4
1 0 1 IN5
1 1 0 IN6
1 1 1 IN7
数字量输出及控制线:11条
ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。
OE为输出允许信号,
用于控制三条输出锁存器向单片机输出转换得到的数据。
OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。
D7-D0为数字量输出线。
CLK为时钟输入信号线。
因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,
VREF(+),VREF(-)为参考电压输入。
2). ADC0809应用说明
1). ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
2).初始化时,使ST和OE信号全为低电平。
3).送要转换的哪一通道的地址到A,B,C端口上。
4).在ST端给出一个至少有100ns宽的正脉冲信号。
5).是否转换完毕,我们根据EOC信号来判断。
6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
温度设制、显示及报警电路模块
如图7:通过按键可以事先设定报警温度值,当显示的温度值超过设定的温度值时,单片机就会从INT0脚发出一连串脉冲,驱动蜂鸣器发出报警声。
图7 温度设制、显示及报警电路图
2.2.5 时间设制、显示模块
如图7:通过按键可以事先设定时间,并随着系统的运行而变。
图9 时间电路图
三、系统软件设计
系统程序流程图
图11 单片机1程序主流程图
3.2 时间设置流程
单片机智能电子温度计设计(电路图+原理图+源代码)
四、系统测试
4.1 硬件测试
4.1.1 单元模块的测试
(A)电源测试:用数字万用表电压档测量各三端稳压管输出的电压值是否正常。
测试相关测试点,三路电压正常。
电源设计成功。
(B)温度采集模块的测试:调节温度变化,测试点的电压值是否有相对应的改变。
当温度变化时,测试点的电压与温度之间的线性关系比较好,如表1所示,达到设计要求。
(C)A/D转换模块的测试:当输入为0V和5V以及中间若干电压输入时,测试A/D转换是否正常。
测试发现当输入为0V时,ADC0809的输出为00H,为+5V 时为0FFH,当输入为时,输出为0EFH,测试结果表明A/D转换的功能完全实现。
系统整体测试
测试方法——以水温代替人的体温,用一根水银温度计与所制作的体温计探头(捆绑)同时接触被测热水的同一点。
(A)准备一杯0摄氏度的冰水混合物和一杯热水。
从0度开始记录测试点的电压值与温度计对比较。
记完一个数后,往杯中加热水,这样,每测一次,记录一次数据,再加一次热水,这样使水温渐渐升高,一直测到水温为50摄氏度。
测试结果如表1所示,说明数码管显示的数值是否与测试点所测值在误差允许范围内是成归一化关系的。
(B)检测水温高于50摄氏度时测试点的电压值。
看是否为+5V。
结果显示为
+5V,说明保护电路可行。
软件测试
将各功能子程序进行KAIL C系统进行软件仿真,全部通过,再进行硬件仿真,也能全部实现所要求实现的功能。
(1)数码管显示的测试:把放大器的输出连接到ADC0809的输入端,ADC0809与单片机相连接,观察数码管显示的数值是否与测试点所测值成归一化关系。
(2)双机串行通信的测试:从主机发送一个8位的二进制数,用示波器观察从机是否接收到。
4.3 硬件与软件的联机测试
根据前面的测试,说明系统设计的软、硬件设计基本取得成功。
将把程序经编译、下载到相应的AT89S51芯片中,构建电路测试,比较数码管显示的数值与温度计的值和测试点的值。
整体测试结果如表1所示。
五、测试数据及实验结果
5.1 测试数据
按照前述的测试方法,取得到测试结果如表1所示。
如表1 数码显示与测试点电压随温度变化的关系
温度值(摄氏度)数码管显示值测试点电压值(V)
5.2 测试结果分析
根据上述测试结果,此系统的设计基本取得成功。
智能体温计在测试温度方面有一定的成效,测试误差较小,显示的误差与实际的温度值误差在内,在功能上达到了赛题的要求。
六、总结和体会
本课程设计叙述了智能温度计的设计,包括硬件组成和软件的设计,该系统在硬件设计上主要是通过温度传感器对温度进行采集,把温度转换成变化的电压,然后由放大器将信号放大,通过A/D转换器,MC14433将模拟温度电压信号转化为对应的数字温度信号电压。
其硬件设计中最核心的器件是单片机89C51,它一方面控制A/D转换器实现模拟信号到数字信号的转换,另一方面,将采集到的数字温度电压值经计算机处理得到相应的温度值,送到LED显示器,以数字形式显示测量的温度。
整个系统的软件编程就是通过汇编语言对单片机MT89C51实
现其控制功能。
整个系统结构紧凑,简单可靠,操作灵活,功能强大,性能价格比高,较好的满足了现代农业生产和科研的需要。
通过本次的设计,参考了大量的资料,让我认识到了单片机功能的强大,让我学到了很多,受益匪浅!
七、参考文献
1. 李朝青《PC机及单片机数据通信技术》》 [M] 北京航空航天大学出版社,2000
2. 何立民《单片机应用技术选编》[M] 北京航空航天大学出版社,1993
3. 周明德《微型计算机硬件软件及其应用》[M] 清华大学出版社。
1980
4. 金伟正.《单线数字温度传感器的原理与应用》[J].电子技术应用2000(6):66~68.
5. 李广弟.《单片机基础》[M].北京航空大学出版社.1994年6月
6. 何立民。
单片机应用系统设计——系统配置与接口技术. 北京:北京航空航天大学出版社。
1995
7. 马明建. 数据采集与处理技术。
西安:西安交通大学出版社. 1997
单片机智能电子温度计设计(电路图+原理图+源代码)
单片机1
/**********************************************
Project Name : 智能体温计程序_主机
**********************************************/
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis_code[10]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8,0x80,0x90}; // 4, 5, 6, 7, 8, 9, off
uchar data set_data[3]={0x00,0x07,0x03}; //预设度
uchar data ad_data; //AD转换结果
uchar data dis_buf[3]={0x00,0x00,0x00}; // 显示缓冲区
uchar data bcd_buf[3]={0x00,0x00,0x00}; //十进制BCD码转换存放区
uchar data TIMER0_NUM;
bit TIMER0_flag;
bit data set_flag=0;
sbit ALE=P2^4;
sbit OE=P2^5;
sbit START=P2^6;
sbit EOC=P2^7;
sbit P30=P3^0;
sbit select0=P3^7;
sbit select1=P3^6;
sbit select2=P3^5;
sbit K1=P2^0;
sbit K2=P2^1;
sbit K3=P2^2;
sbit K4=P2^3;
sbit bep=P3^3;
sbit SET_IND=P3^4;
sbit P17=P1^7; //小数点
uint data temp;
/**********************************************/ /*函数声明
/**********************************************/ void delay1ms(uchar t);
void adc(void);
void BCD(void);
void keyscan(void);
void send_str(void);
void beep(void);
void display(void);
/**********************************************/ /*按键蜂鸣函数
/**********************************************/ void beep2(void)
{
uchar data j,k;
for(j=26;j>0;j--)
{
for(k=254;k>0;k--);
bep=!bep;
}
bep=1;
}
/**********************************************/ /*蜂鸣报警
/**********************************************/ void beep(void)
{
uchar data j,k;
for(j=100;j>0;j--)
{
for(k=254;k>0;k--)
bep=0;
}
bep=1; //关蜂鸣器
}
/**********************************************/ /*延时1ms函数
/**********************************************/ void delay1ms(uchar t)
{
uchar j,k;
for(j=0;j<t;j++)
for(k=0;k<120;k++);
}
/**********************************************/ /*AD转换函数
/**********************************************/ void adc(void)
{
ALE=1;
_nop_();
_nop_();
ALE=0;
_nop_();
while(EOC==0); //等待转换结束
OE=1;
ad_data=P0; //读入转换数据
OE=0;
}
/**********************************************/ /*十进制BCD码转换函数
/**********************************************/ void BCD(void)
{
bcd_buf[2]=(ad_data/51); //十位
temp=(ad_data%51);
te=(temp%51);
temp=temp*10;
bcd_buf[0]=(temp/51); //小数位
if(bcd_buf[2]>set_data[2]) //报警值检测
beep();
else if(bcd_buf[2]==set_data[2])
{
if(bcd_buf[1]>set_data[1])
beep();
else if(bcd_buf[1]==set_data[1])
{
if(bcd_buf[0]>set_data[0])
beep();
单片机智能电子温度计设计(电路图+原理图+源代码) /**********************************************/ /*键盘扫描函数
/**********************************************/ void keyscan(void)
{
uchar data m;
if(K1==0) //K1设置键
{
for(m=0;m<100;m++) //延时11ms
display();
if(K1==0)
{
beep2(); //按键时响一声
set_flag=!set_flag; //设置标志位取反
}
}
if(set_flag==1) //若设置键按下,则检测K2-K4 {
SET_IND=0; //设置灯亮
if(K2==0) //K2:十位加1
{
for(m=0;m<100;m++) //延时11ms
display();
if(K2==0)
{
beep2(); //按键时响一声
set_data[2]++;
if(set_data[2]==5) set_data[2]=0;
}
}
if(K3==0) //K3:个位加1
{
for(m=0;m<100;m++) //延时11ms
display();
if(K3==0)
{
beep2(); //按键时响一声
set_data[1]++;
if(set_data[1]==10) set_data[1]=0;
}
}
if(K4==0) //K4:小数位加1
{
for(m=0;m<100;m++) //延时11ms
display();
if(K4==0)
{
beep2(); //按键时响一声
set_data[0]++;
if(set_data[0]==10) set_data[0]=0;
}
}
}
else SET_IND=1;
}
/**********************************************/
/*显示函数
/**********************************************/
void display(void)
{
if(set_flag) //设置键按下,则显示设置的数值 {
dis_buf[0]=set_data[0];
dis_buf[1]=set_data[1];
dis_buf[2]=set_data[2];
}
else
{ //否则显示温度值
dis_buf[0]=bcd_buf[0];
dis_buf[1]=bcd_buf[1];
dis_buf[2]=bcd_buf[2];
}
P1 = 0xff; // 先关闭所有数码管
P1 = dis_code[dis_buf[0]]; // 小数显示代码传送到P1口
select2=1;select1=1;select0=0; // 位选
delay1ms(1); //延时1ms
P1 = dis_code[dis_buf[1]]; // 个位显示代码传送到P1口
select2=1;
select1=0;select0=1;
P17=0;
delay1ms(1); //延时1ms
P1 = dis_code[dis_buf[2]]; // 十位显示代码传送到P1口
select2=0;select1=1;select0=1;
delay1ms(1); //延时1ms
}
/**********************************************/
/*串口发送一个字符函数
/**********************************************/
void send_str(void)
{
SBUF = ad_data; //串口发送AD转换温度值
while(TI==0); // 等待数据传送
TI = 0; // 清除数据传送标志
}
/**********************************************/
/*主函数
/**********************************************/
void main(void)
{
TMOD = 0x21; // 定时器1工作于方式2,8位自动重载模式, 用于产生波特率
// 定时器0工作于方式1,产生1s的AD间隔时间
TH0=15536/256; //T0定时50ms
TL0=15536%256;
TH1 = 0xe1; // 波特率1000
TL1 = 0xe1;
SCON = 0x50; // 设定串行口工作方式1
PCON = 0x00; // 波特率不倍增
TI=0; //清除发送中断标志
// 启动T1
TR0 = 1; //启动T0
while(1)
{
display();
keyscan();
if(TIMER0_flag)
{
TIMER0_flag=0;
adc();
BCD();
send_str();
}
}
}
/**********************************************/
/*T0中断服务程序
/*每秒钟ADC一次,串口发送一次
/**********************************************/
void timer0(void) interrupt 1
{
TH0=15536/256; //重装初值
TL0=15536%256;
TIMER0_NUM++;
if(TIMER0_NUM==20)
{
TIMER0_NUM=0;
TIMER0_flag=1;
}
}
时间的程序:
ORG 0000H
AJMP MAIN ;转到系统初始化程序
ORG 000BH
AJMP PITO ;转到定时器0中断服务程序
ORG 0100H
MAIN: MOV SP, #60H ;确立堆栈区
MOV TMOD, #01H ;设定定时器0为工作方式1 MOV TL0, #0DCH ;装计数器初值
MOV TH0, #0BH
CLR TR0H ;TR0置“0”,定时关闭
SETB EAH ;EA置“1”,中断总允许
SETB ET0H ;ET0置“1”,定时器0中断
允许
MOV 30H, #10H ;循环次数。