台达plc灯亮10秒灭10秒的程序

台达plc灯亮10秒灭10秒的程序,第1张

1、首先通过设置LOGO!PLC的输出点,控制四个彩灯的开关。

2、其次编写LOGO!PLC的程序,设置一个10秒的延时程序,控制第一个彩灯亮10秒后自动熄灭,然后再设置另外一个10秒的延时程序,控制第二个彩灯亮10秒后自动熄灭,以此类推。

3、编写LOGO! PLC的循环程序,让程序可以一直执行,实现四个彩灯交替闪烁的效果。

C语言

#include

#define

uint

unsigned

int

#define

uchar

unsigned

char

sbit

p27=P2^7//数码管位选端定义

uchar

c,i

//数码管译码表

unsigned

char

code

NumDecode[]

=

{

0XC0,//0

0XF9,//1

0XA4,//2

0XB0,//3

0X99,//4

0X92,//5

0X82,//6

0XF8,//7

0X80,//8

0X90,//9

}

void

main()

{

i=0//10秒计时设置

c=0//中断次数计数

p27=1//数码管位选端关闭

TMOD=1//设置定时器0为工作方式1

TH0=(65536-46080)/256//定时50ms高8位求模

TL0=(65536-46080)%256//定时50ms低8位求余

EA=1//开总中断

ET0=1//定时器0中断

TR0=1//启动定时器0

while(1)

{

if(c==20)//50ms中断20次

{

c=0

i++//倒计时总数每秒减1

}

if(i<10)

{

p27=0//数码管位选选通

P0=NumDecode[i]//显示数据

}

else

//循环计时设置

{

i=0

}

}

}

void

timer0()

interrupt

1//定时器0中断入口

{

TH0=(65536-46080)/256//定时器重新赋初值

TL0=(65536-46080)%256

c++//中断次数

}

如果是精确的话,需要用定时器,不是太精确的话,软件延时就可以。

假如12M晶振

void delay10s()

{

int i,j

for(i=0i<10000i++)

for(j=0j<120j++)

}

void delay10s()

{

unsigned char i

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TR0=1

i=200

while(i--)

{

while(TF0==0)

TF0=0

TH0=(65536-50000)/256

TL0=(65536-50000)%256

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11016860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存