关于stc单片机做LED点亮和灭的时间控制程序问题?

关于stc单片机做LED点亮和灭的时间控制程序问题?,第1张

你可以按照以下步骤编写STC8G1K08芯片的LED点亮和灭的时间控制程序

设卜手置芯片的时钟和计数器,以便实现时间控制。例如,可以使用定时器或延时函数来控制时间。

在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。

在main函数中添加延时函数,以实现上电后30秒后LED灯开始点亮的要求。

下面是一个简单的示例程序,仅供参考:

#include<reg52.h>

sbit LED=P1^0

void delay(unsigned int i)

{

while(i--)

}

void main()

{

unsigned int count=0  //计数器,用于实现30秒的延时

while(count<30000)  //上电后30秒开始执行程序

{

delay(1000)  //每次延时1秒

count+=1000

}

LED=1  //点亮LED

delay(3000)  //LED持续3秒

LED=0  //灭掉LED

while(1)  //芯片不工作

}

在拿弊迹上述程序中,使用了一个计数器来实现上电后30秒的延时,然后LED点亮并持续3秒后灭掉,最后芯片不工作。需要注意的是,示例程序仅供参消并考,具体实现方式需要根据实际情况进行调整和优化。

这顷氏冲个可以有,是51的,用到STC8A8K64S4A12上应该不成问题。

#include <STC89.H>

unsigned char tmp

sbit shebei1=P1^0//定义控制设备的IO口

sbit shebei2=P1^1

sbit shebei3=P1^2

sbit shebei4=P1^3

sbit shebei5=P1^4

sbit shebei6=P1^5

void main()

{

TMOD = 0x20 // 定时器1工作于8位自动重载模式, 用于产生波特率

TH1 = 0xFD // 波特率9600

TL1 = 0xFD

SCON = 0x50 // 设定串行口工作方式

PCON &= 0xef // 波特雀歼率不倍增

TR1 = 1 // 启动定时器1

IE = 0x0 // 禁止任何中断

while(1)

{

if(RI) // 是否有数据到来

{

RI = 0// 清接收标志

tmp = SBUF //核铅 暂存接收到的数据

switch(tmp )

{

case 0x22:shebei1=0break//关设备1

case 0x33:shebei1=1break//开设备1

case 0x44:shebei2=0break

case 0x55:shebei2=1break

case 0x66:shebei3=0break

case 0x77:shebei3=1break

case 0x88:shebei4=0break

case 0x99:shebei4=1break

// case 0xaa:shebei5=0break

// case 0xbb:shebei5=1break

// case 0xcc:shebei6=0break

// case 0xdd:shebei6=1break

case 0x17:shebei5=0break

case 0x18:shebei5=1break

case 0x19:shebei6=0break

case 0x20:shebei6=1break

}

}

}

}

void delayms(unsigned char ms)

// 延时子程序

{

unsigned char i

while(ms--)

{

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

}

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存