C语言问题遗传算法求解tsp问题如图谢谢

27被浏览5457分享邀请回答0添加评论分享收藏感谢收起0添加评论分享收藏感谢收起查看: 894|回复: 27
请按照“小灯亮灭时序图”的要求,用C语言编写主函数,谢谢
小灯亮灭时序图.png (7.85 KB, 下载次数: 19)
17:17 上传
请按照“小灯亮灭时序图”的要求,用C语言编写主函数,谢谢了!
单片机P1口接3个LED灯,分别为:LED1、LED2、LED3
单片机P2口接3个LED灯,分别为:LED11、LED12、LED13
(粗横线为灯亮的时间段)
(450 Bytes, 下载次数: 5)
23:24 上传
点击文件名下载附件
本帖最后由 tmxk0574 于
15:24 编辑
[测试2]程序中延时时间不对呀,按照“小灯亮灭时序图”要求,一个循环用时为5秒。(P1、P2各是5秒,因P1、P2同时运行的,所以一个循环只用5秒),下面延时时间不对的语句后面,我作了说明。望您好再帮助改一下,谢谢!(我自己不会改)
void main(void)
& &&&while (1)
& && & LED1=0;LED11=0;& && && & // 注意:1个循环用时5秒!!!!1
& && & Delay(500);& && && && &//这里LED1=0 ,应是 Delay(1000);&&
& && & LED11=1;
& && & Delay(500);& && && & //这里 LED11=1,应是Delay(1000);
& && & LED1=1;
& && & Delay(500);
& && & LED2=0;LED12=0;
& && & Delay(500);& && && &&&//这里LED12=0,应是 Delay(1000);
& && & LED2=1;
& && & Delay(500);
& && & LED3=0;LED12=1;
& && & Delay(500);& && && && &//这里LED3=0,应是Delay(2000)
& && & LED13=0;
& && & Delay(1000);
& && & LED13=1;& &
& && & Delay(500);& && && &&&//这里LED13=1,应是Delay(1000)
& && & LED3=1;
& && && &&&Delay(500);
编个延时500ms,然后需要输出脉冲,调用若干就行。例如2*500=1000ms、4*500=2000ms.
刘先生,[测试2]程序中延时时间不对呀!按照“小灯亮灭时序图”要求,一个循环
用时为5秒。(P1、P2各是5秒,因P1、P2同时运行的,所以一个循环只用5秒),下
面延时时间不对的语句后面,我作了说明。望您好再帮助改一下,谢谢!(我自己
void main(void)
& &&&while (1)
& && & LED1=0;LED11=0;& && & //注意了---1个循环用时5秒!!!!
& && & Delay(500);& & //LED1=0应是Delay(1000)
& && & LED11=1;
& && & Delay(500);& & // LED11=1应是Delay(1000)
& && & LED1=1;
& && & Delay(500);
& && & LED2=0;LED12=0;& &
& && & Delay(500);& &&&//LED12=0应是 Delay(1000)
& && & LED2=1;
& && & Delay(500);
& && & LED3=0;LED12=1;
& && & Delay(500);& & //LED3=0应是Delay(2000)
& && & LED13=0;
& && & Delay(1000);&&
& && & LED13=1;& &
& && & Delay(500);& &&&//LED13=1应是 Delay(1000)
& && & LED3=1;
& & & && & Delay(500);
回楼上,主要是P1、P2同时运行的程序我不知道怎么写,
程序中延时时间不对呀,一个循环要求应该是5秒(请看时序图),而程序中P1口亮灭加起来只有3秒(应该是5秒 ...
你理解错了,只给你解释一小段,你可以实际把我写的烧进去用LED灯实验,不要凭想象。
LED1=0;LED11=0;& && && & // LED1从此处开始亮
& && & Delay(500);& && && && &//这里LED1=0 ,应是 Delay(1000);&&延时500ms
& && & LED11=1;
& && & Delay(500);& && && & //这里 LED11=1,应是Delay(1000);这里又延时了500ms
& && & LED1=1;& && && &&&//这里才把LED1关闭,所以LED1在第一段时连续亮了500+500=1000ms
void main()
& & & & while(1)
& & & & & & & & LED1 = 1; //灯亮
& & & & & & & & LED11 =1;
& & & & & & & & Delay(500);//延时500ms
& & & & & & & & LED11 =0; //灯灭
& & & & & & & & Delay(500); //延时500ms
& & & & & & & & LED1 = 0; //灯灭
& & & & & & & & Delay(500); //延时500ms
& & & && &&&LED2 = 1; //灯亮
& & & && &&&LED12 = 1; //灯亮
& & & && &&&Delay(500); //延时500ms
& & & && &&&LED2 = 0; //灯灭
& & & && &&&Delay(500); //延时500ms
& & & && &&&LED12 = 0; //灯灭
& && &&&LED3 = 1; //灯亮
& && &&&Delay(500); //延时500ms
& && &&&LED13 = 1; //灯亮
& && &&&Delay(1000); //延时1000ms
& && &&&LED13 = 0; //灯灭
& && &&&Delay(500); //延时500ms
& && &&&LED3 = 0; //灯灭
不知道你电路是怎么连接的,我写的是高电平灯亮,你也可以改成低电平灯亮
#include &reg52.h& sbit Led1 = P1^0; sbit Led2 = P1^1; sbit Led3 = P1^2; sbit Led11 = P2^0; sbit Led12 = P2^1; sbit Led13 = P2^2; char Led1Tab[]={1,1,0,1,0,1,1,1,1,0}; char Led11Tab[]={1,0,0,1,1,0,1,1,0,0}; delay1ms(int del) { for(j=0;j&j++)&&for(i=0;i&110;i++); } main() { & & & & & & & & while(1) & & & & { & & & & & & & & if(Led1Tab[i]) & & & & & & & & { & & & & & & & & & & & & Led1=1;&&& & & & & & & & } & & & & & & & & else & & & & & & & & { & & & & & & & & & & & & Led1=0; & & & & & & & & } & & & & & & & &&&& & & & & & & & if(Led11Tab[i]) & & & & & & & & { & & & & & & & & & & & & Led11=1; & & & & & & & & } & & & & & & & & else & & & & & & & & { & & & & & & & & & & & & Led11=0; & & & & & & & & } & & & & & & & &&&& & & & & & & & i++; & & & & & & & & if (i&9) & & & & & & & & & & & & i=0; & & & & & & & & delay1ms(500); //延時500 Ms & & & & } & & & &&&}&&//以led1 表示P1&&led11 表示P2
本帖最后由 tmxk0574 于
15:01 编辑
----请看视频
小灯亮灭电路图.png (10.52 KB, 下载次数: 25)
20:15 上传
小灯亮灭时序图.png (7.83 KB, 下载次数: 26)
20:15 上传
小灯亮灭实物图片.png (301.48 KB, 下载次数: 27)
20:15 上传
非常抱歉,因刚接触到单片机,问题又可能没有表达清楚,麻烦您了。能得到您的帮助,非常感谢!
从视频里看到,LED1和LED11没有同时点亮,LED2和LED12也没有同时点亮,LED3比LED13先熄灭,不符合时序图要求。 不知什么原因。
我是低电平灯亮,我按照你上面给的主函数,再去试一下,谢谢您啊
把上面的主函数高电平点亮改成低电平点亮,现在看来动作对头了!
另外,我弄不明白,小灯实际亮灭的时间跟程序里的延时时间相差太多了!是什么原因?
十分感谢刘先生,使我学到了新的知识!
十楼朋友们的程序我也去试试,学习学习,也非常感谢十楼朋友对我的的帮助!
怎么没有我传上的视频,视频不能上传吗
延时函数中把600改为110后,程序和实际就差不多了
本帖最后由 刘海龙 于
23:23 编辑
延时函数中把600改为110后,程序和实际就差不多了
1ms延时程序中的600是在STC增强型51单片机上使用的(速度比传统51单片机快5-10倍),传统的51单片机(比如AT89S52、STC89C52)需要把600改为125左右。
用延时控制或者用定时器控制
void main(void) {& && &while (1)& & {& && &&&LED1=0;LED11=0;& && && & // 注意:1个循环用时5秒!!!!1& && &&&Delay(500);& && && && &//这里LED1=0 ,应是 Delay(1000);& && && & LED11=1;& && &&&Delay(500);& && && & //这里 LED11=1,应是Delay(1000);& && &&&LED1=1;& && &&&Delay(500);& && &&&LED2=0;LED12=0;& && &&&Delay(500);& && && &&&//这里LED12=0,应是 Delay(1000);& && &&&LED2=1;& && &&&Delay(500);& && &&&LED3=0;LED12=1;& && &&&Delay(500);& && && && &//这里LED3=0,应是Delay(2000)& && &&&LED13=0;& && &&&Delay(1000);& && &&&LED13=1;& && && &&&Delay(500);& && && &&&//这里LED13=1,应是Delay(1000)& && &&&LED3=1;& && && && &Delay(500);& & } }
void main(void)
& &&&while (1)
& && & LED1=0;LED11=0;& && && & // 注意:1个循环用时5秒!!!!1
& && & Delay(500);& && && && &//这里LED1=0 ,应是 Delay(1000);&&
& && & LED11=1;
& && & Delay(500);& && && & //这里 LED11=1,应是Delay(1000);
& && & LED1=1;
& && & Delay(500);
& && & LED2=0;LED12=0;
& && & Delay(500);& && && &&&//这里LED12=0,应是 Delay(1000);
& && & LED2=1;
& && & Delay(500);
& && & LED3=0;LED12=1;
& && & Delay(500);& && && && &//这里LED3=0,应是Delay(2000)
& && & LED13=0;
& && & Delay(1000);
& && & LED13=1;& &
& && & Delay(500);& && && &&&//这里LED13=1,应是Delay(1000)
& && & LED3=1;
& && && &&&Delay(500);
10楼编写的的程序风格也比较简明,试了一下,不知道为什么6个灯同时全部点亮了
,并且一直亮着(见图)。因为自己刚刚在学,不知道其中原因。我只是把I/O口改
了一下,以适应我原来 的程序(见图)。有知道的朋友请告诉我,多谢!
webwxgetmsgimg (2).jpg (93.54 KB, 下载次数: 25)
16:38 上传
webwxgetmsgimg (3).jpg (104.49 KB, 下载次数: 22)
16:38 上传
10楼的程序:
#include &reg52.h&
sbit Led1 = P1^0;
sbit Led2 = P1^1;
sbit Led3 = P1^2;
sbit Led11 = P2^0;
sbit Led12 = P2^1;
sbit Led13 = P2^2;
char Led1Tab[]={1,1,0,1,0,1,1,1,1,0};
char Led11Tab[]={1,0,0,1,1,0,1,1,0,0};
delay1ms(int del) {
for(j=0;j&j++)&&
for(i=0;i&110;i++);
{& && && &
while(1)& && && &
{& && && && && &&&
if(Led1Tab[i])& && && && && &&&
{& && && && && && && && &
Led1=1;& && && && && && &
}& && && && && &&&
else& && && && && &&&
{& && && && && && && && &
Led1=0;& && && && && &&&
}& && && && && && && && && && && &
if(Led11Tab[i])& && && && && &&&
{& && && && && && && && &
Led11=1;& && && && && &&&
}& && && && && &&&
else& && && && && &&&
{& && && && && && && && &
Led11=0;& && && && && &&&
}& && && && && && && && && && && &
&&i++;& && && && && &&&
&&if (i&9)& && && && && && && && &
&&i=0;& && && && && &&&
&&delay1ms(500); //延時500 Ms& && && &
}& && && &
}& & //以led1 表示P1&&led11 表示P2
#include &reg52.h&
sbit Led1 = P1^7;
sbit Led2 = P1^6;
sbit Led3 = P1^5;
sbit Led11 = P2^6;
sbit Led12 = P2^7;
sbit Led13 = P2^5;
char Led1Tab[]={1,1,0,0,0,0,0,0,0,0};
char Led2Tab[]={0,0,0,1,0,0,0,0,0,0};
char Led3Tab[]={0,0,0,0,0,1,1,1,1,0};
char Led11Tab[]={1,0,0,0,0,0,0,0,0,0};
char Led12Tab[]={0,0,0,1,1,0,0,0,0,0};
char Led13Tab[]={0,0,0,0,0,0,1,1,0,0};
void delay1ms(int del)
&&& & & & int i,j;
& & & & for(j=0;j&j++)
& & & & for(i=0;i&120;i++);
& & & & while(1)
& & & & & & & & if(Led1Tab[i])
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led1=0;
& & & & & & & & & & & & }
& & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led1=1;
& & & & & & & & & & & & }
& & & & & & & &
& & & & & & & & if(Led2Tab[i])
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led2=0;
& & & & & & & & & & & & }
& & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led2=1;
& & & & & & & & & & & & }
& & & & & & & & if(Led3Tab[i])
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led3=0;
& & & & & & & & & & & & }
& & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led3=1;
& & & & & & & & & & & & }
& & & & & & & &
& & & & & & & &
& & & & & & & & if(Led11Tab[i])
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led11=0;
& & & & & & & & & & & & }
& & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led11=1;
& & & & & & & & & & & & }
& & & & & & & &
& & & & & & & & if(Led12Tab[i])
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led12=0;
& & & & & & & & & & & & }
& & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led12=1;
& & & & & & & & & & & & }
& & & & & & & &
& & & & & & & & if(Led13Tab[i])
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led13=0;
& & & & & & & & & & & & }
& & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Led13=1;
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & i++;
& & & & & & & & if(i&9)
& & & & & & & & i=0;
& & & & & & & &&&
& & & & & & & &&&delay1ms(500); & & & &
& & & & & & & &
你試看看&&,(之前 if(i&9).i=0,是錯誤 )
回复24楼,您好。您修改后的程序我已试过了,只有LED1一个灯一闪一闪的,其余的灯都不亮。请您在方便的时候再看一下,谢谢您了!
24楼的程式:我用 KEIL 下的DEBUG&&測試.看來是正常的..並無只有LED1一个灯一闪一闪的,其余的灯都不亮。的情況....
檢查程式中使用的 IO口與實驗板的IO口是否相符。LED接線有皆對嗎
谢谢27楼,我再检查一遍。
在各位朋友的热情帮助下,这个问题终于懂了,衷心地感谢帮助过我的朋友们,祝你们快乐、健康!
Powered by10:26 提问
C语言的简单问题求解,谢谢了
ACM上一道简单的题
Description
计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m)
t(保留六位小数)
Sample Input
Sample Output
int main()
float t=1;
scanf("%d",&m);
}while(m&1);
for(n=2;n&=m;n++)
t=t-1.0/(n*n);
printf("%.6f",t);
感觉怎么都没有错啊
按赞数排序
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!
你输入数据的方式可能有问题 。
如果只有一组输入,那直接用scanf("%d", &m);
如果有多组输入,并且以特定输入(比如m等于0)结尾,那么程序应该写成
while (scanf("%d", &m) && m != 0)
// 主要程序
而如果只告诉有多组输入,而没有告知特定条件,那么通常是用
while (scanf("%d", &m) != EOF)
// 主要程序
这里的EOF是end of file的意思,因为ACM判题的方式将输入和输出分别放在文件中,然后读取输入文件中的数据,再将你程序的输出与输出文件中的结果进行比对。所以只有将所有输入全部读完,结果都正确并且时间、空间都满足条件的情况下才能通过题目。
另外这种计算小数的题目你需要注意题目中有没有对四舍五入有特殊要求,这也可能是WA的一种可能
换成double试试
其他相关推荐3基础C语言题,如图,求解,谢谢_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
3基础C语言题,如图,求解,谢谢
3基础C语言题,如图,求解,谢谢3基础C语言题,如图,求解,谢谢
我有更好的答案
&&for(i&=&r&);&&&&fscanf(fp,&%d&;&&nbsp,&&&&0;&&&&&&&&&j&=0;&&&for(j&=&&&&&i-1;&&&&&&&,&&&&&&0;a[j]);a[j+1]=t;&&&&}&else&&&i&&&n;&i&&j&--)&&&&&a[j+1]=a[j],&++)&&&&&&&&if(a[j]%2==1)&main(){&&&&FILE&*&&&&int&&&++)&&&&{&&&a[500];&&&&int&j&&&i;&j&int&t;&&&&int&&&nbsp,j;if(a[j]&=t)&&&&&&&&&nbsp,j;%d&&&t)&&fscanf(&nbsp,&&&&&&printf(&%d&%d\n&;&&&nbsp,&n);&=&fopen(&&&nbsp.txt&;fp&n;for(j&=&nbspint&&&&&&&&&i=0
软件工程师
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包c语言实验常见题目_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
c语言实验常见题目
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩24页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 增值税问题如图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信