温湿度传感器 sht11 仿真程序 sbit out =P3^0; //加热口 //sbit input =P1^1;//检测口 //sbit speek =P2^0;//报警 sbit clo =P3^7;//时钟 sbit ST =P3^5;//开始 sbit EOC =P3^6;//成功信号 sbit gwei =P3^4;//个位 sbit swei =P3^3;//十位 sbit bwei =P3^2;//百位 sbit qwei =P3^1;//千位 sbit speak =P0^0;//报警音 sbit bjled =P0^1;//报警灯 sbit zcled =P0^2;//正常LED int count; uchar xianzhi;//取转换结果 uchar seth;//高时间 uchar setl;//低时间 uchar seth_mi;//高时间 uchar setl_mi;//低时间 bit hlbz;//高低标志 bit clbz; bit spbz; ///定时中断程序/// void t0 (void) interrupt 1 using 0 { TH0=(65536-200)/256;//5ms*200=1000ms=1s TL0=(65536-200)%256; clo=!clo;//产生时钟 if(count>5000) { if(hlbz) { if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;} else seth_mi--; } if(!hlbz) { if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;} else setl_mi--; } count=0; } else count++; } ///////////// ///////延时/////// delay(int i) { while(--i); } ///////显示处理/////// xianshi() { int abcd=0; int i; for (i=0;i<5;i++) { abcd=xianzhi; gwei=1; swei=1; bwei=1; qwei=1; P1=dispcode[abcd/1000]; qwei=0; delay(70); qwei=1; abcd=abcd%1000; P1=dispcode[abcd/100]; bwei=0; delay(70); bwei=1; abcd=abcd%100; P1=dispcode[abcd/10]; swei=0; delay(70); swei=1; abcd=abcd%10; P1=dispcode[abcd]; gwei=0; delay(70); gwei=1; } } doing() { if(xianzhi>100) {bjled=0;speak=1;zcled=1;} else {bjled=1;speak=0;zcled=0;} } void main(void) { seth=60;//h60秒 setl=90;//l90秒 seth_mi=60;//h60秒 setl_mi=90;//l90秒 TMOD=0X01;//定时0 16位工作模式 TH0=(65536-200)/256; TL0=(65536-200)%256; TR0=1; //开始计时 ET0=1; //开定时0中断 EA=1; //开全中断 while(1) { ST=0; _nop_(); ST=1; _nop_(); ST=0; // EOC=0; xianshi(); while(!EOC) { xianshi(); } xianzhi=P2; xianshi(); doing(); } }
上传时间: 2013-11-07
上传用户:我们的船长
温湿度传感器 sht11 仿真程序 sbit out =P3^0; //加热口 //sbit input =P1^1;//检测口 //sbit speek =P2^0;//报警 sbit clo =P3^7;//时钟 sbit ST =P3^5;//开始 sbit EOC =P3^6;//成功信号 sbit gwei =P3^4;//个位 sbit swei =P3^3;//十位 sbit bwei =P3^2;//百位 sbit qwei =P3^1;//千位 sbit speak =P0^0;//报警音 sbit bjled =P0^1;//报警灯 sbit zcled =P0^2;//正常LED int count; uchar xianzhi;//取转换结果 uchar seth;//高时间 uchar setl;//低时间 uchar seth_mi;//高时间 uchar setl_mi;//低时间 bit hlbz;//高低标志 bit clbz; bit spbz; ///定时中断程序/// void t0 (void) interrupt 1 using 0 { TH0=(65536-200)/256;//5ms*200=1000ms=1s TL0=(65536-200)%256; clo=!clo;//产生时钟 if(count>5000) { if(hlbz) { if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;} else seth_mi--; } if(!hlbz) { if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;} else setl_mi--; } count=0; } else count++; } ///////////// ///////延时/////// delay(int i) { while(--i); } ///////显示处理/////// xianshi() { int abcd=0; int i; for (i=0;i<5;i++) { abcd=xianzhi; gwei=1; swei=1; bwei=1; qwei=1; P1=dispcode[abcd/1000]; qwei=0; delay(70); qwei=1; abcd=abcd%1000; P1=dispcode[abcd/100]; bwei=0; delay(70); bwei=1; abcd=abcd%100; P1=dispcode[abcd/10]; swei=0; delay(70); swei=1; abcd=abcd%10; P1=dispcode[abcd]; gwei=0; delay(70); gwei=1; } } doing() { if(xianzhi>100) {bjled=0;speak=1;zcled=1;} else {bjled=1;speak=0;zcled=0;} } void main(void) { seth=60;//h60秒 setl=90;//l90秒 seth_mi=60;//h60秒 setl_mi=90;//l90秒 TMOD=0X01;//定时0 16位工作模式 TH0=(65536-200)/256; TL0=(65536-200)%256; TR0=1; //开始计时 ET0=1; //开定时0中断 EA=1; //开全中断 while(1) { ST=0; _nop_(); ST=1; _nop_(); ST=0; // EOC=0; xianshi(); while(!EOC) { xianshi(); } xianzhi=P2; xianshi(); doing(); } }
上传时间: 2013-10-16
上传用户:黄蛋的蛋黄
1,消除按键的抖动问题 因为按键在闭合或断开过程中出现一段抖动期,主要由于按键的不稳定性引起的,这时会呈现一串页脉冲,时间的长短和开关的机械特性有关。一般在5ms~10ms之间。为保证CPU对键的一次闭合作一次处理,必须去抖动。在键的稳定闭合或断开时读键的状态。 2,据EICE51原理图编写并调试一个键输入子程序,其功能为判断键盘上有无键输入,若有键入,作去抖动处理后,计算输入键的键号送累加器A。
标签:
上传时间: 2015-03-22
上传用户:qweqweqwe
/*红外解码的方法 NEC格式 upd6121 1、9Ms的高电平启动头,然后是4.5ms的低电平,如果2.25ms时就有高电平,是持续信号,不处理 2、然后以一个高电平和一个低电平为1Bit,高电平时间是0.5625ms=562us, 高低电平时间比为1:1时是Bit1,比为1:3时是Bit0 3、Timer1中断执行100us采样周期,9Ms=90,4.5ms=45,高电平=5,低电平最多15 4、共读入4Byte共24bit,第1、2Byte是CustomCode码和其反码,第3、4Byte是DataCode和其反码 5、CustomCode正确和DataCode效验正确的话,执行 6、红外接收器输出是反相的
上传时间: 2013-12-03
上传用户:15071087253
实现功能: 1.使用T0中断,对LED进行2ms一次的动态扫描 2.使用T1中断,0.5ms一次作Beep的驱动 3.实现时钟的功能 4.实现UART的中断发送功能 5.用两个按键调整时钟,有去抖动能力,一个为调整设置键,另一个为加一键 6.调整时钟时,按键有BEEP提示,且LED有闪动提示,无按键10秒后自动恢复正常显示
标签: 中断
上传时间: 2013-12-11
上传用户:康郎
舵机控制程序,舵机的控制信号为周期是20ms的PWM信号,其中高电平持续时间0.5到2.5ms。
上传时间: 2015-11-17
上传用户:小眼睛LSL
/* 程序详细功能介绍: * 用AT89S51单片机产生“嘀、嘀、…”报警声从P3.2端口输出,产生频率为1KHz, * 1KHZ方波从P3.2输出0.2秒,接着0.2秒从P3.2输出电平信号,如此循环下去,就形成我们所需的报警声了。 * * 程序设计方法 *(1.生活中我们常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声, * 但对于这种报警声,嘀0.2秒钟,然后断0.2秒钟,如此循环下去,假设嘀声的频率为1KHz, * 由于要产生上面的信号,我们把上面的信号分成两部分,一部分为1KHZ方波, * 占用时间为0.2秒;另一部分为电平,也是占用0.2秒;因此,我们利用单片机的定时/计数器T0作为定时, * 可以定时0.2秒;同时,也要用单片机产生1KHZ的方波,对于1KHZ的方波信号周期为1ms, * 高电平占用0.5ms,低电平占用0.5ms,因此也采用定时器T0来完成0.5ms的定时; * 最后,可以选定定时/计数器T0的定时时间为0.5ms,而要定时0.2秒则是0.5ms的400倍, * 也就是说以0.5ms定时400次就达到0.2秒的定时时间了。 */
上传时间: 2015-11-27
上传用户:kiklkook
红外解码的方法 NEC格式 upd6121 1、9Ms的高电平启动头,然后是4.5ms的低电平,如果2.25ms时就有高电平,是持续信号,不处理 2、然后以一个高电平和一个低电平为1Bit,高电平时间是0.5625ms=562us, 高低电平时间比为1:1时是Bit1,比为1:3时是Bit0 3、Timer1中断执行100us采样周期,9Ms=90,4.5ms=45,高电平=5,低电平最多15 4、共读入4Byte共24bit,第1、2Byte是CustomCode码和其反码,第3、4Byte是DataCode和其反码 5、CustomCode正确和DataCode效验正确的话,执行 6、红外接收器输出是反相的
上传时间: 2016-02-05
上传用户:啊飒飒大师的
一个无线接收子程序,它接收一个2mS高2mS低电平起始位,16位地址(1.5ms高电平加0.5ms低电平为0,0.5ms高电平加1.5ms低电平为1),8位数据位,8位前面三个字节相加的校验位。
上传时间: 2014-05-27
上传用户:nairui21
采用c8051f020单片机接受数据,解码(将0,1识别),由于发射端的数据为5ms每次,本程序也采用单片机集成比较器5ms检测一次,识别出起始位,数据位,并显示。
上传时间: 2016-06-10
上传用户:15071087253