c语言继电器函数 编程继电器设置视频

求用C语言让单片机控制继电器只吸合5次的代码 或方法 。简单的循环就能实现但要有点技巧:例如,设P1.0口低电平经4.7K电阻控制S8550三极管驱动5V继电器;
*****//头文件声明
unsigned char t;//设一个标志变量
sbitjc=P1^0;
void delay(uchar p)
{****}//写一个延时函数
main()
{
t=0;
jc=1;
while(1)
{
unsigned charn;
if(t==0)
{
for(n=0;n5;n)
{
jc=0;
delay(?);
jc=1;
delay(?);
}
t=1;
}}}
假如没有t标志的介入 , 它在主循环下永远循环,就不可能只动5次,想必你遇到的就是这个问题,依上诉程序运行后每次上电复位(或RST引脚开关复位)就只动作5次,记得调试时延时时间长些,延时成功后再按需要的间隔时间缩短,开始时可以只在I/O口上经470Ω电阻接一个红色LED发光管进行演示,实际控制继电器时通断间隔不能过短,否则会烧线圈的 。
求STC89c52单片机用倒计时控制继电器开、合的C语言程序 , 晶振12.000这是数字时钟的C程序,如果要实现对继电器的开关控制,就可以在主程序中加入对时间的控制 。也就是说 , 在你定义的某个时间上,继电器会实现开或者合的状态!由于单片机对数码管的控制引脚有别,程序还得自己加以修改 。
#includereg52.h
//#includeabsacc.h
#define uchar unsigned char
#define uintunsigned int
uchar code table[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xd8,
0x80,0x90};//数字显示
sbit duan=P2^1;//段选定义
sbit wei=P2^2;//位选定义
sbit k1=P3^2;//选择 秒/分/时 调试定义
sbit k2=P3^3;//增减调试定义
/*定义初始化变量*/
uchar miao=0;
uchar fen=0;
uchar shi=0;
uchar mst=0;//标准化时间
uchar key=0;
void display();//显示子程序
void delay(uchar z);
void time_pro();
void keyscan();
main()
{
mst=0;
miao=0;
TMOD=0x01;//time0为定时器,选择方式1
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
EA=1;
ET0=1;
TR0=1;
wei=1;
P0=0x3f;
wei=0;
duan=1;
P0=table[0];
duan=0;
P1=0x55;//点亮流水灯
while(1)
{
display();
time_pro();
if(k1==0) keyscan();
//继电器开合控制加在此处:时间可以根据自己的需求任意定义
//例如:if(shi==17fen==21miao==52)
{
jidianqi=0;//0就表示继电器关闭
}
if(shi==23fen==57miao==34)
{
jidianqi=1;//1就表示继电器开启
}
}
}
/*显示子程序*/
void display()
{
wei=1;
P0=0x01;
wei=0;
P0=0xff;//清屏
duan=1;
P0=table[miao];//显示秒钟的个位
duan=0;
delay(1);
wei=1;
P0=0x02;
wei=0;
P0=0xff;
duan=1;
P0=table[miao/10];//显示秒钟的十位
duan=0;
delay(1);
wei=1;
P0=0x04;
wei=0;
P0=0xff;
duan=1;
P0=table[fen];//显示分钟的个位
duan=0;
delay(1);
wei=1;
P0=0x08;
wei=0;
P0=0xff;
duan=1;
P0=table[fen/10];//显示分钟的十位
duan=0;
delay(1);
wei=1;
P0=0x10;
wei=0;
P0=0xff;
duan=1;
P0=table[shi];//显示小时的个位
duan=0;
delay(1);
wei=1;
P0=0x20;
wei=0;
P0=0xff;
duan=1;
P0=table[shi/10];//显示小时的十位
duan=0;
delay(1);
}
/*延时子程序*/
void delay(uchar z)
{
uchar x,y;
for(x=0;x=z;x)
for(y=0;y=107;y);
}
/*时间处理子程序*/
void time_pro()
{
if(miao=60)
{miao=0;
fen;
if(fen=60)
{
fen=0;
shi;
if(shi=24)
shi=0;
}
}
}
/*键盘扫描子程序*/
void keyscan()
{
//第一次检测 k1 按键
while(!key)
{
display();P1=~P1;
while(k1==0)
{
delay(1);
if(k1==0)
key=0;
key=1;
}
}
key=0;
//第一次检测 k2 按键
while(!key)
{
display();P1=~P1;
while(k2==0)
{
delay(220);
if(k2==0)
{ key=0;
miao;
if(miao=60) miao=0;
display();
delay(220);
}
key=1;
}
}
key=0;
//第二次检测 k1 按键
while(!key)
{
display();P1=0x55;
while(k1==0)
{
delay(220);
if(k1==0)
{
key=0;
display();
P1=~P1;
}
key=1;
}
}
key=0;
//第二次检测 k2 按键
while(!key)
{
display();P1=~P1;
while(k2==0)
{
delay(220);
if(k2==0)
{ key=0;
fen;
if(fen=60) fen=0;
display();
delay(220);
}
key=1;
}
}
key=0;
//第三次检测 k1 按键
while(!key)
{
display();P1=~0x55;
while(k1==0)
{
delay(220);
if(k1==0)
{
key=0;
P1=~P1;
display();
}
key=1;
}
}
key=0;
//第三次检测 k2 按键
while(!key)
{
display();P1=~P1;
while(k2==0)
{
delay(220);
if(k2==0)
{ key=0;
shi;
if(shi=24) shi=0;
display();
delay(220);
}
key=1;
}
}
}
/*中断延时子程序*/
void time() interrupt 1 //定时器0方式1,50ms中断一次
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
mst;
if(mst==20)
{
mst=0;//记数机器清零
P1=~P1;
miao;
time_pro();
}
}
51单片机如何用C语言控制继电器??①继电器属于电平控制类型的输出设备 , 单片机可以通过 IO 电平输出去控制继电器 。但继电器的工作电流(线圈端)相对单片机来讲,比较大,多数都超出单片机限制电流总和,所以一般都需要通过驱动电路去控制继电器(如使用:NPN三极管、达林顿管(ULN2003)等) 。
②多数继电器的电压都高于单片机的电压,单片机的输出无法与 继电器的 电平逻辑匹配,这也需要驱动电路进行转换(如上述例子)
③继电器还有不同种类,如交流/直流继电器、固态继电器等 , 上面的描述,都是针对常用 的 直流继电器说明的 。
求大神,STM32F103VF芯片控制8位继电器的C语言程序,加注释,加高分#include
"sys.h"
/*不用函数,宏即能完美完成驱动输出 。
使用Pb
0-7
口控制继电器*/
#define
RelayOn(A)
PBout(A)=1
//打开
#define
RelayOff(A)
PBout(A)=0
//关闭
void
【c语言继电器函数 编程继电器设置视频】main(void)
{
int
i;
for(i=0;
i8;
i)
//从1到8分别开、关
{
RelayOn(i);
//DelayMs(1000)
;
RelayOff(i);
//DelayMs(1000)
;
}
}
使用光耦也要考虑IO本身的驱动能力
关于c语言继电器函数和编程继电器设置视频的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读