仪器网(yiqi.com)欢迎您!

| 注册2 登录
网站首页-资讯-专题- 微头条-话题-产品- 品牌库-搜索-供应商- 展会-招标-采购- 社区-知识-技术-资料库-方案-产品库- 视频

问答社区

51单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。

花半开最美Y 2015-05-16 17:46:11 450  浏览
  • #include #include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定时器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; ... #include #include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定时器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; } void time0_server_(void)interrupt 1 { TH0=0x4C;TL0=0x00; t++; } void main() { Init_t0(); a=0;// b=0;// c=0;// d=0;// t = 0; EA = 1; while(1) //循环 { switch(t) { case 0: a = 1; b = c = d = 0; break; case 40: b = 1; a = c = d = 0; break; case 80: c = 1; a = b = d = 0; break; case 120: d = 1; a = b = c = 0; break; case 160: t=0; break; default: break; } } } 展开

参与评论

全部评论(2条)

  • 初心暖哭i 2015-05-17 00:00:00
    需要给你写吗

    赞(20)

    回复(0)

    评论

  • 新航星洗涤设备 2017-09-27 12:16:13
    #include<reg52.h> #include <intrins.h> #define uint unsigned int sbit a=P1^4;//a继电器控制端 sbit b=P2^3;//b继电器控制端 sbit c=P2^5;//c继电器控制端 sbit d=P2^7;//d继电器控制端 uint t; void Init_t0(void) //定时器初始化 { TMOD=0x01; //定时器0工作于方式1,16位定时器 TH0=0x4C;TL0=0x00; //定时时间50ms ET0=1; //允许定时器0中断 TR0=1; //定时器0启动 } void time0_server_(void)interrupt 1 //定时器0中断函数 { TH0=0x4C;TL0=0x00; //定时时间50ms t++; //t每50ms加1 } void main() //主函数 { Init_t0(); a=0; //初始化,所有继电器释放 b=0;// c=0;// d=0;// t = 0; //计时器从0开始计时 EA = 1; //开启总中断 while(1) //循环 { switch(t) //以t为参数的分支程序,t每50ms加1 { case 0: //如果t=0(Z初2秒),继电器a吸合,其他释放 a = 1; b = c = d = 0; break; case 40: //如果t=40(第二个2秒),继电器b吸合,其他释放 b = 1; a = c = d = 0; break; case 80: //如果t=80(第三个2秒),继电器c吸合,其他释放 c = 1; a = b = d = 0; break; case 120: //如果t=120(第四个2秒),继电器d吸合,其他释放 d = 1; a = b = c = 0; break; case 160: //如果t=160(第四个2秒结束),t=0,重复Z初2秒情况 t=0; break; default: //如果t与上述数字都不想等,啥也不做,免得干扰继电器状态 break; } } }

    赞(10)

    回复(0)

    评论

热门问答

51单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。
#include #include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定时器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; ... #include #include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定时器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; } void time0_server_(void)interrupt 1 { TH0=0x4C;TL0=0x00; t++; } void main() { Init_t0(); a=0;// b=0;// c=0;// d=0;// t = 0; EA = 1; while(1) //循环 { switch(t) { case 0: a = 1; b = c = d = 0; break; case 40: b = 1; a = c = d = 0; break; case 80: c = 1; a = b = d = 0; break; case 120: d = 1; a = b = c = 0; break; case 160: t=0; break; default: break; } } } 展开
2015-05-16 17:46:11 450 2
汇编语言 51单片机 器程序
 
2017-04-19 08:39:13 389 1
51单片机信号发生器的正弦波程序
voidvout_sin(void)//输出正弦波{floatx;//用于正弦波发生器if(Voutsin())//“正弦波按键”被有效按下do{for(x=-3.1415;x<3.1415;x+=0.1)//正弦波发生器{vout=255*(1+sin(x))/2;//输出... void vout_sin(void) //输出正弦波
{ float x; //用于正弦波发生器
if(Voutsin()) //“正弦波按键”被有效按下
do{
for(x=-3.1415;x<3.1415;x+=0.1) //正弦波发生器
{ vout=255*(1+sin(x))/2; //输出值vout必须大于0
P1=vout;
delay_out();
} } while(P3_0==1&P3_1==1&P3_2==1&P3_4==1) } 此段程序中do{}内的内容不是很理解,希望好心网友帮忙解释一下,财富值不是很多,谢谢了。 展开
2013-04-02 06:51:20 550 3
51单片机制作简易数字频率计程序
 
2010-12-09 18:27:45 250 1
温度控制51单片机,DS1820温度传感器的程序
只要一小段,温度加热时候的程序,我要用Keil和proteus编程仿真的,加热到40,60,80的时候分别需要恒定温度一段时间后,在继续加热....... 只要一小段,温度加热时候的程序,我要用Keil 和 proteus 编程仿真的,加热到40,60,80 的时候分别需要恒定温度一段时间后,在继续加热.... 展开
2014-11-16 03:23:05 335 2
51单片机频率计的中断程序怎么设计
有一个信号由200hz的NRZ码控制输出两个频率不同的方波(1600,800)。现在要还原,如果检测到1600则p3.5输出高电平,800则输出低电平。我的设想是定时一个5ms的中断,对输入的方波电平0→1进行计数。计数值大于(8+4)/2=6的话输出1,小于输出0。请问这样可以... 有一个信号由200hz的NRZ码控制输出两个频率不同的方波(1600,800)。现在要还原,如果检测到1600则p3.5输出高电平,800则输出低电平。我的设想是定时一个5ms的中断,对输入的方波电平0→1进行计数。计数值大于(8+4)/2=6的话输出1,小于输出0。请问这样可以吗?对于定时器计时器还有中断的使用不大明白,可否简略写下程序。谢谢 展开
2015-05-26 01:56:14 509 1
51单片机温度控制系统的C语言程序
设计基于单片计算机的温度控制器。用于控制电加热炉的温度。具体要求如下1.温度连续可调,范围为30℃~150℃2.超调量σ%≤20%3.温度误差≤±0.5℃4.人-机对话方便5.控制算法采用PID或改... 设计基于单片计算机的温度控制器。用于控制电加热炉的温度。具体要求如下 1. 温度连续可调,范围为30℃~150℃ 2. 超调量σ%≤20% 3. 温度误差≤±0.5℃ 4. 人-机对话方便 5. 控制算法采用PID或改进的PID或其他算法 .请发至3166109374@qq.com 谢谢帮忙 具体见http://wenku.baidu.com/view/e0feacf0f121dd36a22d822c 展开
2015-06-07 00:06:30 478 3
基于51单片机,ADC0804,光敏电阻,湿度传感器,求程序!!!!
我用的51单片机,采集光强度和空气湿度,利用了两个ADC0804进行转换(光敏电阻和电阻式湿度传感器),但是没有相应程序,哪位大哥能帮忙弄一个程序啊?如果是可行的程序,我账号里剩下... 我用的51单片机,采集光强度和空气湿度,利用了两个ADC0804进行转换(光敏电阻和电阻式湿度传感器),但是没有相应程序,哪位大哥能帮忙弄一个程序啊?如果是可行的程序,我账号里剩下的分全给你,虽然不多... 展开
2011-06-01 01:20:26 320 4
基于51单片机用LCD1602液晶显示的频率计程序
求程序——————
2013-04-23 19:11:42 359 1
求一个51单片机控制的温度计显示程序
stc98c51控制2个4位数码管,温度传感器为DS18B20。数码管的a,b,c,d,e,f,g,dp端接在P0口... stc98c51控制2个4位数码管,温度传感器为DS18B20。数码管的a,b,c,d,e,f,g,dp端接在P0口 展开
2012-05-03 04:58:40 419 2
单片机通过温湿度传感器DHT11输入数据控制继电器通断的程序
本人课程设计需要由单片机控制电路,单片机通过DHT11温湿度传感器读取温度数据,然后与设定的温度进行比较之后控制继电器的通断。设定的温度是20~23,23~26,26~29,控制的继电器是3个... 本人课程设计需要由单片机控制电路,单片机通过DHT11温湿度传感器读取温度数据,然后与设定的温度进行比较之后控制继电器的通断。设定的温度是20~23,23~26,26~29,控制的继电器是3个。当读取的温度达到设定值时其中一个继电器吸合,达到另一个温度区间时该温度对应的继电器吸合,其他的都处于断开状态。本人苦逼不会写程序,求各位大神帮个忙。急用谢谢了。 展开
2015-04-29 08:57:33 547 4
谁能帮忙写一下用霍尔传感器和51单片机测量电机转速的程序和接线图
 
2016-04-14 17:07:35 315 1
请问有谁写过htu21d温湿度传感器的51单片机 c程序吗,求参考一下
 
2018-11-14 00:47:32 266 0
小白鼠排队 (希望大神用c++编写这个程序)
小白鼠排队(希望大神用c++编写这个程序)小白鼠排队N只小白鼠(1
2017-02-24 00:45:58 640 1
GP2Y1010AU0F检测灰尘粉尘传感器和51单片机连的程序
 
2015-03-09 13:11:10 475 3
这个51单片机HC-SR04超声波测距程序哪里错了
//晶振11.0592MHz #include #define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TI... //晶振11.0592MHz #include #define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TIM1init(void)//定时器1初始化 { TMOD=0x22;//定时器1工作方式2,TH1是重装值,TL1是初值 TH1=0xd2; //重载值 溢出一次约50us TL1=0xd2; //初始化值 ET1=1; //开中断 } void EX1init(void) //外部中断1初始化 { IT1 = 1; //指定外部中断0下降沿触发,INT1 (P3.3) EA = 1; //开总中断 } /*------------------------------------------------ 定时器1中断处理 ------------------------------------------------*/ void tim1_isr (void) interrupt 3 { irtime++; //用于计数2个下降沿之间的时间 } /*------------------------------------------------ 外部中断1中断处理 ------------------------------------------------*/ void EX1_ISR (void) interrupt 2 //外部中断1服务函数 { dis=340*(irtime/2.0)*50/10000; irtime=0; TR1=0; EX1=0; } void test(void) { trig=1; delay_20us(); trig=0; EX1=1; while(!echo); TR1=1; } void main(void) { TIM1init(); EX1init(); while(1) { test(); display(dis); } } 主函数调用test,然后在数码管上显示(显示函数略过),测试的时候,在数码管上显示的距离明显不对,还各种不稳定,有时就个位数上显示一个1或2,不知道怎么回事 展开
2016-01-25 09:17:10 375 2
51单片机超声波模块测厚度程序怎么写?
 
2018-12-03 12:10:19 465 0
基于51单片机的lm393振动传感器的程序怎么加蜂鸣器
 
2017-10-26 10:33:33 338 2
51单片机 测速
当感应到磁性的时候 有高电平,没有感应到磁性的时候是低电平,求两次测到高电平之间时间是多少。 C语言程序怎么写?用霍尔传感器或者是磁性开关
2014-03-20 07:21:32 372 3
求一段汇编程序,利用51单片机控制超声波传感器测距的程序。
 
2012-04-18 20:35:53 290 2

1月突出贡献榜

推荐主页

最新话题