
可以在点亮LED语句之后加入死循环 while(1);
主程序里语句不要在大循环 while(1){} 里循环执行,在闪烁后加入死循环 while(1);,让程序停在这里就可以了;
闪烁语句后直接LED相应位置1,就可以保持常亮了。
#include <reg51h>
void delayms(int xms)
{
char i=0;
for(;xms>0;xms--)
for(i=0;i<110;i++)
;
}
main(void)
{
while(1)
{
P1=0xaa;
delayms(1000);
P1=0x55;
delayms(1000);
}
}
1,16位色有好几种规格。比如RGB565 556等,是不是搞错了?可以通过显示几种纯色判断一下;
2,我觉得是转换规则算法的问题,转换之后不能适配你的屏;
3,4,我觉得都印证了以上一点,打开转换后的数据仔细分析一下,换一种算法看看。可以推荐你看一下ucGUI颜色转换部分的代码
收/发一个数据会了,那收/多个的方法也相同。接收最好用中断方式,不影响其它程序执行。发送时,采用查询方式比较方便好写。发送多个,可用for循环控制,循环体内就是发送一个数据的程序,只是循环发送了。在循环发送前,把串口中断关了,ES=0;发送结束再打开中断,ES=1;
可以的,你可以用三菱PLC的专用协议配合STC程序通过串口通讯。或用自由协议,自由协议比较复杂,但STC那边实现起来比较简单直接用串口按规则把电位器的值发送出来,在PLC这边写程序接收解析,PLC这边比较复杂,需要一定的编程功底。
具体的PLC专用协议,自由协议参考你可以去三菱官网下载电子档说明书,以上2种协议我都成功应用在设备上。
(需要外扩通讯板。)
优缺点:PLC专用协议STC那边需要遵守PLC固定的数据格式比如0530304646(WW指令)相对PLC那边就简单的多,因为数据直接写到了指定的寄存器内(如D,M等),可以直接使用。
PLC自由协议STC按照普通的串口发送数据方式按自己固定的格式将AD数据发送,PLC这边程序比较复杂,需要理解PLC的自由协议写法(如RS指令)并利用一定的算法将数据还原并保存到寄存器内。
以上就是关于stc51控制一个LED1闪烁5s后常亮怎么写程序啊,求大神全部的内容,包括:stc51控制一个LED1闪烁5s后常亮怎么写程序啊,求大神、需要一个STC89C54RD+的C语言编程程序,要求能实现8个LED灯 1357与2468交替亮、关于STC51单片机对3.2寸彩屏的驱动疑问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)