#include<reg51.h>
int x=10;
int y=12;
sbit b=P1^0;
sbit a=P1^1;
void main()
{
IT0=1;
EA=1; //开总中断允许位
EX0=1;
IT1=1;
EX1=1;
while(1); //达到循环
}
void int_0() interrupt 0
{
x++;
if(x%2==0) // 除二取余数
{
b=1;
}
else
{
b=0;
}
}
void int_1() interrupt 2
{
y++;
if(y%2==0)
{
a=1;
}
else
{
a=0;
}
}
用PROTEUS仿真的结果如下图所示由于开始时候并没有外部中断所以两个灯都为亮。
图 3-4 没有产生中断前的仿真图
当外部中断0中断一次后:由于外部中断0中断一次导致x%2==0不成立,所以与之对应的灯灭,如果在次产生外部中断0,将会使其对应的灯从新亮起来。
图3-5 产生一次外部中断0的仿真图
由于仪器工作环境的不确定性,因为我们可以看出当环境改变后温湿度控制仪的局限性。因此我们给定的额定的参量值随着要求而会发生改变。因此我们通过中断功能来改进该温湿度控制仪,使其额定参量可以改变,这样使得该仪器更加的人性化并且使用范围更加广阔。
3.6 软硬件结合
将在UV2中新建一个工程,并且在工程中分为两个程序,分别为51_DHT21.C(附录4)和1602LCD.H(附录5)如图所示,1602LCD.H的作用就是方便51_DHT21调用LCD的初始化和温湿度显示。将单片机与DHT21芯片连接,并且将该工程里面的项目用软件烧进芯片AT89C51里面去.这样一旦将程序烧进去后我们那只需要给单片机供上电就能使其开始工作。但是如果我们改变程序时候我们需要将写好的程序重新烧写进去。其实物图,和程序图参见附录。
图3-6 工程目录
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>