wulin 发表于 2020-10-31 21:38 你这个写程序的页面怎么调出来的????? |
买一个学习板,里面全有。 |
wulin 发表于 2020-10-31 21:38 在此谢谢大神的程序修改,让我进一步学习到标志位及计时器的应用,也让我这个程序完美的实现了我想要的功能,再次感谢大神的解答及帮助。 |
心有浮生 发表于 2020-10-31 16:19 原理图及程序都有上传,转向灯信号为每1秒间隔的方波信号,每接收一次高电平信号时LED1-LED4流光一次,当停止3秒没有高电平信号接收后,LED5输出高电平点亮。这样描述的话可不可以实现呀。请指教。 |
wulin 发表于 2020-11-2 13:24 换一种说法:转向灯信号为每1秒间隔的方波信号,每接收一次高电平信号时LED1-LED4流光一次,当停止3秒没有高电平信号接收后,LED5输出高电平点亮。这样描述的话可不可以实现呀。 |
川蜀浪子 发表于 2020-11-2 10:37 我不开车,也不能完全清楚你用术语表述的准确含义。在我看来就是:常态KEY低电平,LED5亮,LED1~4熄。转向(暂态)KEY高电平,LED5熄,LED1~4逐个点亮并保持到恢复常态。如果楼主把电路图发上来,再用普通方式表述可能改后程序更接近需求。毕竟这只是一个非常简单的逻辑关系。对LED5要延时3秒的意义还是不理解。 |
像这样去掉就可以正常转向信号流光。
|
wulin 发表于 2020-10-31 21:38 按大神的代码实际上机做了测试,在接入转向灯信号后流光灯没有实时给随转向信号流光,延时比转长时间后才流光一次,大部份时间是LED5在亮。我试做把LED5及上面的延时去除后,流光可以正常随信号流光。这样的话就没有日行灯的功能了。请问大神这种情况是LED5的延时有问题还是应该更改一下程序呢? |
那是while(1)和do-while(1)之间的区别 |
川蜀浪子 发表于 2020-10-30 16:12 要设置一个触发信号状态标志。
|
最好把原理图放出来,没看明白表达的是什么意思,程序也很乱,楼主整理下吧 |
川蜀浪子 发表于 2020-10-30 16:12 你这程序排下版,方便我们看啊 |
描述的有些没看懂 |
自己先顶一个,不要沉了,那位大神帮看看。#include <STC8.H> #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t typedef unsigned char uint8_t; typedef unsigned int uint16_t; typedef unsigned long uint32_t; /********端口引脚定义*****/ sbit LED5=P3^0; sbit LED2=P3^1; sbit LED3=P3^2; sbit LED4=P3^3; sbit KEY=P5^4; sbit LED1=P5^5; /******延时函数声明******/ void delay(u16 Count); /******主函数区******/ void main(void) { u8 num=0; P3M0=0xFF; //设P3口为推挽输出 P3M1=0x00; RSTCFG=0xef; //设P5.4为IO口 // P5M0=0xef; //设P5.4为准双向口 // P5M1=0xef; P5M0=0x20; //设P5.4为准双向口,P5.5为推挽输出 P5M1=0x00; //P3=0x00; //初始化P3口为低电平 LED1=0,LED2=0,LED3=0,LED4=0; LED5=1; //P5.5为高电平 //KEY=0; while(1) { if(KEY==1) //如P5.4为高电平 { LED5=0; //P5.5输出低电平 delay(290); //P3=0x00; LED1=LED2=LED3=LED4=0; delay(290); LED1=1,LED2=0,LED3=0,LED4=0; delay(290); LED1=1,LED2=1,LED3=0,LED4=0; //LED灯流水点亮 delay(290); LED1=1,LED2=1,LED3=1,LED4=0; delay(290); LED1=1,LED2=1,LED3=1,LED4=1; delay(290); } { if(KEY==0) { //P3=0x00; LED1=LED2=LED3=LED4=0; delay(3000); LED5=1; } } } } /************延时3秒****/ void delay(u16 Count) { u8 i,j; while(Count--) { for(i=0;i<50;i++) for(j=0;j<20;j++); } } 这个程序我写来达不到想要的要求。 |