C语言实训报告
- 格式:doc
- 大小:29.00 KB
- 文档页数:10
c语言实习心得体会范文在C语言实习期间,我深深感受到了理论知识与实践应用之间的差距,也感受到了自己在C语言编程方面的不足之处。
通过这段实习经历,我不仅学到了许多新的知识和技能,还培养了自己的动手实践能力和解决问题的能力。
<br>首先,在实习期间,我了解到了C语言的基础知识,包括变量、常量、运算符、数据类型等。
这些基础知识是我进一步学习和应用C语言的基础,也为后面的实践提供了基础。
同时,我也学习了C 语言的控制结构,包括顺序结构、选择结构和循环结构等。
这些结构的运用使我的程序更加灵活和高效,也使我在实践中能够更好地解决问题。
其次,在实习中,我学会了使用C语言进行程序的设计和编写。
通过实际动手编写程序,我不仅加深了对C语言的理解,还提高了我的编程能力。
在编程过程中,我学会了使用不同的函数和语句来实现不同的功能,包括输入输出、算术运算、条件判断、循环控制等。
这些功能的运用使我的程序更加完善和实用,也使我在实践中能够更好地解决问题。
在实习期间,我遇到了许多难题和困惑,但通过与同事和老师的探讨和交流,我逐渐找到了解决问题的方法和思路。
在与他们的交流中,我了解到了许多实践经验和技巧,也学到了许多新的知识和技能。
通过这次实习,我更加深入地了解了C语言的应用和发展,也提高了自己的实践能力和解决问题的能力。
最后,在实习期间,我养成了良好的编程习惯和工作态度。
在编程过程中,我注重代码的规范和格式,力求使代码易读易懂,并进行了详尽的注释。
同时,我也注重团队合作,在与同事和老师合作的过程中,我积极互助,共同解决问题。
在实践中,我学会了合理安排时间和资源,提高自己的工作效率。
通过这次C语言实习,我不仅学到了许多新的知识和技能,还提高了自己的实践能力和解决问题的能力。
在今后的学习和工作中,我将继续努力学习和应用C语言,在实践中不断提高自己的编程能力和解决问题的能力。
我相信,通过不断学习和努力,我将会在C语言编程方面取得更好的成绩。
c语言实验报告册C语言实验报告册。
实验一,C语言基本程序设计。
1. 实验目的。
通过本实验,掌握C语言的基本程序设计方法,包括变量的定义和使用、表达式的计算、控制结构的使用等。
2. 实验内容。
(1)编写一个C程序,实现输入两个整数,然后输出它们的和、差、积和商。
(2)编写一个C程序,实现输入一个实数,计算并输出它的绝对值。
3. 实验步骤。
(1)定义两个整型变量a和b,用来存储输入的整数。
(2)使用printf函数提示用户输入两个整数,并使用scanf函数将用户输入的值分别赋给变量a和b。
(3)定义四个整型变量sum、diff、product和quotient,分别用来存储a和b的和、差、积和商。
(4)分别计算a和b的和、差、积和商,并将结果分别赋给sum、diff、product和quotient。
(5)使用printf函数输出sum、diff、product和quotient的值。
4. 实验结果。
输入:a = 5。
b = 3。
输出:sum = 8。
diff = 2。
product = 15。
quotient = 1。
5. 实验结论。
通过本实验,我掌握了C语言的基本程序设计方法,包括变量的定义和使用、表达式的计算、控制结构的使用等。
在实际编程中,我需要注意变量的类型和范围,以避免数据溢出和精度丢失的问题。
实验二,C语言函数的使用。
1. 实验目的。
通过本实验,学习C语言函数的定义和调用,掌握函数参数的传递和返回值的使用。
2. 实验内容。
(1)编写一个C程序,实现输入两个整数,计算它们的最大公约数和最小公倍数。
(2)编写一个C程序,实现输入一个整数n,计算并输出1到n的阶乘之和。
3. 实验步骤。
(1)定义一个函数gcd,用来计算两个整数的最大公约数。
(2)定义一个函数lcm,用来计算两个整数的最小公倍数。
(3)定义一个函数factorial,用来计算一个整数的阶乘。
(4)在主函数中,调用gcd和lcm函数计算最大公约数和最小公倍数;调用factorial函数计算阶乘之和。
c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。
其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。
c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容编写一个学生信息排序程序。
要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
c语言实验报告总结通用版,C语
言实训心得体会
C语言实训心得体会【1】
一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能!
一、心得与感想
首先,在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。
在做题的过程中让我们把这些知识复习了一遍,强化了知识!
其次,这个工作中遇到的问题在实践中有所接触,所以我们都很熟悉这些问题的要求和算法,因为写小程序更快,算法也更简单准确。
我理解很多编程问题都要修改调试很多次,才能得到最简单的算法。
再次,平时我们学C语言视乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。
但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用!
虽然我这次是编写一个菜单的程序,但是如果我么留心的话,我们身边有许多电子设备都是内置有程序的,我们也可以在此次专题实训过后,自行确定其他的专题进行编写程序,这样可以让我们的知识更加深化丰富!
这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最后的时间里才。
最新c语言实验报告心得体会范文(精选3篇)最新c语言实验报告范文篇1做完这个课程设计,我们的自信一下子提高了;尽管对于有些人这种程序会很简单,可对我们c语言初学者来说,已经很不容易了。
这次体验为以后的学习计算机的我们增强了信心。
享受劳动成果的'滋味实在很美妙啊!虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。
做完这个程序最大的收获就是感受到了集体的力量,当然个人的智慧也是很重要的哦!忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。
尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。
最新c语言实验报告心得体会范文篇2现在,计算机和网络已经深入到了我们生活中的方方面面,也已经成了生活中不可缺少的一部分,网络成了我们获取知识和信息的一种便捷工具,现在的网民也在不断的增多,所以,了解和学习网络知识是我们作为一名大学生迫切所需的。
我通过这一学期的学习,对网页设计有了初步的认识和了解,并基本掌握了Dreamweaver的应用。
在学习了网页设计的同时,我更加深入的了解了关于计算机和网络的知识。
基于对计算机基础与C语言的基本掌握,学习网页设计的基础部分便显得较为轻松。
虽然如此,在设计过程中依然出现了很多的问题,但通过看书,上网查询,等方式,不断的学习、解决、提高,设计出的网页不论是外观还是内容,都在不断的进步、改善。
可以说在自己动手,不断实践的过程中,网页设计水平得到了很大的提高。
通过对网页设计书籍的翻阅,我学习到了一些关于建设网站和制作网页的知识,在实践查阅资料时,对flash也有所了解。
我还了解了一些基础的网络技术。
通过学习,我对计算机有了更深层次得到了解,也有了更浓厚的兴趣。
C语言课程实习(优秀范文5篇)第一篇:C语言课程实习课程实习一、C程序上机操作方法及运行环境编写一个C程序,输入a, b, c,d四个值,输出其中最小者。
#includemain(){int a,b,c,d,t;printf(“Please input numbers:”);scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);t=min(min(min(a,b),c),d);printf(“min number is:%dn”,t);}int min(int x,int y){int z;if(xz=x;elsez=y;return(z);}运行结果:Please input numbers:4,6,3,9min number is:3课程实习二、C程序上机操作方法及运行环境从键盘输入三个字符,要求输出这三个字符,并输出它们的ASCII 码及其ASCII码的平方根和的平方。
#include#includevoid main(){char ch1,ch2,ch3;float t;scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);t=sqrt(ch1)+sqrt(ch2)+sqrt(ch3);printf(“%c,%dn”,ch1,ch1);printf(“%c,%dn”,ch2,ch2);printf(“%c,%dn”,ch3,ch3);printf(“%fn”,t*t);}运行结果:a,b,ca,97b,98c,99881.984683课程实习三、循环结构程序设计1)输入两个正整数m和n;2)如果m=n输出最大公约数m程序结束;3)若m>n则m=m-n否则n=n-m;4)返回到2)(循环)。
#includevoid main(){int m,n;scanf(“%d%d”,&m,&n);while(m!=n){if(m>n)m=m-n; else n=n-m;}printf(“%dn”,m); }运行结果:34,24课程实习四、循环结构程序设计打印下面的图案# # # # ## # # ## # ## ##includevoid main(){int i,j;for(i=1;i<=4;i++) {for(j=1;jprintf(“ ”);for(j=5;j>=i;j--) printf(“*”); putchar('n');}}课程实习五、数组的应用输入一个0到150之间的十进制整数,要求把此数转化为二进制形式。
C语言程序设计实习报告一、实习目的1. 巩固和加深对C语言程序设计的理解。
2. 掌握C语言编程的基本技巧和方法。
3. 提高分析问题、解决问题的能力。
4. 学会将理论知识应用于实际编程中。
二、实习内容XXX语言基础语法练习变量、数据类型、运算符、表达式等基础语法练习。
控制结构(顺序、分支、循环)的实现。
函数的定义和调用方式练习。
2. 模块化程序设计将一个大的程序分解成多个模块,每个模块完成特定的功能。
通过模块间的调用和传递数据来实现整个程序的功能。
3. 文件操作与文件读写文件的打开、关闭、读写操作练习。
文件格式的转换和数据统计处理。
4. 预处理指令与宏定义使用预处理指令进行条件编译和宏定义替换。
练习使用常见的预处理指令如include、define、ifdef等。
5. 结构体、链表与指针结构体的定义和使用。
链表的创建、插入、删除、遍历等操作。
指针的概念和指针运算。
深入理解指针与数组、结构体等数据结构的关系。
6. 位运算与嵌入式系统编程学习位运算符的使用和位段操作的实现。
嵌入式系统的基本概念和编程方法。
7. 综合项目实践参与或独立完成一个综合性C语言程序设计项目。
项目可以包括基于命令行参数的程序设计、基于文件操作的程序设计、基于网络编程的程序设计等。
三、实习过程1. 理论学习:通过教材、网络资源等途径学习C语言的基础知识和编程技巧。
2. 上机实践:在计算机上编写和调试C语言程序,不断巩固所学知识。
3. 问题解决:遇到问题时,通过查阅资料、请教老师或同学等方式解决问题。
4. 团队合作:在小组项目中与他人协作,共同完成任务。
四、实习收获1. 知识技能方面:深入理解了C语言的基本概念和编程技巧,掌握了模块化程序设计和文件操作等常用算法。
2. 解决问题能力方面:学会了如何分析问题、寻找解决方案并通过实践验证解决方案的正确性。
3. 团队协作能力方面:学会了与他人合作,共同完成任务,提高了团队协作能力。
4. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。
7月C语言学习社会实践报告【标题】7月C语言学习社会实践报告【引言】在本次暑假期间,我参加了一项社会实践活动,进行了C语言的学习。
通过这次实践,我深入了解了C语言的基本知识和应用场景,并运用所学知识完成了一些小项目。
本报告旨在总结我在实践中的收获和体会,对于其他学习者进行参考和借鉴。
【目标】通过参加社会实践,系统学习C语言,并应用所学知识完成小项目。
【具体内容】1. 学习过程1.1 制定学习计划:根据C语言的基本教材和实践项目要求,制定了一个详细的学习计划,包括每天的学习时间和学习内容。
1.2 学习基本语法:通过阅读教材及相关教程,掌握了C语言的基本语法规则,理解了变量、数据类型、运算符等概念。
1.3 编写简单程序:通过编写一些简单的程序来巩固所学知识,如计算器、猜数字等小项目。
2. 实践项目2.1 学生成绩管理系统:根据实际需求,编写了一个简单的学生成绩管理系统,能够实现学生信息的录入、查询和修改。
2.2 游戏开发:参考教材中的案例,实现了一个简单的小游戏,玩家需要通过键盘操作控制角色完成任务。
2.3 文件处理:利用C语言的文件处理功能,实现了一个文件复制程序,能够将指定文件复制到指定目录。
3. 收获与体会3.1 掌握了C语言的基本语法和编程思想,能够独立编写简单的程序。
3.2 了解了C语言的应用场景,如系统开发、游戏开发等,对于今后的学习和就业有了更清晰的目标。
3.3 实践中遇到的问题,如编译错误、逻辑错误等,锻炼了我的问题解决能力和调试技巧。
【结论】通过本次社会实践,我对C语言的基础知识和应用有了深入了解,并成功应用所学知识完成了一些小项目。
在今后的学习和工作中,我将继续深化对C语言的学习,并希望能够进一步掌握其高级特性和应用。
c语言实习心得体会作为一个计算机科学与技术专业的学生,我在大学期间选择了参加一次C语言实习。
通过这次实习,我深刻地体会到了学习和应用C 语言的重要性,提高了自己的编程能力,同时也增加了对计算机底层原理的理解。
在这篇文章中,我将分享我在C语言实习中的体会和心得。
实习的第一天,我们首先进行了一些关于C语言的基础知识的学习。
这些基础知识包括了C语言的语法规则、数据类型、运算符、流程控制等。
通过这些学习,我对于C语言的基本语法和使用有了一个较全面的了解。
同时,老师也教给了我们如何使用C语言进行简单的程序设计,如如何编写一个求和的程序、如何编写一个判断素数的程序等。
这些小程序的编写对于我们理解C语言的逻辑以及动手能力的提升非常有帮助。
在实习过程中,我们还学习了C语言的高级特性,如指针、结构体和动态内存分配等。
指针作为C语言非常重要的一个概念,掌握了指针的使用,我们可以更加灵活地操作内存,提高程序的效率。
在学习指针的过程中,我意识到了指针的重要性和使用的灵活性,通过运用指针,我们可以更好地解决一些问题,并且提高程序的性能。
而学习结构体的过程中,我对于数据的组织和管理有了更深入的理解,这对于将来的工作和学习中都是非常有帮助的。
在实习过程中,我们还学习了C语言的文件操作和输入输出。
文件操作是C语言非常常用的一个功能,通过文件操作,我们可以读取和保存数据,实现数据的长期存储和传输。
在学习文件操作时,我意识到了数据的重要性和安全性。
在实际的应用中,我们经常需要将数据存储到文件中,通过文件操作,我们可以实现数据的读取和保存。
而对于输入输出的学习,提高了我们程序的灵活性和可扩展性。
在以后的编程工作中,我相信这些知识会发挥非常重要的作用。
除了上述的基础知识学习,我们在实习过程中还进行了一些实际的编程练习和项目开发。
这些练习和项目开发对于我们提高编程能力和实践能力非常有帮助。
通过实际的编程练习,我们可以将之前学习的知识运用到实际的项目中,更好地理解和掌握这些知识。
C语言实验报告C语言实验报告(精选9篇)在经济发展迅速的今天,我们都不可避免地要接触到报告,通常情况下,报告的内容含量大、篇幅较长。
写起报告来就毫无头绪?下面是小编帮大家整理的C语言实验报告,欢迎阅读与收藏。
C语言实验报告1在这个星期里,我们在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
个人认为课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c 语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
C语言程序设计实训报告题目:红外避障机器人院(系):信息工程系专业:通信工程学生姓名:韦嘉宝学号: 24指导教师:朱震周斌王旬全刘辉2016 年10月8 日目录摘要 (1)设计要求 (2)设计步骤 (3)代码编写 (4)心得体会 (5)参考文献 (6)许多机器人使用雷达(RADAR)或者声纳(SONAR)来探测物体而不需要同物体接触。
本文的方法是使用红外光来照射机器人前进的路线,然后确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。
由于红外遥控技术的发展,现在红外线发射器和接收器已经很普及并且价格很便宜。
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能小车。
机器人使用红外线二极管LED 作为前灯,如图6-1 所示。
红外线二极管发射红外光线,如果机器人前面有障碍物,红外线从物体反射回来,相当于机器人眼睛的红外检测(接收)器,检测到反射回的红外光线,并发出信号来表明检测到从物体反射回红外线。
机器人的大脑——单片机A T89S52 基于这个传感器的输入控制伺服电机。
红外线(IR)接收/检测器有内置的光滤波器,除了需要检测的980 nm 波长的红外线外,它几乎不允许其他光通过。
红外检测器还有一个电子滤波器,它只允许大约38.5 kHz 的电信号通过。
换句话说,检测器只寻找每秒闪烁38500 次的红外光。
这就防止了普通光源像太阳光和室内光对IR 的干涉。
太阳光是直流干涉(0Hz)源,而室内光依赖于所在区域的主电源,闪烁频率接近100 Hz 或120 Hz。
由于120 Hz 在电子滤波器的38.5 kHz 通带频率之外,它完全被IR 探测器忽略。
本任务将搭建并测试红外线发射和检测器对。
本讲需要用到的新部件如下:元件清单(1)红外检测器,2 个。
(2)IR LED(带套筒),2 个。
(3)470Ω 电阻,2 个。
(4)连接线,若干。
二、设计要求(1)小车能够完成前进、后退、左转、右转等动作。
(2)机器人能够读出传感器电平变化,并作相应的动作变化。
(3)利用机器人所装配的两个探测器,探测和避开障碍物。
三、设计步骤1.测试红外发射探测器下面要用 P1_3 发送持续 1ms 的 38.5kHz 的红外光,如果红外光被机器人路径上的物体反射回来,红外检测器将给微控制器发送一个信号,让它知道已经检测到反射回的红外光。
让每个IR LED探测器组工作的关键是发送1ms频率为38.5kHz的红外信号,然后立刻将IR探测器的输出存储到一个变量中。
下面是一个例子,它发送 38.5 kHz信号给连接到P1_3的IR发射器,然后用整型变量 irDetectLeft存储连接到P1_2的IR探测器的输出上。
for(counter=0;counter<38;counter++){P1_3=1;delay_nus(13);P1_3=0;delay_nus(13);}irDetectLeft=P1_2state();上述代码给 P1_3 输出的信号高电平13μs,低电平为13μs,总周期为26μs,即频率约为38.5kHz。
总共输出 38个周期的信号,即持续时间约为1ms(38×26≈1000μs)。
当没有红外信号返回时,探测器的输出状态为高电平。
当它探测到被物体反射的38.5kHz红外信号时,它的输出为低电平。
因红外信号发送的持续时间为1ms,因此IR探测器的输出如果处于低电平,其持续状态也不会超过1ms,因此发送完信号后必须立即将IR探测器的输出存储到变量中。
这些存储的值会显示在调试终端或被机器人用来导航。
保持机器人与串口电缆的连接,因为需用调试终端来测试 IR 组。
放一个物体,比如手或一张纸,距离左侧 IR 组大约 2~3cm 处,调试终端会显示“irDetecfLeft=0”;将物体移开时,它显示“irDetectLeft=1”。
再次修改程序,使其适用于右方红外。
3、探测和避开障碍物有关IR检测器的趣事是它们的输出与触须的输出非常相像。
没有检测到物体时,输出为高电平;检测到物体时,输出为低电平。
本任务是更改程序RoamingWithWhiskers.c,使它适用于IR检测器。
进行IR探测时要使用AT89S52的4个引脚:P1_2、P1_3、P3_5和P3_6。
#define LeftIR P1_3 //左边红外接收连接到 P1_3 #define RightIR P1_2 //右边红外接收连接到 P1_2 #define LeftLaunch P3_6 //左边红外发射连接到 P3_6 #define RightLaunch P3_5 //右边红外发射连接到 P3_5这里用到了宏定义命令:#define,它的作用是在后面的程序文件中可以用LeftIR等来代替P1_3这个字符串等。
程序在编译预处理时,会自动将后面程序中出现的所有LeftIR等都用P1_3代替。
这种方法是用一个简单的名字代替一个长的字符串,或者用一个有意义的名字代替一些无规则、无意义的字符串,方便程序阅读、理解和修改。
4、改变触须程序使其适用于 IR 检测和躲避设计一个函数 void IRLaunch(unsigned char IR)来进行红外线发射。
void IRLaunch(unsigned char IR){int counter;if(IR=='L') //左边发射for(counter=0;counter<38;counter++) //发射时间比胡须长{LeftLaunch=1;nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}if(IR=='R') //右边发射for(counter=0;counter<38;counter++){RightLaunch=1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();RightLaunch=0;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}}这个函数的形参是一个无符号的字符型变量,用到了修饰符unsigned。
对于字符型变量而言,在第 2 讲介绍过,如果没有指定修饰符unsigned,它也可以作为一个有符号的8位整型变量,取值范围为-128~127。
如果是无符号型,则取值范围为 0~255。
无论是有符号还是无符号,其数值作为编码时代表的字符都是一样的。
修改if…else语句存储IR检测信息的变量。
if((irDetectLeft==0)&&(irDetectRight==0)) //两边同时接收到红外线{Left_Turn();}else if(irDetectLeft==0) //只有左边接收到红外线Right_Turn();else if(irDetectRight==0) //只有右边接收到红外线Left_Turn();elseForward();2.本程序由如下模块组成:(1)小车左右两个轮子的控制模块,完成小车不同状态下的行进方式。
(2)小车的后退控制程序模块,通过接受到指定信号完成小车的后退指令。
(3)小车的接收器接收信号模块,完成不同信号状态的传递和选择状态开关。
3.完成运动流程(1)当左接收器检测到信号右接收器没有检测到信号时小车向左转弯(2)当右接收器检测到信号左接收器没有检测到信号时小车向右转弯(3)当左右探头都检测到信号时小车后退。
(4)当小车左右接收器均未检测到信号时直行。
4.函数的定义5.运动控制程序四、代码编写#include<BoeBot.h>#include <AT89X52.h>void Forward(void) //向前行走子程序{P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}void Left_Turn(void) //左转子程序{int i;for( i=1;i<=16;i++){P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}}void Right_Turn(void) //右转子程序{int i;for( i=1;i<=26;i++){P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}}void Backward(void) //向后行走子程序{int i;for( i=1;i<=30;i++){P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}}void main(){if((P1_2==0)&&(P1_3==0)) //两边同时接收到红外线{Backward();Right_Turn();Right_Turn();Right_Turn();}else if(P1_3==0) //只有左边接收到红外线{Backward();Right_Turn();}else if(P1_2==0) //只有右边接收到红外线{Backward();Left_Turn();}elseForward();}五、心得体会(1)在对模块化机器人的组装调整中,我们熟悉了各种结构件的使用技巧,为设计更复杂的构型打好了基础;使我了解了机器人小车执行各种功能的原理和利用的器件,了解了小车最基本的前进后退转弯的工作原理,了解了小车如何寻线行驶,了解小车如何避障和寻找目标。