<

趣祝福 · 范文大全 · 课程设计报告

课程设计报告【篇1】

首先我们由衷的感谢老师提供给我们这样一个锻炼自己的机会,经过这四周的学习,本次课程设计即将结束,总的来说,经过这门课的学习收获还是相当大的。回顾这段时间的课程设计,至今我仍感慨万分。的确,从选材到开始制作,从理论到实践,在四周的实训日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我们都更加懂得并亲身体会到了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,可以说是困难重重,并且在设计的过程中发现了自己的很多不足之处,发现自己对之前所学过的知识理解得不够深刻,掌握得不够牢固,有待加强。

生活就是这样,汗水预示着结果但是也见证着收获,劳动是人类生存、生活永恒不变的话题,通过实训,我才真正领略到“艰苦奋斗”这一词的真正含义。我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以。而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少欢乐在这里洒下。我想说,之前的时间确实很累,但当我们看到自己所做的劳动成果时,心中也不免产生兴奋。也许有人不喜欢这类的工作,也许有人认为编程的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就够了,而且这也是最主要的,社会需要我们,我们也可以为社会而工作。

我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神,某个人的离群都可能导致整项工作的失败。实训中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个项目失败,团结协作是我们实训成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

虽然我们的课程设计在规定的时间内按时完成了任务,但是,由于知识和经验的欠缺,整个系统的开发功能还不算太完善,在设计的过程中也遇到了很多困难,比如由于早期的需求分析不充分,给后来系统的具体实现带来了很大的困难,所以中间做了一部分的无用功,但通过我们的不懈努力和老师、同学的帮助,设计才得以圆满按时的完成,所以仅凭个人的力量想设计出一个完美的系统几乎是不可能的。

老师为我们安排此次课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟,尤其是观察、分析和解决问题的实际工作能力,以便培养成能够主动适应社会主义现代化建设需要的高素质人才。在这四个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识学习的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

作为整个学习体系的有机组成部分,课程设计的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际工作中,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足之处,以便为完善学习计划,改变学习内容与方法提供实践依据。

对我们软件专业的专科生来说,实际动手能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习中及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。

此次课程设计达到了专业学习的预期目的。在课程设计之后,我们都感到不仅实际动手能力有所提高,更重要的是通过对软件开发、软件管理流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

关于本次课程设计,我们的设计虽然还不够完善,许多功能因为时间和本身的知识水平有限无法实现,不过,至少在平时的学生基础之上已经有了很大的提高,我坚信它必将会对我们的未来走上工作岗位产生积极的影响。

在此次课程设计中,学到了很多课内学不到的东西,比如独立思考解决问题的能力,出现差错的随机应变能力,和与人合作共同提高的能力,都受益匪浅,并且使我们的动手能力得到了很大的提高,对以后的工作、学习都有非常大的帮助。对我们而言,知识上的收获固然重要,但是精神上的丰收更加可喜,挫折是一种财富,经历是一种拥有,这次实训必将成为我们人生旅途上一个非常美好的回忆!

课程设计报告【篇2】

课程设计报告分为四部分,具体的内容与要求如下:

(一)系统规划

----项目开发简介:包括项目背景,如发展历史、业务范围、经营现状等。以及可行性分析、企业发展对信息技术应用的需求情况。

(二)系统分析

----

1、旧系统调查与分析:内容包括: 组织结构调查与分析; 管理业务流程调查与分析; 功能体系调查与分析; 数据与数据流程调查与分析;薄弱环节调查等。

----

2、、新系统目标设计:提出你所要设计的信息系统的思路,介绍其所要实现的目标,即通过它来解决公司存在的什么经营管理或业务问题。

----

3、新系统业务流程设计:新系统的业务流程是业务流程分析和优化重组后的结果,包括以下内容:原系统的业务流程的不足及其优化过程;新系统的业务流程;新系统业务流程中哪些由计算机系统来完成及哪些由用户来完成。----

4、新系统数据流程设计:新系统的数据流程是数据流程分析的结果,包括下列内容:原数据流程的不合理之处及优化过程;新系统的数据流程;新系统的数据流程中哪些由计算机系统来完成及哪些由用户来实现。----

(三)系统设计

----

1、新系统数据库设计:选择适当的DBMS产品,将系统分析环节所得到的数据逻辑结构转换成物理数据结构。包括数据库结构、关系描述、数据完整性、存储过程等。

----

2、新系统代码设计:为了便于计算机数据处理,要对处理对象进行编码,如物资资料、产品、部门、职工等编码。用数码或外文字母等字符代替汉字拼音或其他形式表示的名称,可以缩短数据项目的长度,并可使之标准化、系列化,从而减少存储空间的占用,便于对数据的识别和处理。

----

3、输入输出界面设计:做输入设计时要遵循“使用方便,操作简单,便于录入,数据准确”的原则。有效地利用已有的各种输出设备,选择合适的输出方式。包括输入输出的界面风格设计等。

----

4、系统安全性和保密性设计:安全性设计是指采取一系列的保护措施,以防止已生成的企业经营信息被泄露和破坏。安全保密设计一是力求信息不泄露;二是防止信息不被破坏。

---

(四)系统实施报告

该总结包括:

----

1、系统设计说明书。包括系统开发平台、数据库产品等

----

2、系统使用说明书。

----

3、系统开发总结与心得体会。

课程设计报告【篇3】

题目一、 题目描述: 已知银行整存整取存款不同期限的月息利率(采用复利 方式,即利滚利)分别为 0.63% 期限一年 0.66% 期限二年 月息利率= 0.69% 期限三年

0.75% 期限五年 0.85% 期限八年 要求输入存钱的本金和期限(以整数年为单位) ,求到期时能从银行 得到的利息与本金的合计。 提示:可以用嵌套的 if-else 结构或 switch 结构实现,核心函数 pow(1+月利率,月份)。 请思考年份是四、六、七或八年以上的情况。

(二)明确核心函数 pow 是计算复利的(例如:x 的 n 次方 ) ;由于 是以年为计算期限的,而所给的利率是月利率,所以计算时 应该在年的基础上乘以 12; (三)复利计算就是一种幂运算,I=p*(1+i)^n,本金和利率都是变

动的 (四)在除了 1、2、3、5 和 8 年之外的其他年份中,要注意“就低 不就高”的原则,尤其是在 8 年之后,也是套用期限八年的利率。

附源程序如下: #include #include void main { int years; float capital,sum;

scanf(“%f %d”,&capital,&years); switch(years) { case 1:sum=capital*pow(1+0.63*0.01,12);break; case 2:sum=capital*pow(1+0.66*0.01,24);break; case 3:sum=capital*pow(1+0.69*0.01,36);break;

case 4:sum=capital*pow(1+0.69*0.01,48);break;

case 5:sum=capital*pow(1+0.75*0.01,60);break; case 6:sum=capital*pow(1+0.75*0.01,72);break; case 7:sum=capital*pow(1+0.75*0.01,84);break; case 8:sum=capital*pow(1+0.85*0.01,96);break; default:sum=capital*pow(1+0.85*0.01,12*years); } printf(“%f”,sum); }

题目二、 题目描述: 简单计算器。用 switch 语句编写一个程序计算表达式: data1 op data2 的值。其中 op 为运算符+、-、*、/。

设计思路: (一)明确计算器是怎样进行计算的; (二) 细节, 比如很多地方需要分号, 在遇到字符时, 我们应该用 ‘’ , 而不是“” ; (三 Switch 语句主要用于多分支选择,此题有+、-、*、/,这就是 选择。使用 switch 每个 case 对应+ - * /符号 程序涉及到至

少三个量,运算符 op 和两个数字;先让用户输入两个数字和运算符, 两个数字的计算在后面的程序中用 swith 结构运行。 运 行 效 果 截 图 :

附源程序如下:#include int main() { float data1,data2,c;

char op; printf(“请输入表达式中两个数字 data1 和 data2 ”); //打印 scanf(“%f%c%f”,&data1,&op,&data2); //输入

printf(“请输入运算符+、-、*、/ ”);// 打印 switch(op) //switch (){case stick:break;} 这个是个选择结构

如果 OP = stick 则执行这一句 如果没有 则执行 default 后面 的语句 { case '+':c=data1+data2;break; case '-':c=data1-data2;break; case '*':c=data1*data2;break; case '/':c=data1/data2;break; default:printf(“输入错误”);break; } printf(“%f”,c); return 0; } 题目三 题目描述:编写程序,用二分法求方程 2x3-4x2+3x-6=0 在(-10,10) 之间的根。 提示: ① 用 do-while 语句实现。

② 二分法的计算步骤: (1) 准备 计算 f(x)在有根区间端点处的值 f(a),f(b) (2) 二分 计算 f(x)在区间中点(a+b)/2 处的值 f (3) 判断若 f=0,则即是根,计算过程结束。 否则,检测: A. 若 f与 f(a)异号, 则根位于区间内, 这时以(a+b)/2 代替 b; B. 若 f与 f(a)同号, 则根位于区间内, 这时以(a+b)/2 代替 a; 反复执行步骤 2 和 3,直到区间长度缩小到允许的误差范围之 内,此时中点(a+b)/2 即为所求的根 设计思路: (一)二分法是指在整个算法中,让计算值无限趋近于根的值,利用 数学知识可知,当了两个点的结果异号时,函数的根就在这两个数之 间,利用二分法可以无限的把根的范围缩小,直到可以确定为止; (二)do-while 是循环语句,先执行一次指定的循环体语句,然后 判别表达式, 当表达式的值为非零 (真) 时, 返回重新执行循环语句, 如此反复,直到表达式的值等于 0(假)为止才结束。 (三)Void main()是声明函数,并且是对主函数的声明。题目所 给的范围是(-10,10) ,因此在声明函数中定义一个 a 和 b 来代替区 间的范围,而用 c 来代指中间指也是最后的结果,在这个程序中 a、 b、c 都是随着范围不断变化的变量。如果(-10,10)的范围过大,

就需要循环语句来缩小区间范围, 即 a=c 或 b=c。 当函数值在 (-10,10) 中任意一点取得 0 时,就正是我们所要的结果。循环条件是当区间 a 和 b 的函数值小于精度 0.01。 运行效果截图:

附源程序如下: #include “stdio.h” float f(float x) { float y; y=2*x*x*x-4*x*x+3*x-6; return y; } void main() { float a=-10,b=10,c;

do{c=f((a+b)/2); if(c==0) break; if(c*f(a)>0) a=c; else b=c; } while(f(b)*f(a)

题目四 题目描述:编写程序,给定一个整数 i,请求出另一个整数 j,使 i 和 j 在用 8 位二进制表示时互为逆序。例如:给定 i=3 时,应得到 j=192(3 的二进制为:00000011,192 的二进制为 11000000) 。 提示: ① 十进制整数转换为二进制整数用“除 2 求余”法。 ② 二进制整数转换为十进制整数用“按权相加”法。

设计思路: (一)二进制整数转化为十进制整数用“按权相加”法 (二)二十进制整数转化为二进制整数用“除 2 求余” ,用&转化。

(三)运算符:是指右移一位,

运行效果截图: 附源程序如下:#include “stdio.h” void main() { int i,j,s=1,a; printf(“请输入一个整数 i: ”); scanf(“%d”,&i); for(j=0;j

printf(“%d ”,(a>1) | (a>>3) | (a>>5) | (a>>7)); }

题目五 题目描述:编写程序,抓交通肇事犯。 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没 有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相 同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位 数学家,他说:四位的车号刚好是一个整数的平方。根据以上线索求 出车号。 提示: ① 按照题目的要求,造出一个前两位数相同、后两位数相同且相互 间又不同的整数,然后判断该整数是否是另一个整数的平方。 ② 用穷举法解此题。穷举法是最简单、最常见的一种程序设计方法, 它充分利用了计算机处理的高速特征。穷举法的关键是要确定穷 举的范围,既不能过分扩大穷举的范围,也不能过分缩小穷举的 范围,否则程序的运行效率会很低,或有可能遗漏正确的结果而 产生错误。

(二)此题需要满足三个条件:①前两个数相同,后两个数相同;② 前后两数分别不相同;③这个数是一个整数的平方。需要每个条件都 满足,if 才为真。 (三)主要思路是穷举。穷举是指在适当的范围内举出一个数。 运 行 效 果 截 图 :

附源程序如下: #include void main() { int a,b; for(a=32;a

{ b=a*a; if(b/1000==b%1000/100 b%100!=(b/1000)*10+b%1000/100) printf(“The license plate is:%d ”,b); } } && b%100/10==b%10 &&

题目六 题 目 描 述 : 从 终 端 输 入 实 数 ex=1+x+x2/2!+x3/3!+?+xn/n!的值。 设计思路: 先输入一个 x 的值; 再设计一个子函数, 计算 1! , 2! , 3! ?n! 的值;之后用 sum 函数,和 pow 函数处理分子,用累加的方式进行分 子计算,并形成等式;最后输出结果。 x , 用 递 推 法 求

附源程序如下:#include “stdio.h” int f(int x,int n) { int i,m=0; for(i=0;i

for(i=0,s=0;f(x,i)

题目七 题目描述:打印出以下的杨辉三角形(要求打印出 10 行) 。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ?? ?? ??

设计思路: (一)二维数组主要用于处理多行的问题,而且第一行在数组之中是 第 0 行。 (二)杨辉三角有一个明显的特点:每一行的最后一个数字与第一个 数是相同的,此外,下 (三)一行的第二个数是由上一行的第一个数和第二个数相加之和, 以此类推。

定义指针是为了让整个程序不那么复杂。 运行效果截图:

附源程序如下: #include int main(void) { int a,(*p)=a,i,j; for(i=0;i

*(*(p+i)+0)=1; *(*(p+i)+i)=1; } for(i=2;i

题目八 题目描述:找出一个二维数组的“鞍点” ,即该位置上的元素在该行 上最大,在该列上最小。 提示: ① 一个二维数组可能有鞍点也可能没有鞍点,若有鞍点,则只有一 个。

② 准备两组测试数据: (1) 二维数组有鞍点: 9 80 205 90 -60 210 40

(2) 二维数组没有鞍点: 9 80 205 90 -60 210 40 1 89

③用 scanf 函数从键盘输入数组各元素的值,检查结果是否正确。如 果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而 不必用 scanf 函数。请同学们修改程序以实现之。

设计思路: (一) 先找出一行中值最大的元素,然后看它是不是该列中的最小值,由于 一个二维数组最多有一个鞍点,所以如果是则鞍点存在且它就是鞍 点,输出该鞍点;如果不是,则再找下一行的最 大数,以此类推。如果每一行的最大数都不是鞍点,则此数组无鞍点 (二) 在程序中,先令 a最大赋值给 maxi,在 for 循环的比较中,把

符合条件的行的最大值赋给 maxi,将每一次比较后的最大的列数赋 值给 maxj,从而找出 i 行最大的那个。 再假设那个数就是鞍点,将最大数和同列的数值相比,如果 maxj 不 是最小的,则不是鞍点,继续找。 (三)引入一个参数 flag=1,若不存在鞍点则 flag 为 0,若存在鞍 点则 flag 依旧为 1

运行效果截图:

附源程序如下:#include “stdio.h” #define S 80 #define T 80 void main() { int m,n,i,j,t,maxh,maxl,flag,a; printf(“请输入二维数组的行数 m 和列数 n: ”); scanf(“%d %d”,&m,&n); printf(“请输入二维数组的各个元素: ”);

for(i=0;ia) t=a;maxh=i;maxl=j; } for(i=0;i

a=%d “,maxh,maxl,a); }

题目九 题目描述:某班期终考试科目为高数 MT、英语 EN 和物理 PH,有 30

个人参加考试。为评定奖学金,要求统计并输出一个表格,表格内容 包括学好、各科分属、总分和平均分,并标出 3 门课均在 90 分以上 者(该栏标志输出为 Y,否则为 N) ,表格形式如下: NO MT EN PH SUM V >90 1 2 3 97 87 92 276 92 92 91 90 273 91 90 81 82 253 84 ...... N Y N

设计思路:由于是对 30 个学生的数据进行输入与统计,所以建立二 维数组, 根据各位置的条件来定义其内容, 第 8 个数据是字符型数据, 所以另设一数组进行存储,最后在将数据整合输出。

附源程序如下:#include ”stdio.h“ void main() { int i,j,sum,flag,a; printf(”请输入 30 个考生的三科成绩: “);

for(i=0;i90) flag=1; else flag=0; } a=sum; a=sum/3; if(flag=1) a='Y'; else a='N';

} printf(”NO MT EN PH SUM V >90 “); for(i=0;i

}

题目十 题目描述下面是一个 5*5 阶的螺旋方阵,试编程打印出此形式的 n*n (n

设计思路:定义一个 n*n 维数组存放该方阵,m 为该方阵的圈数,一个大循环中嵌套了

四个小循环,每一圈为一个大循环,第一个小循环按顺序写出第一行的数,第二个小循环按 顺序写出最后一列的数, 第三个小循环按顺序写出最后一行的数, 第四个小循环按顺序写出 第一列的数,再进行第二次大循环,循环完毕后再进行循环输出数组中的 n*n 个数,该螺旋 方阵就出来了。

附源程序如下: #include ”stdio.h“ void main() { int i, j, k = 0, m, n,a; printf(”请输入方阵行列数 n(n

k++; a=k; } for (j=i+1;j=i;j--) { k++; a =k; } for (j=n-i-2;j>=i+1;j--) { k++; a=k; } } for (i=0;i

printf(”%5d“, a); printf(” “); } } 附:

经过 C 语言实习,让我加深了对 C 语言的了解,而不只是单单 的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编 写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理 论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。 不过,通过几天的实习,逐渐积攒了一些经验,有些错误可以很快就 看出来。 这次实习有很大的收获,让我对 C 语言有了更深的认识,平时 在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技 能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣 就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技 能,让我对 C 语言有了浓厚的兴趣和更深层的认识。 C 语言是一个有序的学习, 学了最基本的替换, 然后扩展到循环, 嵌套, 条理很清楚, 不是一个零散的知识, 实际上所有的课程都如此, 不过通过实习我也知道了自己的不足,存在的很多问题。比如自己写 的写的小程序出了问题,不会解决了就叫老师帮忙,但是会养成一种 依赖的心理,碰到问题了个想到的是求助而不是自己独立解决,所以

以后要多多锻炼自己的信心和增加自己的能力, 争取做到老师不在身 边的时候也可以完成一些简单的程序编写与错误排除。 还有自己的基础知识不扎实, 遇到的问题, 没有很好的逻辑思维, 亲自编写一个陌生的程序的时候会有种无法下手的感觉, 找不到突破 口。通过实习,逐渐理清了顺序,对于简单的程序和一些相对比较繁 琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基 础知识掌握了,然后有条不紊的分析,一步一步理解,C 语言还是很 有意思的课程。 自己亲自动手编写程序让我增加了对 C 语言程序开发环境的了 解,在上课的时候老师就讲,学习C 语言最重要的是学习C 语言的 逻辑思维,不管以后从事什么行业,学习C 语言都对自己的职业很 有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的 编程工作可能不用 C 语言,但是拥有扎实的 C 语言基础是对工作很 有用的。 当初在初步接触 C 语言的时候,看着一堆“奇形怪状”的符号, 觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态! 感谢学校安排这次实习和老师的耐心讲解,让我学到了很多知 识,在实习过程中,同学之间的相互探讨,老师的循循善诱,最终让 我们达到了举一反三的效果,在学知识的同时,也增加了同学老师之 间的感情。希望以后还会有更多类似的实习课程,在有限的大学时间 内学到更多的实用技能,为以后的生活和工作打下一个良好的基础。

课程设计报告【篇4】

无线传感网络 课程设计报告

姓名:胡韶辉 胡衎

2017

学号:139074377 139074376 班级:物131班 指导教师:卫琳娜

年1月1日

无线传感网络课程设计

实验

一、无线传感网络点对点通信实验

1.实验内容

此实验为验证实验,根据实验步骤进行实验,观察结果是否与预期相符

2.实验步骤

用IAR8.1打开路径:C:UsersxsDesktop无线传感器网络课程设计无线传感网实验资料201604感知RF2-2530WSNV1.2代码和例子程序Light_SwitchIDELight_Switchsrf05_cc2530IarLight_Switch.eww分别编译并下载至两个节点上,打开节点,左右键选择/,选择完成后按中间键确认,观察LED灯显示情况。3.实验代码及分析

/* 功 能:查找字符在索引中的哪一个位置 */ /**************************************************************************************************/ static u16 lookforChar(u8 ch){ uint16 i;for(i = 0;i

if(fontList[i] == ch)

return i;} return i;}

//查中文

static u16 lookforChar16(u16 ch){ uint16 i,j;u16 temp16;for(i = 0;i

j = i*2;

temp16 = fontChar16List[j + 1];

temp16

temp16 |= fontChar16List[j];

if(temp16 == ch)

return i;} return i;}

/**************************************************************************************************/ /* 功 能:在指定位置输出8*8 */ /**************************************************************************************************/ static void LcdPutChar8(u8 x,u8 y,u8 ch){ LcdBuf[y][x] = ch;} /**************************************************************************************************/ /* 功 能:在指定位置输出16*16 */ /**************************************************************************************************/

/*static void LcdPutChar16(u8 x,u8 y,u16 ch){ LcdBuf[y][x] =(u8)ch;

//低前高后

LcdBuf[y+1][x] =(u8)(ch>>8);}

void LcdPutString8(u8 x,u8 y,u8 *ptr u8 len,u8 op){

u8 i,*tptr = ptr,xx = x,yy = y;u16 m;if(x > 95)

return;if(y > 1)

return;for(i = 0;i

m = lookforChar(*tptr ++);

if(m!= FONTLISTCOUNT)

{

m = m * 8;

}

else

return;

xx += 8;

if(xx > 88)

return;} } */

void LcdClearRam(void){ u8 i;for(i = 0;i

LcdBuf[0][i] = 0;} for(i = 0;i

LcdBuf[1][i] = 0;} } void LcdClearScrean(void){ LcdClearRam();PutPic((void *)LcdBuf);}

void LcdPutString16_8(u8 x,u8 y,u8 *ptr,u8 len,u8 op){ u8 i,j,*tptr = ptr,xx = x,yy = y;u16 m;if(xx > 95)

return;if(yy)

return;

for(i = 0;i

m = lookforChar(*tptr ++);

if(m!= FONTLISTCOUNT)

{

m = m * 16;

for(j = 0;j

{

if(op)

{

LcdPutChar8((xx + j),yy,font[m+j]);

LcdPutChar8((xx + j),yy+1,font[m+j+8]);

}

else

{

LcdPutChar8((xx + j),yy,~font[m+j]);

LcdPutChar8((xx + j),yy+1,~font[m+j+8]);

}

}

}

else

break;

xx += 8;

if(xx > 96)

return;} PutPic((void *)LcdBuf);} //显示16*16字符

void LcdPutString16_16(u8 x,u8 y,u8 *ptr,u8 len,u8 op){ u8 i,j,*tptr = ptr,xx = x,yy = y;u16 m;if(xx > 95)

return;if(yy)

return;

for(i = 0;i

m = lookforChar(*tptr ++);

if(m!= FONTLISTCOUNT)

{

m = m * 32;

for(j = 0;j

{

if(op)

{

LcdPutChar8((xx + j),yy,font[m+j]);

LcdPutChar8((xx + j),yy+1,font[m+j+16]);

}

else

{

LcdPutChar8((xx + j),yy,~font[m+j]);

LcdPutChar8((xx + j),yy+1,~font[m+j+16]);

}

}

}

else

break;

xx += 16;

if(xx > 80)

return;} PutPic((void *)LcdBuf);}

static void LcdPrint8(u8 x,u8 y,u8 vl,u8 op){ u8 j;u16 m;m = lookforChar(vl);if(m!= FONTLISTCOUNT){

m = m * 16;

for(j = 0;j

{

if(op)

{

LcdPutChar8((x + j),y,font[m+j]);

LcdPutChar8((x + j),y+1,font[m+j+8]);

}

else

{

LcdPutChar8((x + j),y,~font[m+j]);

LcdPutChar8((x + j),y+1,~font[m+j+8]);

}

} } } static void LcdPrint16(u8 x, u8 y, u16 val, u8 op){ u8 j;u16 m;m = lookforChar16(val);if(m!= fontChar16ListCount)

{

m = m * 32;

for(j = 0;j

{

if(op)

{

LcdPutChar8((x + j),y,fontChar16[m+j]);

LcdPutChar8((x + j),y+1,fontChar16[m+j+16]);

}

else

{

LcdPutChar8((x + j),y,~fontChar16[m+j]);

LcdPutChar8((x + j),y+1,~fontChar16[m+j+16]);

}

}

} }

void LcdPutDispBuf(u8 x,u8 y,OledCodeDataType *ptr,u8 op){ u8 tcount = x;OledCodeDataType *tptr = ptr;u16 temp16;if(x > 88)

return;if(y > 1)

return;while((*tptr!= ' ')&&(tcount

if(*tptr

//显示ASIC码

{

}

else //显示汉字

{

LcdPrint8(tcount,y,*tptr,op);tptr ++;tcount += 8;

temp16 = tptr[1];temp16

tcount += 16;

} } PutPic((void *)LcdBuf);}

//实现中英文混合显示

void LcdPutDisp(u8 x,u8 y,OledCodeDataType *ptr,u8 op){ u8 tcount = x;OledCodeDataType *tptr = ptr;u16 temp16;if(x > 88)

return;if(y > 1)

return;while((*tptr!= ' ')&&(tcount

if(*tptr

{

LcdPrint8(tcount,y,*tptr,op);

tptr ++;

tcount += 8;

}

else

//显示汉字

{

temp16 = tptr[1];

temp16

temp16 |= tptr[0];

LcdPrint16(tcount,y,temp16,op);

tptr += 2;

tcount += 16;

} } PutPic((void *)LcdBuf);} //从右往左输出一组字符并移运显示

void LcdPutScDispRtoL(OledCodeDataType *ptr,u8 op,u16 dl){ OledCodeDataType *tptr = ptr;u16 temp16;// LcdClearRam();

//显示ASIC

while(*tptr!= ' '){

if(*tptr

//显示ASIC

{

memcpy(LcdBuf[0],&LcdBuf[0][8],88);

memcpy(LcdBuf[1],&LcdBuf[1][8],88);

LcdPrint8(88,0,*tptr,op);

tptr ++;

}

else

//显示汉字

{

memcpy(LcdBuf[0],&LcdBuf[0][16],80);

memcpy(LcdBuf[1],&LcdBuf[1][16],80);

temp16 = tptr[1];

temp16

temp16 |= tptr[0];

LcdPrint16(80,0,temp16,op);

tptr += 2;

}

PutPic((void *)LcdBuf);

LcdDelay(dl);} }

void LcdPutScDispRtoL12(OledCodeDataType *ptr,u8 op,u16 dl){ OledCodeDataType *tptr = ptr;u16 i,temp16;for(i = 0;i

if(*tptr

//显示ASIC码

{

memcpy(LcdBuf[0],&LcdBuf[0][8],88);

memcpy(LcdBuf[1],&LcdBuf[1][8],88);

LcdPrint8(88,0,*tptr,op);

tptr ++;

i ++;

}

else

//显示汉字

{

memcpy(LcdBuf[0],&LcdBuf[0][16],80);

memcpy(LcdBuf[1],&LcdBuf[1][16],80);

temp16 = tptr[1];

temp16

temp16 |= tptr[0];

LcdPrint16(80,0,temp16,op);

tptr += 2;

i +=2;

}

PutPic((void *)LcdBuf);

LcdDelay(dl);} }

//从左往右

void LcdPutScDispLtoR12(OledCodeDataType *ptr,u8 op,u16 dl){ OledCodeDataType *ttptr,*tptr = ptr;u16 temp16;u8 i,len,tempbuf[2][96];

len = 12;

tptr = ptr+11;for(i = 0;i

if(*(tptr)

ASIC码

{

memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);

memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);

memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);

memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);

LcdPrint8(0,0,*tptr,op);

tptr--;

i ++;

}

else

//显示汉字

{

memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);

memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);

memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);

memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);

ttptr = tptr;

//显示

temp16 = *ttptr;

temp16

ttptr = tptr-1;

temp16 |= *ttptr;

LcdPrint16(0,0,temp16,op);

tptr-= 2;

i += 2;

}

PutPic((void *)LcdBuf);

LcdDelay(dl);} } void LcdPutScString(OledCodeDataType *ptr,u8 op,u8 rl,u16 dl){

switch(rl){

case LIFT_SC:

LcdPutScDispLtoR12(ptr,op,dl);

break;

case RIGHT_SC:

LcdPutScDispRtoL12(ptr,op,dl);

break;

default:break;

} }

void LcdPutPic(u8 x, u8 y,u8 w,u8 h,OledCodeDataType *ptr,u8 op){ u8 i;OledCodeDataType *tptr = ptr;if((x > 95)||((x + w)> 96))

return;if((y > 1)||((y + h)> 2))

return;

for(i = 0;i

{

if(op)

{

LcdBuf[y][x + i] = *tptr;

if(h == 2)

LcdBuf[y+1][x + i] = *(tptr+w);

tptr ++;

}

else

{

LcdBuf[y][x + i] = ~*tptr;

if(h == 2)

LcdBuf[y+1][x + i] = ~*(tptr+w);

tptr ++;

} } PutPic((void *)LcdBuf);}

//整屏滑动显示

void LcdPutScPic(OledCodeDataType *ptr, u8 op,u8 qp,u16 dl){ u8 i,j;u8 tempbuf[2][96];if(qp){

for(i = 0;i

{

tempbuf[0][i] = *ptr++;

}

for(i = 0;i

{

tempbuf[1][i] = *ptr++;

}

} else {

for(i = 0;i

{

tempbuf[0][i] = ~*ptr++;

}

for(i = 0;i

{

tempbuf[1][i] = ~*ptr++;

}

}

switch(op){

case RIGHT_SC:

//右边

for(i = 0;i

for(j = 0;j

{

LcdBuf[0][95-j] = LcdBuf[0][83j];

}

for(j = 0;j

{

LcdBuf[0][11-j] = tempbuf[0][95j];

}

for(j = 0;j

{

tempbuf[0][95-j] = tempbuf[0][83j];

}

PutPic((void *)LcdBuf);

} LcdDelay(dl);break;case LIFT_SC:

//左边

for(i = 0;i

for(j = 0;j

{

LcdBuf[0][j] = LcdBuf[0][j + 12];

LcdBuf[1][j] = LcdBuf[1][j + 12];

}

for(j = 0;j

{

LcdBuf[0][95-j] = tempbuf[0][11-j];

LcdBuf[1][95-j] = tempbuf[1][11-j];

}

for(j = 0;j

{

tempbuf[0][j] = tempbuf[0][j+12];

tempbuf[1][j] = tempbuf[1][j+12];

}

PutPic((void *)LcdBuf);

} LcdDelay(dl);break;default:

break;} }

void LcdPutString16_8_R(u8 *ptr,u8 op){ u8 i,x=0;

for(i=0;i

此实验室实现两个节点间的通信,可以输出中文或英文,或中英文混合输出。其主要原理是通过ASIC将中英文转换,通过字符串的拼凑输出。

实验

二、光照传感器实验

1.实验内容

1.了解光照采集的原理

2.学习CDS 光照传感器从而掌握光照传感器的原理 3.掌握“传感器节点板”模块的原理和使用方法。2.实验步骤

第一步:把“代码和例子程序Zigbee2007 多传感器”内文件夹 “ZStack-CC2530-2.2.0-1.3.0MS”“”复制至 IAR 安装盘根目录(如 C: Texas Instruments)下。使用 IAR7.51 打开“ProjectszstackSamplesSampleAppCC2530 DB”中工程文件“SampleApp.eww”。

第二步:打开工程后选择对应的设备类型 打开工程后如下右图所示选择当前要烧写设备的类型。

打开后的工程文件 工程名称 ZigBee 网络功能 CC2530-WSN 节点功能 CoordinatorEB-Pro 协调器 网关 RouterEB-Pro 路由器 路由器节点、传感器节点 EndDeviceEB-Pro 终端节点 传感器节点

第三步:编译工程并下载到目标板。点击菜单 Project,选择“Rebuild All”,等待一会儿工程文件编译完成。等 待一会儿工程文件编译完成把仿真器与网关通过仿真器下载线连接起来。确保仿 真器与计算机、仿真器与网关底板连接正确,ZigBee 无线模块正确地插在网关 底板后。点击菜单 Project,选择“Debug”,或点击如下图标,等待一会儿即完成程 序下载 重复进行第二步和第三步,将“RouterEB-Pro”设备对应的程序下载到带传 感器模块的传感器节点底板中(SMBD-V11-1)第四步:修改 IEEE 地址。在物理地址烧写软件中首先通过“Read IEEE”把物 理地址(IEEE 地址)读出来,如果节点物理地址为“0XFF FF FF FF FF FF FF FF” 或在网络中有相同地址,则需要通过“Write IEEE”修改 ZigBee 网络节点的物 理地址,在此例中,我们把网关的物理地址修改“0x31,0x30,0x30,0x30,0x30,0x30, 0x30,0x30”。按照第二步至第四步的方法下载传感器节点模块的程序,选择 “RouterEB”或“EndDevice”,如有多组在同一实验室进行实验,请修改为各 不相同的 IEEE 地址。第五步:获取和查看光照传感器数据 用 USB 线连接上 PC 机跟网关,打开“代码和例子程序Zigbee2007 多传感 器无线龙 ZigBee 演示软件 V1.21(串口用)”目录下“无线龙 ZigBee 演示软件 V1.21(串口用).exe”软件。通过设备管理器查看对应设备的串口号是多少,如图所示为 COM3。在监控 软件中选择“COM 端口”COM3,波特率:38400,点击“打开串口”。正确打开串口后,选择网络拓扑图,确保网关与计算机的正确连接。3.实验代码与分析

case 4://普通温度、光敏、蜂鸣器 if(DispState == 0){ LcdPutString16_8(0, 0,(void*)“ Temp/Light ”, 12 , 1);} else if(DispState == 1){ temp = ReadTc77();//读取温度 sprintf(msg,“TEMP:%2d ”,temp);LcdPutString16_8(0, 0,(void*)msg, 12 , 1);} else if(DispState == 2)//读取光照 { temp = ReadSensorAdc(1);sprintf(msg,“Light:%03d ”,temp);LcdPutString16_8(0, 0,(void*)msg, 12 , 1);}

break;通过 ADC 读取光敏传感器值:

temp = ReadSensorAdc(1);//读取光敏传感器值

ReadSensorAdc 子函数位于“ ComponentshaltargetCC2530EB”目录下的 Sensor.c 文件中

temp = HalAdcRead(channel,HAL_ADC_RESOLUTION_8);channel 光敏传感器对应的 AD 通道 P01

HAL_ADC_RESOLUTION_8 采集分辨率 8Bit

ADC 采 集 子 函 数 在 在 “ComponentshaltargetCC2530EB ” 目 录 下 的

“ hal_adc.c”文件

/****************************************************************************** ******************** * @fn HalAdcRead * * @brief Read the ADC based on given channel and resolution * * @param channelthe resolution of the value * * @return 16 bit value of the ADC in offset binary format.* Note that the ADC is “bipolar”, which means the GND(0V)level is mid-scale.******************************************************************************* *******************/ uint16 HalAdcRead(uint8 channel, uint8 resolution){ int16 reading = 0;#if(HAL_ADC == TRUE)uint8 i, resbits;uint8 adctemp;volatile uint8 tmp;uint8 adcChannel = 1;/* * If Analog input channel is AIN0..AIN7, make sure corresponing P0 I/O pin is enabled.The code * does NOT disable the pin at the end of this function.I think it is better to leave the pin * enabled because the results will be more accurate.Because of the inherent capacitance on

* pin, it takes time for the voltage on the pin to charge up to its steady-state level.If * HalAdcRead()has to turn on the pin for every conversion, the results may show a lower voltage * than actuality because the pin did not have time to fully charge.*/ if(channel >= 8;break;case HAL_ADC_RESOLUTION_10: reading >>= 6;break;case HAL_ADC_RESOLUTION_12: reading >>= 4;break;case HAL_ADC_RESOLUTION_14: default:

HAL_ADC_DEC_BITS |

break;} #else // unused arguments(void)channel;(void)resolution;#endif return((uint16)reading);}

4.实验总结

通过串口助手,配置正确的串口号和波特率,填入测试的数据指令,点击发送就可以获取网关返回的读取到节点的数据。

实验

三、气压传感器实验

1.实验内容

1.了解气压采集的原理

2.学习MPX5010 气压传感器从而掌握气压传感器的原理 3.掌握“ 传感器节点板” 模块的原理和使用方法。2.实验步骤

同“实验二十四 光照传感器实验 实验步骤第一步至第四步”

第五步:获取和查看大气气压传感器数据用 USB 线连接上 PC 机跟网关,打开“ 软件工具及驱动无线龙 ZigBee 演示软件 V1.11”目录下“无线龙 ZigBee 演示软件 V1.11.exe”软件。通过设备管理器查看对应设备的串口号是多少,如图所示为 COM3。在监控软件中选择“ COM 端口” COM3,波特率: 38400,点击“打开串口”。在 RSS 曲线部分中的下拉选择框中选择节点压力(如下图),鼠标左键单击选中要查看的节点模块。点击“开始”按钮,就可开始显示节点空气压力的曲线了(注:这时“开始”

按钮将变为“关闭”按钮)。为了使显示曲线效果明显,可以通过电扇吹气方式来达到明显效果。点击“关闭”按钮,则曲线停止,但曲线不会消失,这时“关闭”按钮将变为“开始”按钮,这时在点击“开始”按钮会弹出一格对话框,选择“是”则不清空曲线,继续在图上画曲线。选择“否”则清空曲线,再 在图上画曲线。点击“保存”按钮,可将曲线图以 RSS 格式的数据保存在电脑上,点击“载入”按钮,可以载入保存了曲线数据的 RSS 文件,将曲线显示在曲线图上。3.实验代码与分析

传感器采集的函数在 void SampleApp_MessageMSGCB(afIncomingMSGPacket_t *pkt)中

if((RfRx.RXDATA.HeadCom[1] == 'P')&&(RfRx.RXDATA.HeadCom[2] == 'R'))//压力传感器 { if(SensorNum == 5)//压力传感器板 { memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);temp = ReadSensorAdc(0);RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;temp = temp%100;RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;RfHaveTxDara = 1;} } //调用子函数 ReadSensorAdc 完成读取

//---------------------------//Read Sensor ADC value //读取 AD 值 //输入:通道名

//返回: 8 位 AD 值

//---------------------------INT8U ReadSensorAdc(INT8U channel){ INT8U temp;temp = HalAdcReadSen(channel,HAL_ADC_RESOLUTION_8);return temp;} 通过 ADC 读取大气压力传感器值:

temp = HalAdcReadSen(channel,HAL_ADC_RESOLUTION_8);/读取空气压力传感器值 channel 气体压力传感器对应的 AD 通道

HAL_ADC_RESOLUTION_8 采集分辨率 8Bit

ADC 采 集 子 函 数 在 在 “ComponentshaltargetCC2530EB ” 目 录 下 的 “ hal_adc.c”文件

/****************************************************************************** ******************** * @fn HalAdcRead * * @brief Read the ADC based on given channel and resolution * * @param channelthe resolution of the value * * @return 16 bit value of the ADC in offset binary format.* Note that the ADC is “bipolar”, which means the GND(0V)level is mid-scale.******************************************************************************* *******************/ uint16 HalAdcRead(uint8 channel, uint8 resolution)int16 reading = 0;#if(HAL_ADC == TRUE)uint8 i, resbits;uint8 adctemp;volatile uint8 tmp;uint8 adcChannel = 1;/* * If Analog input channel is AIN0..AIN7, make sure corresponing P0 I/O pin is enabled.The code * does NOT disable the pin at the end of this function.I think it is better to leave the pin * enabled because the results will be more accurate.Because of the inherent capacitance on the * pin, it takes time for the voltage on the pin to charge up to its steady-state level.If * HalAdcRead()has to turn on the pin for every conversion, the results may show a lower voltage * than actuality because the pin did not have time to fully charge.*/ if(channel >= 8;break;case HAL_ADC_RESOLUTION_10: reading >>= 6;break;case HAL_ADC_RESOLUTION_12: reading >>= 4;break;case HAL_ADC_RESOLUTION_14: default: break;} #else // unused arguments(void)channel;(void)resolution;#endif return((uint16)reading);} 4.实验总结

打开“ EXPLORERF-CC2530 增配传感器光盘 V1.1软件工具及驱动” 中工具 “ 串口调试助手.exe”配置正确的串口号和通讯波特率,填入测试的数据指令,点击发送就可以获取网关返回的读取到节点的数据。

实验

四、综合实验

1.实验原理

以一LED灯,LED显示屏作为工具。当LED灯显示时,LED显示屏上也显示信息灯亮。将LED灯作为协调器,LED显示屏作为终端,当LED灯亮时,会通过组网将信息传给终端,即此时LED显示屏显示灯亮,即LED显示屏给予LED灯亮的一个信息反馈。2.实验步骤

选择烧取设备的类型为CoordinatorEB-pro, 点击菜单 Project,选择“ Rebuild All”,等待一会儿工程文件编译完成。等待一会儿工程文件编译完成把仿真器与网关通过仿真器下载线连接起来。确保仿真器与计算机、仿真器与网关底板连接正确,ZigBee 无线模块正确地插在网关底板后。点击菜单 Project,选择“ Debug”,或点击如下图标,等待一会儿即完成程序下载.将烧取设备类型改为EndDeviceEB-pro,重复上述步骤。当LED亮时,此时显示屏也将有相应反应。4.实验代码

#include “OSAL.h” #include “ZGlobals.h” #include “AF.h” #include “aps_groups.h” #include “ZDApp.h”

#include “SampleApp.h” #include “SampleAppHw.h”

#include “OnBoard.h”

/* HAL */ #include “hal_lcd.h” #include “hal_led.h” #include “hal_key.h” #include “string.h” #include #include “MT_UART.h” #include “HAL_ADC.h”

#include “sensor.h” #include “SHT10.h” #include “ugOled9616.h” #include “LcdDisp.h” #include “TMP006.h” #include “hal_timer34.h” /********************************************************************* * MACROS */

/********************************************************************* * CONSTANTS */ /********************************************************************* * TYPEDEFS */

/********************************************************************* * GLOBAL VARIABLES */

// This list should be filled with Application specific Cluster nst cId_t SampleApp_ClusterList[SAMPLEAPP_MAX_CLUSTERS] = { SAMPLEAPP_PERIODIC_CLUSTERID, SAMPLEAPP_FLASH_CLUSTERID };

const SimpleDescriptionFormat_t SampleApp_SimpleDesc = { SAMPLEAPP_ENDPOINT, // int Endpoint;SAMPLEAPP_PROFID, // uint16 AppProfId[2];SAMPLEAPP_DEVICEID, // uint16 AppDeviceId[2];SAMPLEAPP_DEVICE_VERSION, // int AppDevVer:4;SAMPLEAPP_FLAGS, // int AppFlags:4;SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters;(cId_t *)SampleApp_ClusterList, // uint8 *pAppInClusterList;SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters;(cId_t *)SampleApp_ClusterList // uint8 *pAppInClusterList;};

// This is the Endpoint/Interface description.It is defined here, but // filled-in in SampleApp_Init().Another way to go would be to fill // in the structure here and make it a “const”(in code space).The // way it's defined in this sample app it is define in RAM.endPointDesc_t SampleApp_epDesc;

/********************************************************************* * EXTERNAL VARIABLES */ extern unsigned char SensorNum;extern INT8U DispNum;unsigned char DispState = 0;unsigned char Relay1State = 0;unsigned char Relay2State = 0;extern INT16U LEDDispNum;/********************************************************************* * EXTERNAL FUNCTIONS */

/********************************************************************* * LOCAL VARIABLES */ uint8 SampleApp_TaskID;// Task ID for internal task/event processing // This variable will be received when // SampleApp_Init()is called.devStates_t SampleApp_NwkState;

uint8 SampleApp_TransID;// This is the unique message ID(counter)uint8 *ieeeAddr;//物理地址

unsigned char LCDUPDATA = 0;//LCD刷新标致位 unsigned char Shakeflag = 0;unsigned char InfraredState = 0;unsigned char InfraredCount = 0;unsigned char InfraredInitFlag = 0;unsigned char HallState = 0;union f1{ uint8 RxBuf[32];struct UARTCOMBUF { uint8 Head;//头 uint8 HeadCom[3];//命令头 uint8 Laddr[8];//物理地址 uint8 Saddr[2];//网络地址 uint8 DataBuf[16];//数据缓冲区 uint8 CRC;//校验位

uint8 LastByte;//帧尾 }RXDATA;}UartRxBuf;//从串口接收到的数据帧

union e{ uint8 TxBuf[32];struct UARTBUF { uint8 Head;//头 uint8 HeadCom[3];//命令头 uint8 Laddr[8];//物理地址 uint8 Saddr[2];//网络地址 uint8 DataBuf[16];//数据缓冲区 uint8 CRC;//校验位

uint8 LastByte;//帧尾 }TXDATA;}UartTxBuf;//从串口发送数据帧

union h{ uint8 RxBuf[32];struct RFRXBUF { uint8 Head;//头

uint8 HeadCom[3];//命令头 uint8 Laddr[8];uint8 Saddr[2];uint8 DataBuf[16];//数据缓冲区

uint8 CRC;//校验位

uint8 LastByte;//帧尾 }RXDATA;}RfRx;//无线接收缓冲区

union j{ uint8 TxBuf[32];struct RFTXBUF { uint8 Head;//头

uint8 HeadCom[3];//命令头

uint8 Laddr[8];uint8 Saddr[2];uint8 DataBuf[16];//数据缓冲区

uint8 CRC;//校验位

uint8 LastByte;//帧尾 }TXDATA;}RfTx;//无线发送缓冲区

uint16 Ultrasonic_Count;//超声波计数

/***************************************************************************** void WaitUs(uint16 microSecs)

延时uS函数.*****************************************************************************/ void WaitUs(uint16 microSecs){ while(microSecs--){ /* 32 NOPs == 1 usecs */ asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);} }

/***************************************************************************** uint8 SendData(uint16 addr, uint8 *buf, uint8 Leng)

发送一组数据.*****************************************************************************/ uint8 SendData(uint16 addr, uint8 *buf, uint8 Leng){ afAddrType_t SendDataAddr;

SendDataAddr.addrMode =(afAddrMode_t)Addr16Bit;SendDataAddr.endPoint = SAMPLEAPP_ENDPOINT;SendDataAddr.addr.shortAddr = addr;if(AF_DataRequest(&SendDataAddr, &SampleApp_epDesc, 2,//SAMPLEAPP_PERIODIC_CLUSTERID, Leng, buf, &SampleApp_TransID, AF_DISCV_ROUTE, // AF_ACK_REQUEST, AF_DEFAULT_RADIUS)== afStatus_SUCCESS){

return 1;} else {

return 0;// Error occurred in request to send.} } case 1://DAC 输出

if(DispState == 0)

{

DAC_OUT_CON(0x07ff, 0x07ff);

LcdPutString16_8(0, 0,(void*)“ DAC-OUT ”, 12 , 1);

}

else if(DispState == 1)

{

DAC_OUT_CON(0x03ff, 0x03ff);

sprintf(msg,“OUT:0.5MA/V ”,temp);

LcdPutString16_8(0, 0,(void*)msg, 12 , 1);

}

else if(DispState == 2)

{

DAC_OUT_CON(0x0Bff, 0x0Bff);

sprintf(msg,“OUT:1.5MA/V ”,temp);

LcdPutString16_8(0, 0,(void*)msg, 12 , 1);

}

break;case 2://高亮LED控制

if(DispState == 0)

{

ChangT3Cmp0Val(0xff);

P1_6 = 0;

LcdPutString16_8(0, 0,(void*)“ LED-LIGHT ”, 12 , 1);

}

else if(DispState == 1)

{

ChangT3Cmp0Val(230);

LcdPutString16_8(0, 0,(void*)“LEVEL:10% ”, 12 , 1);

}

else if(DispState == 2)

{

ChangT3Cmp0Val(25);

LcdPutString16_8(0, 0,(void*)“LEVEL:90% ”, 12 , 1);

}

break;

} void SampleApp_Init(uint8 task_id){ SampleApp_TaskID = task_id;SampleApp_NwkState = DEV_INIT;SampleApp_TransID = 0;

// Device hardware initialization can be added here or in main()(Zmain.c).// If the hardware is application specificThis app will handle all key events RegisterForKeys(SampleApp_TaskID);

#ifdef WXL_COORD

MT_UartRegisterTaskID(SampleApp_TaskID);

#endif } void SampleApp_Init(uint8 task_id){ SampleApp_TaskID = task_id;SampleApp_NwkState = DEV_INIT;SampleApp_TransID = 0;

// Device hardware initialization can be added here or in main()(Zmain.c).// If the hardware is application specificThis app will handle all key events RegisterForKeys(SampleApp_TaskID);

#ifdef WXL_COORD

MT_UartRegisterTaskID(SampleApp_TaskID);

#endif }

/********************************************************************* * @fn SampleApp_ProcessEvent * * @brief Generic Application Task event processor.This function * is called to process all events for the task.Events * include timers, messages and any other user defined events.* * @param task_idevents to process.This is a bit map and can * contain more than one event.* * @return none */ uint16 SampleApp_ProcessEvent(uint8 task_id, uint16 events){ afIncomingMSGPacket_t *MSGpkt;uint16 temp1;

#if(defined(WXL_ROUTER)|| defined(WXL_RFD))//ROUTER OR RFD uint16 SrcSaddr;#endif

(void)task_id;// Intentionally unreferenced parameter

if(events & SYS_EVENT_MSG){

MSGpkt =(afIncomingMSGPacket_t *)osal_msg_receive(SampleApp_TaskID);

while(MSGpkt)

{

switch(MSGpkt->hdr.event)

{

// Received when a key is pressed

case KEY_CHANGE:

SampleApp_HandleKeys(((keyChange_t *)MSGpkt)->state,((keyChange_t *)MSGpkt)->keys);

break;

// Received when a messages is received(OTA)for this endpoint

case AF_INCOMING_MSG_CMD:

SampleApp_MessageMSGCB(MSGpkt);

break;

// Received whenever the device changes state in the network

case ZDO_STATE_CHANGE:

SampleApp_NwkState =(devStates_t)(MSGpkt->hdr.status);

if((SampleApp_NwkState == DEV_ZB_COORD)

||(SampleApp_NwkState == DEV_ROUTER)

||(SampleApp_NwkState == DEV_END_DEVICE))

{

HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);#ifdef WXL_COORD

ugOled9616int();LcdPutString16_8(0, 0,(void*)“ COORD ”, 12 , 1);

//osal_start_timerEx(SampleApp_TaskID,//SAMPLEAPP_RUN__EVT,//SAMPLEAPP_RUN_TIMEOUT);//启动超时定时器

#endif

#ifdef WXL_RFD

memset(RfTx.TxBuf,'x',32);

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'J';

RfTx.TXDATA.HeadCom[1] = 'O';

RfTx.TXDATA.HeadCom[2] = 'N';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

SrcSaddr = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = SrcSaddr;RfTx.TXDATA.Saddr[1] = SrcSaddr>>8;

RfTx.TXDATA.DataBuf[0] = 'R';

RfTx.TXDATA.DataBuf[1] = 'F';

RfTx.TXDATA.DataBuf[2] = 'D';

NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]);temp1 = NLME_GetCoordShortAddr();RfTx.TXDATA.DataBuf[11] =(unsigned char)(temp1>>8);RfTx.TXDATA.DataBuf[12] =(unsigned char)(temp1);

RfTx.TXDATA.DataBuf[13] = SensorNum;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送自己的节点信息到主机

if((SensorNum == 1)||(SensorNum == 2))//点阵屏或数码管屏

{

init_T3();//打开定时器3开始扫描

}

else if(SensorNum == 9)//振动传感器

{

IEN1 |= 0x20;//Port 0 interrupt enable

}

osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_1000MS_TIMEOUT);//每秒检测一次红外传感器 #endif

#ifdef WXL_ROUTER

memset(RfTx.TxBuf,'x',32);

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'J';

RfTx.TXDATA.HeadCom[1] = 'O';

RfTx.TXDATA.HeadCom[2] = 'N';

RfTx.TXDATA.Saddr[1] SrcSaddr>>8;

temp1 NLME_GetCoordShortAddr();RfTx.TXDATA.DataBuf[11](unsigned char)(temp1>>8);RfTx.TXDATA.DataBuf[12](unsigned char)(temp1);

RfTx.TXDATA.DataBuf[13] SensorNum;

RfTx.TXDATA.LastByte = '*';

息到主机

if((SensorNum == 2))//点阵屏或数码管屏

ieeeAddr = NLME_GetExtAddr();memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);SrcSaddr = NLME_GetShortAddr();RfTx.TXDATA.Saddr[0] = SrcSaddr;= RfTx.TXDATA.DataBuf[0] = 'R';RfTx.TXDATA.DataBuf[1] = 'O';RfTx.TXDATA.DataBuf[2] = 'U';NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]);= = = = SendData(0x0000, RfTx.TxBuf, 32);//发送自己的节点信== 1)||(SensorNum { init_T3();//打开定时器3开始扫描 } else if(SensorNum == 9)//振动传感器 { IEN1 |= 0x20;//Port 0 interrupt enable }

osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_1000MS_TIMEOUT);//每秒检测一次红外传感器

#endif

}

break;

case SPI_INCOMING_ZTOOL_PORT:

UartRxComCallBack();//串口收到一帖数据的处理

break;

default:

break;

}

// Release the memory

osal_msg_deallocate((uint8 *)MSGpkt);

// NextThis event is generated by a timer //(setup in SampleApp_Init()).if(events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT)//发送数据超时

{

if(SensorNum == 8)

{

if(InfraredInitFlag == 0)//人体红外传感器需要初始化20秒

{

if(++InfraredCount > 20)

{

InfraredInitFlag = 1;

}

}

else

{

if(P0_0 == 1)

{

if(InfraredState == 0)

{

InfraredState = 1;

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'A';

RfTx.TXDATA.HeadCom[1] = 'I';

RfTx.TXDATA.HeadCom[2] = 'N';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

temp1 = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = temp1;

RfTx.TXDATA.Saddr[1] = temp1>>8;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送报警数据

}

}

else

{

InfraredState = 0;

} if(DispState!= 0)//每一秒自动采集一次传感器

{

LCDUPDATA = 1;

}

}

}

else if(SensorNum == 9)//振动传感器

{

if(Shakeflag)

{

Shakeflag = 0;

P0IEN |= 0x01;//Port 0, inputs 0 interrupt enable.P0IFG &= 0xfe;//Clear any pending interrupts

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'A';

RfTx.TXDATA.HeadCom[1] = 'S';

RfTx.TXDATA.HeadCom[2] = 'H';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

temp1 = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = temp1;

RfTx.TXDATA.Saddr[1] = temp1>>8;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送报警数据

BEEPState2 = 2;} if(BEEPState2 == 1){

BEEPState2 = 2;

P1_4 = 1;} else if(BEEPState2 == 2){

BEEPState2 = 1;

P1_4 = 0;} } else if(SensorNum == 16)//霍尔传感器板 { if(P0_0 == 0){

if(HallState == 0)

{

HallState = 1;

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'A';

RfTx.TXDATA.HeadCom[1] = 'H';

RfTx.TXDATA.HeadCom[2] = 'A';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

temp1 = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = temp1;

RfTx.TXDATA.Saddr[1] = temp1>>8;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送报警数据

}

}

else

{

HallState = 0;

}

}

else if(SensorNum == 4)

{

if(DispState!= 0)//每一秒自动采集一次传感器

{

LCDUPDATA = 1;

}

if(BEEPState1 == 1)

{

BEEPState1 = 2;

P1_6 = 1;

}

else if(BEEPState1 == 2)

{

BEEPState1 = 1;

P1_6 = 0;

}

}

else if((SensorNum == 3)||(SensorNum == 5)||(SensorNum == 7)||(SensorNum == 10)||(SensorNum == 11)||(SensorNum == 13))

{

if(DispState!= 0)//每一秒自动采集一次传感器

{

LCDUPDATA = 1;

}

}

LCDDispFun();

// Setup to send message again in normal period(+ a little jitter)

osal_start_timerEx(SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_1000MS_TIMEOUT);

return(events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);} // Discard unknown events return 0;} void SampleApp_HandleKeys(uint8 shift, uint8 keys){(void)shift;// Intentionally unreferenced parameter

if(keys & HAL_KEY_UP){

P1_1 =!P1_1;

if(++DispState >= 3)DispState = 0;

LCDUPDATA = 1;} if(keys & HAL_KEY_DOWN){

P1_1 =!P1_1;

if(--DispState >= 200)DispState = 2;

LCDUPDATA = 1;} }

/********************************************************************* * LOCAL FUNCTIONS */

/********************************************************************* * @fn SampleApp_MessageMSGCB * * @brief Data message processor callback.This function processes * any incoming data-probably from other devices.So, based * on cluster ID, perform the intended action.* * @param none * * @return none */ void SampleApp_MessageMSGCB(afIncomingMSGPacket_t *pkt){ #ifdef WXL_COORD uint8 i;

memcpy(RfRx.RxBuf,pkt->cmd.Data,32);//读出无线按收到的数据

osal_stop_timerEx(SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT);//停止超时计数器

if((RfRx.RXDATA.Head == '&')&&(RfRx.RXDATA.LastByte == '*')){

memcpy(UartTxBuf.TxBuf,RfRx.RxBuf,32);

for(i=0;i

{

UartTxBuf.TXDATA.Laddr[i] = RfRx.RXDATA.Laddr[i];//长地址

}

for(i=0;i

{

UartTxBuf.TXDATA.Saddr[i] = RfRx.RXDATA.Saddr[1-i];//短地址

}

UartTxBuf.TXDATA.CRC = CheckUartData(&UartTxBuf.TxBuf[1],29);

HalUARTWrite(HAL_UART_PORT_0, UartTxBuf.TxBuf, 32);//从串口输出

} #endif

#if(defined(WXL_ROUTER)|| defined(WXL_RFD))//ROUTER OR RFD uint8 temp;uint16 temp1,temp2;uint8 RfHaveTxDara = 0;//无线有数据需要发送

ieeeAddr = NLME_GetExtAddr();memcpy(RfRx.RxBuf,pkt->cmd.Data,32);memset(RfTx.TxBuf,'x',32);switch(RfRx.RXDATA.HeadCom[0]){

case 'R'://读

if((RfRx.RXDATA.HeadCom[1] == 'A')&&(RfRx.RXDATA.HeadCom[2] 'S'))//读传感器

{

if(SensorNum == 4)//高精温湿度传感器

{

==

memcpy(RfTx.TxBuf, RfRx.RxBuf, 16);

if((RfRx.RXDATA.DataBuf[0] == 'G')&&(RfRx.RXDATA.DataBuf[1] == 'M'))//读光敏

{

temp = ReadSensorAdc(1);//显示值转换

RfTx.TXDATA.DataBuf[2] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[3] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[4] = temp%10 + 0x30;

RfHaveTxDara = 1;;

}

else if((RfRx.RXDATA.DataBuf[0] == 'W')&&(RfRx.RXDATA.DataBuf[1] == 'D'))//读温度

{ //WriteTc77(1);//唤醒温度传感器

//Sensor_Delay(10000);//必须延时后才能读

temp = ReadTc77();//读取温度

//WriteTc77(0);//温度传感器休眠

//显示值转换

RfTx.TXDATA.DataBuf[2] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[3] = temp%10 + 0x30;

RfHaveTxDara = 1;

}

}

}

else if((RfRx.RXDATA.HeadCom[1] == 'S')&&(RfRx.RXDATA.HeadCom[2] == 'H'))//读取高精温湿度传感器

{ // 读取的温湿度为16位浮点数,在上位机上转换。if(SensorNum == 3)//高精温湿度传感器 { memcpy(RfTx.TxBuf, RfRx.RxBuf, 16);SHT1X_INT();if((RfRx.RXDATA.DataBuf[0] == 'W')&&(RfRx.RXDATA.DataBuf[1] == 'D'))

{

temp1 = Read_SHT1X(3);

RfTx.TXDATA.DataBuf[2] =(uint8)(temp1>>8);

RfTx.TXDATA.DataBuf[3] =(uint8)(temp1&0xff);

RfHaveTxDara = 1;

}

else if((RfRx.RXDATA.DataBuf[0] == 'S')&&(RfRx.RXDATA.DataBuf[1] == 'D'))

{

temp1 = Read_SHT1X(5);

RfTx.TXDATA.DataBuf[2] =(uint8)(temp1>>8);

RfTx.TXDATA.DataBuf[3] =(uint8)(temp1&0xff);

RfHaveTxDara = 1;

}

}

}

else if((RfRx.RXDATA.HeadCom[1] == 'P')&&(RfRx.RXDATA.HeadCom[2] == 'R'))//压力传感器

{ if(SensorNum == 5)//压力传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(0);

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

RfHaveTxDara = 1;} }

else if((RfRx.RXDATA.HeadCom[1] == 'R')&&(RfRx.RXDATA.HeadCom[2] == 'A'))//雨滴传感器

{ if(SensorNum == 7)//雨滴传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(0);

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

RfHaveTxDara = 1;} } else if((RfRx.RXDATA.HeadCom[1] == 'A')&&(RfRx.RXDATA.HeadCom[2] == 'D'))//控制加速度传感器

{

if(SensorNum == 10)//加速度传感器板 { //P1_4 = 1;if(RfRx.RXDATA.DataBuf[0] == 'X')

{

temp = ReadSensorAdc(XOUT);

}

else if(RfRx.RXDATA.DataBuf[0] == 'Y')

{

temp = ReadSensorAdc(YOUT);

} else if(RfRx.RXDATA.DataBuf[0] == 'Z')

{

temp = ReadSensorAdc(ZOUT);

}

//P1_4 = 0;

memcpy(RfTx.TxBuf, RfRx.RxBuf, 15);RfTx.TXDATA.DataBuf[1] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[2] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[3] = temp%10 + 0x30;

RfHaveTxDara = 1;

}

}//end

else if((RfRx.RXDATA.HeadCom[1] == 'G')&&(RfRx.RXDATA.HeadCom[2] == 'A'))//可燃气体传感器 { if(SensorNum == 11)//可燃气体传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(0);

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

RfHaveTxDara = 1;} } else if((RfRx.RXDATA.HeadCom[1] == 'U')&&(RfRx.RXDATA.HeadCom[2] == 'L'))//超声波传感器 { if(SensorNum == 14)//超声波传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

P1_4 = 1;

WaitUs(20);

P1_4 = 0;

Ultrasonic_Count = 0;

while(!P0_0)//等待返回高电平 {

WaitUs(20);

if((++Ultrasonic_Count)>= 1000)//超时自动退出

{

break;

} }

Ultrasonic_Count = 0;while(P0_0)

{

WaitUs(20);

Ultrasonic_Count++;

if(Ultrasonic_Count >= 600)//超时退出

{

Ultrasonic_Count = 0;

break;

}

}

temp1 = Ultrasonic_Count;

if((temp1 > 1)&&(temp1

RfTx.TXDATA.DataBuf[0] = temp1/100 + 0x30;

temp = temp1%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

}

else

{

RfTx.TXDATA.DataBuf[0] = 'E';

RfTx.TXDATA.DataBuf[1] = '0';

}

RfHaveTxDara = 1;} }

else if((RfRx.RXDATA.HeadCom[1] == 'N')&&(RfRx.RXDATA.HeadCom[2] == 'S'))//读模块连接状态

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = pkt->LinkQuality;

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;temp %= 100;RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]);temp1 = NLME_GetCoordShortAddr();RfTx.TXDATA.DataBuf[11] =(INT8U)(temp1>>8);RfTx.TXDATA.DataBuf[12] =(INT8U)(temp1);

RfHaveTxDara = 1;

}//end 读模块连接状态 break;

case 'T'://测试

if((RfRx.RXDATA.HeadCom[1] == 'L')&&(RfRx.RXDATA.HeadCom[2] == 'D'))//LED测试

{

if(RfRx.RXDATA.DataBuf[0] == 'C')

{

if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '1'))

{

if(RfRx.RXDATA.DataBuf[3] == '1')

{

HalLedSet(HAL_LED_1, HAL_LED_MODE_ON);//开

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{

HalLedSet(HAL_LED_1, HAL_LED_MODE_OFF);//关

}

}

else if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '2'))

{

if(RfRx.RXDATA.DataBuf[3] == '1')

{

HalLedSet(HAL_LED_2, HAL_LED_MODE_ON);//开

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{

HalLedSet(HAL_LED_2, HAL_LED_MODE_OFF);//关

}

}

} else if(RfRx.RXDATA.DataBuf[0] == 'T'){ if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '1'))//控制LED1

{

if(RfRx.RXDATA.DataBuf[3] == '1')

{ HalLedSet(HAL_LED_1, HAL_LED_MODE_FLASH);

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{ HalLedSet(HAL_LED_1, HAL_LED_MODE_OFF);

}

}

else if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '2'))//控制LED2

{ if(RfRx.RXDATA.DataBuf[3] == '1')

{ HalLedSet(HAL_LED_2, HAL_LED_MODE_FLASH);

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{ HalLedSet(HAL_LED_2, HAL_LED_MODE_OFF);

}

}

}

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}//end LED测试

else if((RfRx.RXDATA.HeadCom[1] == 'D')&&(RfRx.RXDATA.HeadCom[2] == 'A'))//

{

if(SensorNum == 12)//DAC输出 { temp1 = RfRx.RXDATA.DataBuf[0];temp1

temp2 = RfRx.RXDATA.DataBuf[2];temp2

DAC_OUT_CON(temp1, temp2);

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;}

}//end DAC_OUT测试

else if((RfRx.RXDATA.HeadCom[1] == 'M')&&(RfRx.RXDATA.HeadCom[2] == 'O'))//

{

if(SensorNum == 15)//电机测试 {

if((RfRx.RXDATA.DataBuf[0] == 'M')&&(RfRx.RXDATA.DataBuf[1] == '1'))

{

if(RfRx.RXDATA.DataBuf[2] == '0')//停止

{

MOTOR_Con(1, 0x8F);

}

else if(RfRx.RXDATA.DataBuf[2] == '1')//正转

{

MOTOR_Con(1, 0x80);

}

else if(RfRx.RXDATA.DataBuf[2] == '2')//反转

{

MOTOR_Con(1, 0x88);

}

}

else if((RfRx.RXDATA.DataBuf[0] == 'M')&&(RfRx.RXDATA.DataBuf[1] == '2'))

{

if(RfRx.RXDATA.DataBuf[2] == '0')//停止

{

MOTOR_Con(2, 0x8F);

}

else if(RfRx.RXDATA.DataBuf[2] == '1')//正转

{

MOTOR_Con(2, 0x80);

}

else if(RfRx.RXDATA.DataBuf[2] == '2')//反转

{

MOTOR_Con(2, 0x88);

}

}

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

}//end MOTOR电机测试

else if((RfRx.RXDATA.HeadCom[1] == 'E')&&(RfRx.RXDATA.HeadCom[2] == 'D'))//点阵屏测试

{

if(SensorNum == 1)//点阵屏板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

if((RfRx.RXDATA.DataBuf[0] >= '0')&&(RfRx.RXDATA.DataBuf[0]

LCDUPDATA = 1;

DispNum = RfRx.RXDATA.DataBuf[0]-0x30;

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';} else {

RfTx.TXDATA.DataBuf[0] = 'E';

RfTx.TXDATA.DataBuf[1] = '0';

} RfHaveTxDara = 1;} } else if((RfRx.RXDATA.HeadCom[1](RfRx.RXDATA.HeadCom[2] == 'U'))//数码管屏测试

{

if(SensorNum == 2)//数码管屏板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp1 = RfRx.RXDATA.DataBuf[0];

temp1

temp1 += RfRx.RXDATA.DataBuf[1];

if(temp1

{

LEDDispNum = temp1;

LEDDISPFUN();//显示数据

LCDUPDATA = 1;

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

}

else

{

RfTx.TXDATA.DataBuf[0] = 'E';

RfTx.TXDATA.DataBuf[1] = '0';

} RfHaveTxDara = 1;}

== 'N')&& }

else if((RfRx.RXDATA.HeadCom[1] == 'B')&&(RfRx.RXDATA.HeadCom[2] == 'L'))//测试电池电压

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(4);

RfTx.TXDATA.DataBuf[0] = temp;

RfHaveTxDara = 1;

} else if((RfRx.RXDATA.HeadCom[1] == 'B')(RfRx.RXDATA.HeadCom[2] == 'E'))//测试蜂鸣器

{

if((SensorNum == 4)||(SensorNum == 9))

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

if(RfRx.RXDATA.DataBuf[0] == '1'){

if(SensorNum == 4)

{

BEEPState1 = 2;

}

else

{

BEEPState2 = 2;

} }

else if(RfRx.RXDATA.DataBuf[0] == '0'){

if(SensorNum == 4)

{

BEEPState1 = 0;

P1_6 = 1;

}

else

{

BEEPState2 = 0;

P1_4 = 1;

} }

&&

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

} else if((RfRx.RXDATA.HeadCom[1] == 'R')&&(RfRx.RXDATA.HeadCom[2] == 'E'))//控制继电器

{

if(SensorNum == 6)//继电器板

{

if((RfRx.RXDATA.DataBuf[0] == 'K')&&(RfRx.RXDATA.DataBuf[1] == '1'))

{

if(RfRx.RXDATA.DataBuf[2] == '1')

{

Relay1State = 1;

P1_4 = 1;

}

else if(RfRx.RXDATA.DataBuf[2] == '0')

{

Relay1State = 0;

P1_4 = 0;

}

}

else if((RfRx.RXDATA.DataBuf[0] == 'K')&&(RfRx.RXDATA.DataBuf[1] == '2'))

{

if(RfRx.RXDATA.DataBuf[2] == '1')

{

Relay2State = 1;

P1_5 = 1;

}

else if(RfRx.RXDATA.DataBuf[2] == '0')

{

Relay2State = 0;

P1_5 = 0;

}

}

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

}//end 控制继电器

else if((RfRx.RXDATA.HeadCom[1] == 'L')&&(RfRx.RXDATA.HeadCom[2] == 'L'))//控制高亮LED

{

if(SensorNum == 17)//高亮LED板

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

ChangT3Cmp0Val(RfRx.RXDATA.DataBuf[0]);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

}//end 控制高亮LED

break;

}//end if(RfHaveTxDara)//如果有数据要发送

{

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送数据

RfHaveTxDara = 0;} #endif } 4.实验总结

主要是通过组网来使协调器与终端器进行数据的交流与反馈,当LED灯显示时,LED显示屏也会显示相应状态,进行信息反馈。

课程设计报告【篇5】

一、主题设计的指导思想

从目前“研究性学习”课程实施的现状来看,与教育部《基础教育课程改革纲要》(试行)中关于“从小学到高中设置综合实践活动”的内容和要求仍相距甚远,表现在:

一是观念滞后,依然延续传统学科课程的教育方式,主题设计由教师包办代替,学生缺少自主权,只能被动接受,体现不出学生独立思考、动手操作、探索和创新等特征;

二是课程内容单一,学科课程的拓展或延伸,综合性、实践性特点不够突出;

三是不按要求设置课程,或以课外活动充当;

四是没有课程设计,师生随心所欲进行活动。

基于上述认识,确立“研究性学习”主题设计的指导思想是:必须实现传统教育向素质教育的过渡,围绕培养学生创新精神和实践能力开展活动,把“研究性学习”与应对全球科技革命和知识经济挑战这一战略性问题结合起来,培养具备科学态度、科技创新精神和实践能力的人才;要因地制宜地开发和利用广泛的教育资源,从自然、社会和生活中选择和确定专题进行研究,充分利用图书馆、实验室、多媒体和远程教育等,开展以学生为主体自主的、开放的、探究式的研究活动,并在研究中主动获取知识,综合运用相关知识解决实际问题;改变教师传统的教学方式和学生的学习方式,由学生单纯地接受教师传授知识变为学生多渠道获取知识;强调多元化的评价主体和多样性的评价手段,关注学生的学习过程和由此过程所获得的直接体验,把评价与反馈指导结合起来,要通过评价激励学生发挥自己的个性特长和创造性才能;在知识与技能、过程与方法以及情感、态度、价值观诸方面,为学生创造发展空间。

二、主题设计的基本原则

1、开放性。主题内容建构与普通学科应有显著的区别,它不再是由专家预先规划设置的特定知识体系的载体,因此,在主题研究内容和视角的选择、方法和手段的取舍、资料收集和调研方式的途径、结果的表达和交流、时间和场地的安排等方面,应有较大的灵活性,要为学生主动探究、自主参与和师生合作探究,发挥其个性特长和创造才能提供广阔的空间。

2、自主性。必须明确学生是主体,教师是组织者和指导者。因此,在确立主题活动的内容和形式上,要克服主观性、盲目性和随意性。在有计划、有步骤地开展研究的同时,给学生更多的选择活动和自己设计、组织和主持研究的机会,在情感、态度、价值观、个性品质、创新精神和实践能力等方面都能得到充分发展。

3、整体性。做好课程资源的开发利用的积累工作,注重主题研究的整体规划,由浅入深、逐步递进、形成序列。主题设计的内容是由师生共同参与建构完成的,由于不同学生在目标定位上各有侧重,指导者在服从整体规划的同时,还应从实际出发,让不同的学生都有和他的年龄、思维水平及知识基础相适应的研究课题。

4、实践性。主题涉及的内容应面向生活和社会实践,要通过实践获得直接经验,并综合运用相关知识解决问题。包括收集和处理信息、设计过程和选择方法、表达和展示研究结果等。从实践出发,改变学生的学习方式、学习过程,增加问题解决过程中的体验和感受,在培养研究性学习能力的同时,认识自然、了解社会、关心现实和体味人生。

5、综合性。研究内容是源于社会、生产、生活和学生经验的综合性内容,其内容有利于学生多渠道获取知识或跨学科知识的综合运用;应体现时空开放的组织形式,不局限于学校教室,要课内课外、校内校外相结合。

三、主题设计的基本思路

根据教育行政部门对研究性学习课程的有关要求,我们在强调从实践出发,培养学生研究性学习能力的同时,对不同学段进行了统一规划,立求各有侧重。在高中侧重“研究”。这个年龄段,学生的自我意识和控制能力较强,具备一定的观察、分析、抽象、概括等思维能力。因此,主题设计侧重于理论、方法和能力的形成,适当增加其科技含量,在倡导团结合作、集体攻关的同时,鼓励个人发明创造;在初中侧重“探究”。这个年龄段,学生有一定的自我意识和自控能力,思维水平由形象思维向抽象思维过渡,主题设计应侧重于引导学生进行探究式学习,让学生经历问题的提出、设计、操作、成果表达和检验等探究过程,关注其情感和态度的变化,强调过程体验和经验积累,逐步掌握问题探究的策略与方法,发展科学态度和创新精神;在小学侧重“操作”。这个年龄段,学生善于直观、形象思维,主题设计侧重在观察、了解基础上的动手操作,以发展兴趣、爱好,形成良好的行为、习惯,进行初步的科学方法和实践能力训练。在具体设计研究性学习课程时,主要从以下几个方面展开:

1、引导学生认识生活、社会和自然。培养学生观察生活、探索社会和自然问题的兴趣,获得参与研究探索的体验。在变化的社会生活中,学会生活,增强社会责任感,担负起国富民强的历史重担;在探索大自然奥妙的过程中,正确认识和理解人类的发展和生存空间与自然环境的相互关系,建立保持自然系统处于动态平衡状态的理念,增强生活质量意识、自然环境保护意识等。

2、学会思考,培养学生发现问题和解决问题的能力。能在具体情境中,综合运用所学知识解决问题。学会收集、选择、处理信息,作出大胆的猜想或合理的推断,并进行检验,从而增加猜想的可信度,证明猜想或推翻猜想。

3、培养学生的合作意识和合作能力。体会在认识问题和解决问题的过程中与他人合作的重要性。能主动地与他人交流,同时又能借鉴他人、社会和人类智慧,求得个体生存、发展和自我实现。通过合作小组等形式,开展师生之间、生生之间的多边合作互动,增加讨论、交流几率,掌握合作方法,提高合作能力。

4、培养学生的科学精神、科学态度和科技创新能力。通过社会调查、课题研究和科学实践等活动,建立国家、社会与个人必须依靠科学发展和科技进步才能持续发展的观念,形成正确的科学观念和学科学、爱科学、用科学的内在动机。学习科学家探求真理的献身精神,培养旺盛的求知欲,强烈的好奇心,丰富的想象力,善于观察、勇于探索和实践,不断地激发学生的创造欲,提高创新能力。

四、主题设计的类型及方法

根据研究性学习的课程目标,结合研究性学习的内容特点和学生的学习特点,我们把研究性学习分成了课题型、专题型、实验探索型、现状调查型、作品研制型、文献型等,并针对不同类型,提出了相应的主题设计方法。

1、课题型。课题包括某一学科的某个问题、涉及多学科的综合性问题、社会生活和科技发展中的问题。课题设计应以问题为中心,以创新为目标,但必须使探究性学习水平处于学生的最近发展区,构建起一个阶梯状的系列问题系统。围绕问题根据学生在探究过程中所遇到的困难,提供必要的科学和技术概念及原理性知识。课题研究所需的经验和能力具有综合性,因此,一般适应于中学高年级。课题研究的基本过程:

①知识背景准备;

②选题立题;

③组织课题小组;

④制定研究方案,确立假设;

⑤实施论证并得出结论;

⑥结果展示和总结反思。

2、专题型。围绕社会生活和科技发展中的某一专题,在教师、学生互动交流中学习研究,从而解决问题或对该问题进一步了解。由于专题研究、讨论需要学生具备一定的知识和经验基础,因此适应于小学高年级或中学。专题设计应选择多元价值取向的问题或现实中已经存在但其结论尚不清楚的问题。如“哪种颜色的面料更保暖”、“怎样才能减少雨中的含酸量”等专题。专题研究应以学生个体自主活动和小组活动为中心,让学生在研究中,不仅学会收集、阐述各种观点,而且学会仔细分析和评价这些观点,从而确立自己的见解。

3、实验探索型。一般有两种情形:一种是教师提出若干条件,学生针对教师提供的条件,进行开放性实验,从中发现现象或找到新规律;另一种是教师直接给出命题,学生围绕命题进行假设和实验证明,实验探索型学习过程能充分体现学生的主体性学习,有利于培养学生的动手实验能力和探索能力,发展假设论证能力等。如:“植物侵蚀预防、让草坪变绿”等。实验探索设计不同于传统学科课程中的实验设计,不再是既定实验程序的机械模仿和验证,而是让学生自己对命题进行假设论证或利用条件探索发现,从而获得实验研究经验,增进兴趣,培养科学的态度和价值观。实验探索法的学习结果是书写实验报告。一般说来一个完整实验报告应包括实验假设、实验过程的理论指导、实验步骤、仪器和资料的选用、实验过程的观察记录、实验结果与测量、实验报告等内容。

4、调查研究型。调查研究是指教师指导学生对与科学知识有关的种种社会问题或社会现象进行调查,弄清其状态及可能的原因,找出其间的联系或发展趋势,进而对蕴含的知识、观念获得较为深刻理解的研究活动。适应于中小学各年级。如:“生活中的噪音”、“解题心理研究”等。现状调查设计一般分现状研究、相关研究、因果关系比较和发展研究四种,可帮助学生学会多渠道采集和占有信息,获得信息加工处理的经验,培养学生了解现状、分析和把握现状的能力。其调查结果是在学生明确调查报告基本格式的基础上,撰写调查报告。

5、作品研制型。作品研制是在教师指导下,使用相关设备工具,仿制或重新设计作品的研究活动。作品研制设计可分为工艺美术、电动模型、雕刻、编结等。作品研制所需工具和材料可就地取材,如木工器材、手工制作用的泥巴、树叶、野花、布头、毛线、各种粮食等,作品制作有利于培养学生动手操作能力、想象力和创造力。由于制作活动具有做做玩玩的儿童活动特点,更适合小学低年级应用。

6、专题文献型。专题文献研究是教师指导学生对某个专题的有关文献进行收集、比较、分析、综合,从中提炼出新观点与认识的一种类型。专题文献研究设计是让学生掌握文献资料研究方法的基本过程,学会收集、处理、应用、评价信息,培养信息收集、文献检索和从中提取新的信息的能力和意识,其研究结果是书写一份研究报告。其报告的价值不仅在于资料的系统性、完整性和条理性,更重要的是从现有资料中提取新观点、发现新规律,切忌搞成资料汇编。

课程设计报告【篇6】

实训任务:

做单一灯的左移右移,八个发光二极管l1-l8分别接在单片机的p1.0→p1.2→p1.3┅→p1.7→p1.6→┅→p1.0亮,重复循环3次。然后左移2次,右移2次,闪烁2次(延时的时间0.2秒)。

一、实训目的和要求:

(1)熟练掌握keilc51集成开发环境的使用方法

(2)熟悉keilc51集成开发环境调试功能的使用和单片机仿真器、编程器、实验仪三合一综合开发平台的使用。

(3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口。

(4)了解掌握单片机芯片的烧写方法与步骤。

(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。

(6)掌握利用protel99se绘制电路原理图及pcb图。

(7)了解pcb板的制作腐蚀过程。

二、实训器材:

pc机(一台)

pcb板(一块)

520ω电阻(八只)

10k电阻(一只)

led发光二极管(八只)

25v10μf电容(一只)

单片机ic座(一块)

at89c51单片机芯片(一块)

热转印机(一台)

单片机仿真器、编程器、实验仪三合一综合开发平台(一台)

三、实训步骤:

(1)根据原理图(下图所示),用导线把单片机综合开发平台a2区的j61接口与d1区的j52接口相连。

(2)将流水灯程序编写完整并使用tkstudyice调试运行。

(3)使用导线把a2区j61接口的p1口7个口分别与j52接口的八个led相连。

(4)打开电源,将编写好的程序运用tkstudyice进行全速运行,看能否实现任务要求。

(5)观察运行结果,若能实现功能,则将正确编译过的hex文件通过easypro51编程器写入mcu片内存储器,然后将烧写的芯片a2区的圆孔ic座进行最终实验结果的演示。

(6)制板。首先利用protel99se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb板上布线图外的铜全部后,将其取出,清洗干净。

(7)焊接。将所给元器件根据原理图一一焊至pcb板相应位置。

(8)调试。先把at89c51芯片插入ic座,再将+5v电源加到制作好的功能板电源接口上,观察功能演示的整个过程(看能否实现任务功能)。

(流水灯控制器原理图)

四、流水灯控制器程序的主程序:

org0000h

sjmpstart

org0030h

start:mova,#0ffh

movr0,#1ch

movr1,#12h

movr2,#12h

clrc

loop1:acalldelay

djnzr0,loop2

sjmploop4

loop2:movp1,a

rlca

jncloop3

sjmploop1

loop3:acalldelay

movp1,a

rrca

jncloop1

sjmploop3

loop4:acalldelay

djnzr1,loop5

sjmploop6

loop5:movp1,a

rrca

jncloop4

sjmploop4

loop6:acalldelay

djnzr2,loop7

sjmpzy

loop7:movp1,a

rlca

jncloop6

sjmploop6

zy:acalldelay

mova,#00h

movp1,a

acalldelay

mova,#0ffh

movp1,a

acalldelay

mova,#00h

movp1,a

acalldelay

mova,#0ffh

movp1,a

sjmpstart

delay:movr3,#20

dly1:movr4,#20

dly2:movr5,#248

djnzr5,$

djnzr4,dly2

djnzr3,dly1

ret

;

end

(pcb布线图)

五、实训体会与自我评价:

本设计成品是以单片机at89c51芯片为核心部件,实现了单一灯的左移右移重复循环3次。然后左移2次,右移2次,闪烁2次(延时0.2秒)的功能。此次设计在软件、编写程序方面花费时间太多我们上网找资料,上图书馆,尽可能多的了解流水灯控制的相关知识。通过这一周的综合实训(单片机课程设计),熟练掌握了keilc51集成开发环境的使用方法,了解并掌握到单片机芯片的烧写方法与步骤,进一步加深了对单片机常用指令的理解与运用。能够较熟练的运用protel99se绘制电路原理图及pcb图,对pcb板的一般制作过程有了一定的了解。在实训过程中,使我得到了一次用专业知识、专业技能分析和解决问题、全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。

同时在老师的悉心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,单片机领域对我今后进一步学习计算机方面的知识有极大的帮助。使我们认识到课程的重要性,同时也感受到理论与实践之间的差距,使我们对单片机系统的应用有了更加深刻的认识。

课程设计报告【篇7】

今年是我参加工作的第二年,在大学的时候学校曾经开设过《教育技术现代化》这门课程,关于Photoshop的一些基本功能键粗略的了解一些,但并未深入学习。参加工作后,在工作过程中,才发现以前学的东西过于肤浅,无法应付实际要求,特别是在做设计和处理图片时,感觉难以得心应手,特别是打开平面软件时,有点力不从心,有时甚至一筹莫展,不知道如何动手。在这个“优胜劣汰,适者生存”的社会,要想在体现自己的价值,实现自己的梦想,必须在各方面完善自己。对平面设计进行系统的学习的必不可少的,在认真对比许多相关专业培训学校后,我选择了武汉清美。

在武汉清美的日子里,我认真跟着老师们学习photoshop的教程,一节节的学下来,虽然还不能与高手的水平相比,但与自己初学时相比,感觉自己的PS水平已经有了很大的提升,对PS的各种应用技巧有了较深的认识,对照片处理、艺术设计、照片合成、鼠绘的技能有了很大的提高。对PS的热情也日益高涨,想想在在以后自己的实践中,自己的PS技能一定能更上新台阶。

时光飞逝,紧张的课程培训就要快结束了,但我对photoshop的兴趣越来越浓了。学无止境,社会也学校,在社会这个大环境里,我相信自己在武汉清美里学到的知识一定会让我在社会这个大舞台里一展宏图的。兴趣是我们最好的老师,我不要求多高深,案例特效多眩目,只求掌握原理。这次武汉清美学习是个好的开端,我会继续我的photoshop学习之路。最后非常感谢老师的耐心教导,还有同学们对我的帮助,这都是我学习动力的巨大来源。

课程设计报告【篇8】

总结是指社会团体、企业单位和个人在自身的某一时期、某一项目或某些工作告一段落或者全部完成后进行回顾检查、分析评价,从而肯定成绩,得到经验,找出差距,得出教训和一些规律性认识的一种书面材料,它可以明确下一步的工作方向,少走弯路,少犯错误,提高工作效益,因此好好准备一份总结吧。那么总结要注意有什么内容呢?以下是小编为大家收集的课程设计的总结报告-个人工作总结,希望能够帮助到大家。

课程设计的总结报告篇一首先我们由衷的感谢老师提供给我们这样一个锻炼自己的机会,经过这四周的学习,本次课程设计即将结束,总的来说,经过这门课的学习收获还是相当大的。回顾这段时间的课程设计,至今我仍感慨万分。的确,从选材到开始制作,从理论到实践,在四周的实训日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我们都更加懂得并亲身体会到了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,可以说是困难重重,并且在设计的过程中发现了自己的很多不足之处,发现自己对之前所学过的知识理解得不够深刻,掌握得不够牢固,有待加强。

生活就是这样,汗水预示着结果但是也见证着收获,劳动是人类生存、生活永恒不变的话题,通过实训,我才真正领略到“艰苦奋斗”这一词的真正含义。我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以。而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少欢乐在这里洒下。我想说,之前的时间确实很累,但当我们看到自己所做的劳动成果时,心中也不免产生兴奋。也许有人不喜欢这类的工作,也许有人认为编程的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就够了,而且这也是最主要的,社会需要我们,我们也可以为社会而工作。

我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神,某个人的离群都可能导致整项工作的失败。实训中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个项目失败,团结协作是我们实训成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

虽然我们的课程设计在规定的时间内按时完成了任务,但是,由于知识和经验的欠缺,整个系统的开发功能还不算太完善,在设计的过程中也遇到了很多困难,比如由于早期的需求分析不充分,给后来系统的具体实现带来了很大的困难,所以中间做了一部分的无用功,但通过我们的不懈努力和老师、同学的'帮助,设计才得以圆满按时的完成,所以仅凭个人的力量想设计出一个完美的系统几乎是不可能的。

老师为我们安排此次课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟,尤其是观察、分析和解决问题的实际工作能力,以便培养成能够主动适应社会主义现代化建设需要的高素质人才。在这四个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识学习的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

作为整个学习体系的有机组成部分,课程设计的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际工作中,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足之处,以便为完善学习计划,改变学习内容与方法提供实践依据。

对我们软件专业的专科生来说,实际动手能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习中及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。

此次课程设计达到了专业学习的预期目的。在课程设计之后,我们都感到不仅实际动手能力有所提高,更重要的是通过对软件开发、软件管理流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

关于本次课程设计,我们的设计虽然还不够完善,许多功能因为时间和本身的知识水平有限无法实现,不过,至少在平时的学生基础之上已经有了很大的提高,我坚信它必将会对我们的未来走上工作岗位产生积极的影响。

在此次课程设计中,学到了很多课内学不到的东西,比如独立思考解决问题的能力,出现差错的随机应变能力,和与人合作共同提高的能力,都受益匪浅,并且使我们的动手能力得到了很大的提高,对以后的工作、学习都有非常大的帮助。对我们而言,知识上的收获固然重要,但是精神上的丰收更加可喜,挫折是一种财富,经历是一种拥有,这次实训必将成为我们人生旅途上一个非常美好的回忆!

课程设计的总结报告篇二通过学习DSP课程我们都知道,DSP实际上也是一种单片机,它同样是将中央处理单元、控制单元和外围设备集成到一块芯片上。但DSP有别于普通的单片机,它采用了多组总线技术实现并行运行机制,从而极大地提高了运算速度,也提供了非常灵活的指令系统。

此次课程设计从是从我们做完单片机的课程设计后开始的。实际上在单片机的课设时,我们就着手准备设计资料。按设计要求,按部就班地进行设计,基本上用了一周的时间。每天我们都要在固定的教室碰面,安排一天的设计任务,每人都有明确的分工。而我的分工就是和其他的两个组员按照事先画好的电路图焊接电路板。这个工作看起来很容易,毕竟我们大一的时候就进行过类似的焊接电路板的电子工艺实习。所以我以为会很得心应手,但就是因为有那么的轻视的味道在里面,导致了我后面的功亏一篑,一周的成果不得不全盘重来。

在刚开始进行焊接的时候我们就犯了一个整体布局的错误,因为一开始以为会有主芯片焊在电路板上,所以我们的芯片的布局比较集中,这就直接导致了后来我们接线的困难,但为了避免更大的麻烦,我们还是继续了下去。当时完全没有考虑到一个基本常识,那就是像这种直接用飞线连接的情况下使用过于密集的连接方法不仅不容易焊接,而且电器性能非常的差,极其容易导致短路和强烈的电子干扰。

就这样,我们在之后的一周时间里完成了板子的初步焊接工作,就在我们兴高采烈的拿去实验的时候,结果确是指示灯毫无反映,这下我们就迷糊了,什么原因呢?查吧!于是乎我们开始了一个下午的仔细的检查工作,还别说,我们小组特别认真的按照电路图来一一检查,还真被我们检查到了好几处明显的错误,特别是好几个电容没有接地,这种低级错误真是不应该犯啊。我们自己看到这个错误都觉得是很不应该,不过知错能改,善莫大焉。我们很快的改正了这个错误。于是第二次拿去测试,想不到这次问题更糟,发光二极管直接一股青烟给烧了。我们当时这是傻了眼了,只好又回来检查。

检查后才发现我们电路图都画错了,原来我们把发光二极管直接接到12V电源上了,不烧才怪。经过这两次的错误,我们总结了一下我们出现的错误,大部分都是很低级的错误,这真是我们不认真造成的啊。于是我们又一次认真的检查了一下电路板,这下果然被我们发现了好几处短路的地方。但是由于一开始的整体排列就没有弄好,导致了现在都无法改动了。终于在我们一致讨论后,我们终于决定干脆推倒重来,把功率放大模块整体重新焊接过。这样虽然可能速度比较慢,但正确性很高,这其实也是无奈之举。要不是当初焊接的时候没焊好,导致问题多多,现在也不至于要重新来过,不过还好,我们在接受这次惨痛的教训后终于明白了一个道理,工作一定要踏踏实实的去做,特别是学我们这行的,一点马虎的也不能有,宁可重来,也不能交上一分马虎之中做出的东西!在这样的信念下,我们一直忙到晚上七点,终于是完成重新焊接的工作了,为了保险起见,我们又一次重新完整的检查了一遍系统,在最后确定没有问题后,我们终于欣慰的走出了教室的大门,来到了食堂吃饭,那一刻感觉食堂的饭怎么都比平常好吃多了,呵呵,这大概就是所谓的自我成就吧。

通过这次课程设计,我懂得了做一件事情一定要细心仔细,要不然本来很简单的一件事情也会做的很糟糕,而且一定有怀疑的精神,我们这次二极管烧了就是因为太迷信自己设计的电路图了,没有注意到那个明显的设计失误,才导致了这种结果。我希望以后能有更多的课程设计来给我们锻炼,这样我们将来走向社会才会有更强的竞争力。我会更加的珍惜以后的这种学习的机会的!

课程设计的总结报告篇三本学期实时测量技术实验以电子设计大赛的形式,老师命题,学生可以选择老师的题目也可以自己命题,并且组队操作其他的事情(包括设计总体方案、硬件、软件设计、焊接、调试等工作)。趣味性强,同时也可以学到很多东西。

我们认为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。

之所以使用avr作为我们的执行核心,不仅是因为老师说avr现在是社会上应用比较多的单片机,也因为想通过使用avr锻炼自己的c语言编程能力,养成良好的编程风格。不管怎样,这些都是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。很少有人会一步登天吧。永不言弃才是最重要的。

而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。

与队友的合作更是一件快乐的事情,只有彼此都付出,彼此都努力维护才能将作品做的更加完美。而团队合作也是当今社会最提倡的。曾经听过,mba之所以最近不受欢迎就是因为欠缺团队合作的精神和技巧。

电压电流测量装置虽然结束了,也留下了很多遗憾,因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远不会结束,相反,我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。只有不断的测试自己,挑战自己,才能拥有更多的成功和快乐!to us, happiness equals success!快乐至上,享受过程,而不是结果!认真对待每一个实验,珍惜每一分一秒,学到最多的知识和方法,锻炼自己的能力,这个是我们在实时测量技术试验上学到的最重要的东西,也是以后都将受益匪浅的!

对本学期实验的评价

趣味性强,不仅锻炼能力,而且可以学到很多东西,在与老师和同学的交流过程中,互动学习,将知识融会贯通。老师提出的革新非常的好,认为本学期的实验模式非常实用。但是提议可以申请将课程浓缩,在一定时间内只做这个,只有高度的集中才能作出好的东西。时间的紧缺成为一个很大的问题。也希望老师可以为我们知道一下以后的发展方向。让每个人都有动手焊接以及参与其他的各个流程,有专门的知道就更好了。

电压电流测量的遗憾

如果可以制作出多量程的电压电流测量并且使用更高精度的装置就更好了。

但是对于我们这些初学者来说,能够达到这个程度,相信也已经可以相当骄傲了!!

VF课程学习心得体会

从第十周以来,我开始了VF数据库的学习,由于在上半学期刚完成计算机的一级考试,也是为了能在计算机方面有更深的学习,我选择了这门课程。刚开始时,老师要我们进行简单的程序设计,慢慢地我开始接触到了更多的相关的知识。我开始更加的对着门课程感兴趣了,也真是由于这门课程我了解到了更多的计算机程序设计的知识。这也是为了能更好的学习好自己的专业知识打一些基础,电子设计编程就是我最为头疼的,有了此次初步的了解之后,相信我能在以后的专业学习中获益更多。

经过这几周的学习后,我知道了简单的程序,在表单设计中简单的计算,相关的代码,都是我以前从未接触过得。在学习专业课时业听老师介绍过,我们的专业也有C语言,CAD,和机械制图。因此就对这门课程更感兴趣了。

课程设计报告【篇9】

1、开设课程设计的目的及意义

高等职业教育的目标及侧重点不同于普通高等教育,其培养的学生在毕业后应能直接上岗,具有熟练的实践操作技能。教育部《关于以就业为导向深化高等职业教育改革的若干意见》中指出,高职教育应“坚持培养面向生产、建设、管理、服务第一线需要的‘下得去、留得住、用得上’,实践能力强、具有良好职业道德的高技能人才”。

因此,加强实践性课程教学,对保证人才培养质量显得尤为重要。我院为贯彻《关于全面提高高等职业教育教学质量的若干意见》(教高[20xx]16号文件)精神,针对区域经济发展的要求,灵活调整和设置专业课程,以就业为导向,加快专业课程对应的课程设计改革。目前,我院按照由浅入深、不断深化的教学规律,构建了实践教学三层次四环节的实践课程体系(图1)。实践教学三层次包括基本技能、专业拓展、综合创新,四环节包括实验、实习实训、设计和课外实践。“C语言课程设计”是我院信息类专业的必修专业基础课程设计,在“C语言程序设计”课程教学结束后的下一学期进行,历时2周,40学时。课程开设的目的在于培养学生分析问题和解决问题的能力,为学生提供一个动手、动脑、独立实践的机会。

2、项目教学法的简单介绍

21项目教学法“项目教学法”是基于建构主义教学理论的一种教和学的模式。著名的瑞士心理学家皮亚杰认为,知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义建构的方式而获得的。美国项目管理专家约翰·宾认为:“项目是要在一定时间里,在预算规定范围内需达到预定质量水平的一项一次性任务。”

“项目教学法”是通过实施一个完整的项目而进行的教学活动,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习,自主地进行知识的建构,在课堂教学中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。因此,在教学活动中,教师将需要解决的问题或需要完成的任务以项目的形式交给学生,在教师的指导下,以小组工作方式,由学生自己按照实际工作的完整程序,共同制定计划,共同或分工完成整个项目。

在项目教学中,学习过程成为一个人人参与的创造实践活动,注重的不是最终的结果,而是完成项目的过程。在高等职业技术教育中,项目是指以生产或制作一样具体的、具有实际应用价值的产品的工作任务。在技术领域,很多小产品或一些复杂产品的模型都可以作为项目,如:在信息类专业,可以开展微机组装、网站建设、信息管理系统开发、局域网构建、单片机制作、多媒体课件制作等项目;在电子类专业,可以开展报警器、LED、门铃、家电组装等项目;在商业、财会和服务行业,所有具有整体特性并有可见成果的工作也都可以作为项目,如商品展示、产品广告设计、营销策划等。

22项目教学法的基本特征项目教学法与传统的教学法相比,有很大的区别,主要表现在改变了传统的3个中心:以教师为中心转变为以学生为中心;以课本为中心转变为以“项目”为中心;以课堂为中心转变为以实际经验为中心。项目教学法具有以下特点:

(1)实践性。项目“源”于企业,项目的主题与真实世界密切联系,由浅入深,选择的项目具有典型性、实用性。

(2)自主性。提供学生根据自己的兴趣选择内容和展示形式的决策机会,让学生能够自主地进行学习,从而有效地促进学生创造能力的发展。

(3)发展性。长期项目与阶段项目相结合,构成了实现教学目标的认知过程。

(4)评价特殊性。项目型教学的评价注重学生在项目活动中能力发展的过程,测评内容包括学生参与活动各环节的表现及作业质量,避免了传统的一张试卷定成绩的弊端。测评可以采用自评、小组评、教师综合评等方法。教师只有明确并抓住项目化教学特点,才能更好地完成教学目标。

3、项目教学法在“C语言课程设计”中的实施

31教学内容为了更好地开展课程设计教学,经过多次实践和摸索,总结出学生在具体实施项目中一般存在2个方面的知识不足:

第一,在教学内容上,由于前导课程在教学上受学时影响,很多教师对指针、结构体、共用体和文件基本操作的知识介绍不甚完善、系统,更难谈上辅以实例加以消化。对此,针对学生在这些知识点上的掌握程度,利用4~6个学时,实施区别式的、辅导性的、实例化教学。

第二,学生对项目管理知识知之甚少,针对此情况,采用2个阶段实施有别于常规教学的补课行动。第1阶段为项目准备阶段,利用2~4个学时,安排曾经做过项目且做得比较好的学生,现身介绍项目的准备工作(包括如何选题、如何查找资料、如何复习C语言知识)、项目实施过程要完成的工作(包括如何做市场调查、如何做需求规格分析说明书、如何做概要设计说明书、如何做详细设计说明书、如何选择使用代码编码器代码编写注意事项)、项目验收及作业提交的工作(包括程序测试事项、如何写课程设计报告)等。在学生介绍中,教师穿插讲解,辅以点评。第2阶段为项目实施阶段,教师应针对学生发生的问题,及时给予指导,直到学生弄懂为止。

32教学要求切实保证教学质量和教学效果,本着“学以致用”的原则,要求学生做到以下3点:第一要做到“学有三备”,即:在项目实施前做好知识储备,在项目实施中做好安全防备,项目结束时做好被评准备。第二要写好“三书一报告”。“三书”即每个项目组要做需求规格说明书、概要设计说明书、详细设计说明书,“一报告”即人人都要做课程设计报告。第三要做“四自”参与者。“一自”即自律,要求学生自觉履行学生守则和项目实施有关规则,不迟到、不早退、不缺席,实施点名制度,若无特殊原因,有5次旷课者自愿以重修论处;“二自”即自尊,要求学生尊重知识、尊重学习规律、尊重项目组成员、尊重教师、尊重自己;“三自”即自信,要求学生相信自己能够按时、按量、按质完成工作内容,遇到困难时,沉着、冷静,理性地寻找问题解决的办法;“四自”即自强,要求学生不满足自己已有的成绩和以往与课题项目组共同取得的成绩,用创新和超越的思想,做出比以前哪怕是前进一小步的事情。同时也要求教师做好相应的工作,如做好项目整体规划、精心准备、努力激发学生参与行为、为人师表、表扬为主、批评为辅、多分析、精点评等。

33项目实施进程项目教学法是一种生动、灵活、多样化的教学方法。在项目实施过程中,既不能生搬硬套地利用一个时间标准,又不能影响项目实施的整体进程,因此对时间的灵活处理是非常关键的,也是值得商榷的。

34明确项目内容,帮助学生立项立项首先要审题。当学生拿到项目列表时,最不能忽略的问题,就是提醒学生审题。审题恰当对学生以后开展各项工作是关键。审题时,学生首先要考虑自己的长、缺处,做到扬长避短,也就是说审题就是学生自己审自己完成该项目有多大的能力,有没有信心。只有学生明白自己,才可以避免以后实施项目过程中走弯路。同时既要建议学生在组建项目组时,考虑所在组的其他学生的长处和短处,又要尽量避免使被学生认定的差等学生没人愿意与其组合,而成绩好的学生又抱团的现象发生。

根据近几年带课程设计的经验,关于如何合理选择项目,建议教师应从学生的角度考虑以下4个因素,协助学生做好选题:

(1)规模。项目规模太大会影响项目的完整性,项目规模太小难以体现课程的实践性。

(2)难度。项目难度一定要适中,既要激发学生学习的兴趣又不能影响学生的自信心。

(3)实用性。项目的选择应该是现实世界真实的工作任务,具有一定的现实和实用性。

(4)趣味性。兴趣是最好的老师,所以在选择项目时应考虑其趣味性,让学生有更大热情投入项目。

课程设计报告【篇10】

五、主要实习内容:

依克丽尔中介公司标志设计、大连开发区职业中专标志设计、制作爆炸背景、毕业照、蝴蝶、卡通梨、卡通人物、蝴蝶女孩合成、苹果易拉罐、荷花蚌壳、瓶中鲨鱼、人头马面、沙漠女孩、手中楼房、天使女孩合成、光晕背景、蚂蚁红星、跳动的文字、转盘、数字倒计时等等

1、新建文件800mm _ 800mm,分辨率为72的文件。

处,第二、三、四条,分别于垂直22mm、33mm、44mm处。

3、选择工具箱中的椭圆工具,设定前景色为红色,设置其绘制形式为“从中心”绘制。按shift键在参考线的交差处绘制一个正圆,作为“人”的头部。图层面板中自动生成新图层名为“形状1”的新图层。

4、复制正圆,移动到参考线的第三个交差点处。

5、选择圆角矩形工具,在工具属性栏中设置其半径为20,绘制圆角矩形作为“人”的手臂,同时生成新的图层,名称为“形状2”。

6、按Ctrl+T键调整矩形角度,选择“直接选择工具”适当调整矩形的圆滑度。复制一个新的圆角矩形生成图层“形状2副本1”,调整其位置。

7、再次复制圆角矩形,并调整位置制作“人”的另一只手臂。

8、选择图层“形状2副本1”并显示其路径。单击路径面板标签,进入路径面板,此时路径面板中有一个名称为“形状2副本1矢量蒙版”的路径。

9、按住“形状2副本1矢量蒙版”的路径,将其拖拽到路径面板下方的“创建新路径”按钮上释放,生成路径名称为“路径1”。

10、回到图层面板,新建“图层1”。选择工具箱中的画笔工具,设置画笔主直径为3,硬度为100%,前景色为白色。进入路径面板,选择“路径1”,单击路径面板下方的“画笔描边路径”按钮,对路径进行描边。

11、参考步骤(7)-(11) 的方法继续制作图形,并调整两边的“手臂”使其稍长一些。(可增加一条参考线,使两个手臂的长度相等)

12、分别使用圆角矩形工具和钢笔等工具绘制房子的下部。先绘制一半,再用复制和水平翻转的方法制作另一半。

13、选择工具箱中的文字工具,设置工具属性栏中的字体为“Arial Black”,字号为24,颜色为黑色。在画面中输入文字“YKLR”,复制两个文字层,调整中间文字层的文字颜色为白色,底层文字的颜色为灰色,此时效果生成。

1、打开素材“蝴蝶”文件夹中的“5jpg”和“6jpg”图片,然后,将“5jpg”的图片复制到“6jpg”文档中,会形成一个新的图层 —“图层1”。

3、打开图片“7bmp”,用“磁性套索工具”将“黄色蝴蝶”单独扣下来。

4、选中扣下来的“黄色蝴蝶”复制到“6jpg”文档中,并调整其位置,效果生成。

1、打开素材“卡通梨”文件夹中“梨”和“卡通狗”的图片。

2、用“磁性套索工具”将“梨”图片中的“黄梨”单独选中,然后在菜单中按“图层”—“新建”—“通过剪切图层”,得到“图层1”,使得“黄梨”单独属于一个图层。

3、按“Ctrl+J”,得到“图层1副本”,然后回到“图层1”,把黄梨选中,重新用渐变填色,使其颜色与完成图中影子的颜色一致;选择“编辑”—“变换”—“扭曲”,拖动呈合适的影子形状;选择“滤镜”—“模糊”—“高斯模糊”调整到合适的数值,影子效果完成。

4、回到“卡通狗”的图片中,将“卡通狗”的面部用“套索工具”扣下来,并复制到“梨”的文档中,得到“图层2”。

5、在工具栏中选择“套索”工具,用其将“卡通狗”的“鼻子”选中,然后在菜单中按“图层”—“新建”—“通过剪切图层”,得到“图层3”;并用相同的方法将“卡通狗”的“眼睛”剪切出来,得到“图层4”。

6、在工具栏中选择“橡皮擦”工具,把“橡皮擦”的硬度调为“0”,分别将“图层2”、“图层3”和“图层4”中的多余部分擦掉。

7、回到“图层2”,在“菜单”栏中,选择“编辑”—“变换”—“扭曲”,把“嘴”的形状调整的与“卡通梨”的嘴巴形状一致。

8、回到“图层4”,在“菜单”栏中,选择“编辑”—“变换”—“扭曲”,把“眼睛”的形状调整的与“卡通梨”的眼睛形状一致。并将“眼睛”上的眼皮部分用“工具栏”的“磁性套索工具” 选中,然后,在“菜单”中选择“图层”—“新建”—“通过剪切图层”单独剪切出来,得到“图层5”。

9、回到“图层5”中,将眼皮部分的颜色模式调为“线性加深”,使其效果与“卡通梨”的效果一致。

10、分别调整“嘴巴”、“鼻子”和“眼睛”调整到合适位置。

11、回到“背景”层中,将背景色用渐变调整与“卡通梨”完成图效果一致,效果生成。

1、 打开素材中“荷花蚌壳”文件夹中图片素材,把蚌壳用套索工具把蚌壳单独扣下来。

3、 那一部分选出来,然后把荷花池里的荷花“复制”, “粘贴入”蚌壳的中间选区中,然后移动到相应位置。

4、 正在把那一朵大荷花口下来,复制到蚌壳中,然后把荷花池、荷花、蚌壳层合并,给“合并图层”做出投影效果,然后再合并所有图层,得到完成图效果。

1、 在素材中打开相应图片,把马的头扣下来,然后把它“复制”到人的图片中,并把马头放在相应位置,然后将马头与人头交接部分“羽化”,使它看起来结合的更真实。

2、 回到马的图片中,用套索工具在马的脖子上选一块出来,然后将其“复制”到人图中,将其放在人的脖子上面,并用“仿制图章”工具将脖子部分铺满。

3、合并所有图层,得到相应效果。

六、实训心得(体会):

在学习photoshop的过程中既有收获,又有不足之处。第一学习这门课程一定有耐心,其次要坚持不懈,要肯下功夫,但是自己有时真的不够耐心,有时稍微难些的图不会做就放下了,自己知道要学号ps就要不断地做,可能一次不行,第二次就可以了,但往往会耽搁掉了,复杂些就不去理它了。其实自己是比较喜欢photoshop的,原因是这软件实在是太厉害了,能化腐扭为神奇,所以平时都有认真听课,也掌握了一些制图的技巧。

在本实训中掌握了一些文字的特效处理,照片的处理和广告设计。主要涉及画笔的应用、抠图、滤镜、色阶、曲线、色彩的应用等。几乎很多例子都有应用这些方面的技巧的,所以一定要学号这方面的知识。学习photoshop单单只有理论是不行的,最重要的是要多实践,看十本书还不如亲手做一次,做不好也不要气馁,因为你从失败中得到了经验.有了经验你就会继续尝试做下去,试图掌握里面的每一个功能,熟悉每一个工具的运用。拿到每一个例子都要分析其中的每一个元素,需要用到什么工具,要在大脑里有个印象,这样做起来就会顺心多了。

现在学习photoshop通常都是按照书本上和老师的例子来做,要是离开了例子要自己创作,可能就有些困难。这就说明了自己缺少训练。其中要学好photoshop不但要懂技术,更要懂艺术和创意,加上思维要发散,才能做出好的作品。自己就是缺少对艺术和创意的造诣,所以有时拿到一些素材就会有种无从下手的感觉。

经过本次的实训练习,使我对photoshop的一些技巧有了一定的了解。Photoshop是自己喜欢的一门课程,我也很用心来学,但是缺少训练,因此今后要持之以恒,不断练习才可以有所提高。

课程设计报告【篇11】

1、题目要求

◆ 建立通讯录信息,信息至少包含编号、姓名、年龄、电话、居住街道、省份、城市、电子邮箱等;

◆ 能够提供添加、删除和修改通讯录信息的功能;

◆ 能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询; ◆ 将通讯录保存在文件中;

◆ 能够按表格方式输出通讯录信息。

2、需求分析

本程序将用到文件系统,其中单行内容代表一张纸条。程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择。

3、总体设计

根据项目的任务要求及以上分析,在设计方法上,采用模块化的程序设计思想,即将通讯录管理系统划分为数据输入模块,数据查询模块,数据修改模块,数据插入模块,数据删除模块,,并对每个模块按照其功能分别独立完成对应的程序设计。在数据处理上,各模块中的数据处理(如数据读/写操作)均用文件形式来实施,并在主程序中完成操作界面的设计功能,设计思路如下:

1、采用模块设计思想;

2、将通讯录信息定义成结构体类型,并通过文件实施数据操作;

3、通过设计一菜单界面完成具体操作。

4、详细设计

课程设计报告【篇12】

第一章 基础掌握

1.1 实验目的

掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。(]

1.2 实验要求

在报告中记录建立、保存C程序实习过程。

1.3 实验基本内容

编写程序,在屏幕上显示一个短句“Hello World”

(1) 程序:

1) 编译如下程序:

#include

Void main()

{

printf (“Hello World!”);

}

2)链接。执行Build-命令。

3)运行。执行Build Execute 命令。显示结果。

4)关闭程序工作区。

(2) 运行结果:

输出结果:Hello World!

总结:

掌握C语言程序设计的基本框架,能够编写简单的程序。

第二章 数据类型

2.1 实验目的

(1) 掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。()

(2)通过编程进一步理解和掌握运算符的确切含义和功能。

2.2 实验要求

(1) 在报告中记录建立、保存C程序实习过程。 (2) 完成典型题目,分析遇到的困难和实验中的收获。

2.3 实验基本内容

输入程序,观察输出结果 1>./*test2.1c*/

1)编译如下程序: #includevoid main() {

char ch; int k;

ch='a',k='b';

printf("%d,%x,%c",ch,ch,ch,ch,k); printf("k=%%d",k) }

2)链接。执行Build-命令。

3)运行。执行Build Execute 命令。显示结果。

4)关闭程序工作区。

2>./*test2.2c*/

1)编译如下程序: #includevoid main() {

float a1,a2; double b1,b2; a1=1234.12; a2=0.000001; b1=1234.12;

b2=0.000001;

printf("%f,%l f",a1+a2,b1+b2);

}

2)链接。执行Build-命令。

3)运行。执行Build Execute 命令。显示结果。

4)关闭程序工作区。

实验结果:

97.61,141,ak=xd

实验结果:

扩展:c语言程序实验报告 / c语言实验报告 / c语言程序设计报告

1234.120089,1234.120001

总结:

学会C语言的运算符和表达式的正确使用

第三章 选择结构程序设计

3.1 实验目的

学会改正程序中的错误

3.2 实验要求

(1) 在报告中记录建立、保存C程序实习过程。(]

(2) 完成典型题目,分析遇到的困难和实验中的收获。

3.3 实验基本内容

输入实验程序,程序有错,改正程序中的错误

1)输入如下程序:

#include

#include

void main()

{

double a,b,c,d;

printf("输入一元二次方程a=,b=,c=");

scanf("a=%l f,b=%l f",&a,&b,&c); if(a==0) { if(b=0) } { } else Print f("x=%0.2f",-c/b); if(c==0) Print f("0==0参数对方程无意义!”); else Print f("c!=0方程不成立"); else if(d>=0) { printf("x1=%0.2f",(-b+sq rt(d))/(2*a)); printf("x1=%0.2f",(-b-sq rt(d))/(2*a)); } else {

printf("x1=%0.2f+%0.2fi",-b/(2*a),s q rt(-d)/(2*a)); printf("x1=%0.2f-%0.2fi",-b/(2*a),s q rt(-d)/(2*a));

}

}

2)链接。()执行Build-命令。

3)运行。执行Build Execute 命令。显示结果。

4)关闭程序工作区。

实验结果:

运行不了程序 ,做以下修改:

#include

#include

void main()

{

//

//

double a,b,c,d; printf("输入一元二次方程a=,b=,c="); scanf("a=%l f,b=%l f",&a,&b,&c); c=5; if(a==0) //{ /*if(b=0) { } else printf("x=%0.2f",-c/b); if(c==0) printf("0==0参数对方程无意义!”); else printf("c!=0方程不成立"); }*/ else if(d>=0) { } else { } printf("x1=%0.2f",(-b+sq rt(d))/(2*a)); printf("x1=%0.2f",(-b-sq rt(d))/(2*a)); printf("x1=%0.2f+%0.2fi",-b/(2*a),sq rt(-d)/(2*a)); printf("x1=%0.2f-%0.2fi",-b/(2*a),sq rt(-d)/(2*a));

}

这样就可以输出程序了。

总结: 学会使用逻辑运算符和逻辑表达式,掌握简单的查错方法,并改错。

第四章 循环程序设计

4.1 实验目的

熟练使用whiledo…while语句实现循环程序设计。[)

4.2 实验要求

(1) 在报告中记录建立、保存C程序实习过程。

(2) 完成典型题目,分析遇到的困难和实验中的收获。

4.3 实验基本内容

1) 编译如下程序:

#include

void main()

{

int m,n,j,k; printf("input m n"); while(scan f ("%d",&m,&n),m

2)链接。执行build-命令。

3)运行。执行build execute 命令。显示结果。

4)关闭程序工作区。

实验结果:

Input m n

5 2

然后运算出来结果:

最大公倍数是5

最大公约数是0

总结:

学使用for,while,do...while语句实现循环程序,

第五章 程序设计

5.1 实验目的

检验最近学习成果,进一步巩固C语言的学习

5.2 实验要求

1)输入任意四位数,写出个,十,百,千位上的数 2)连接任意两个字符串

5.3 实验基本内容

1)编译如下程序: #includevoid main() {

int a,b,c,d,x; scanf("%d",&x); if(999

a=x/1000;

b=x/100-a*10;

c=x/10-a*100-b*10; d=x-a*1000-b*100-c*10; printf("%d",x);

1)编译如下程序: #includemain() {

char s1[10],s2[5]; int i,j;

scanf("%s",s1); scanf("%s",s2); i=j=0;

while(s1[i]!='') i++;

printf("a=%d,b=%d,c=%d,d=%d",a,

b,c,d); }

}

while((s1[i++]=s2[j++])!=''); printf("string no.1. %s",s1); }

2)链接。(]执行build-命令。

3)运行。执行build execute 命令。显示结果。

4)关闭程序工作区。

2)链接。执行build-命令。

3)运行。执行build execute 命令。显示结果。

4)关闭程序工作区。

实验结果: abcd

adsg

string no.1.abcdadsf

实验结果:

2678 2678

a=2,b=6,c=7,d=8

总结:通过对程序的设计提高编程能力

相关推荐
最新更新
设计毕业实习报告12篇

设计毕业实习报告 04-21

父爱如山的优美句子通用(69句)

父爱如山优美句子 05-05

祝福长辈祝福语大全

祝福长辈祝福语 05-05

工作正能量励志说说(精选32条)

正能量励志说说 05-05

面试自我评价5篇

面试自我评价 05-05

唯美的句子简短励志摘抄52条

唯美励志句子 05-05

微信说说心情句子精选58条

心情句子 05-05

2023公司户外拓展活动总结(必备14篇)

公司户外拓展活动总结 户外拓展活动总结 05-05

热!课程设计心得体会5篇

课程设计总结心得体会 课程设计报告心得体会 04-12

幸福爱情幸福的句子精选

爱情幸福的句子 05-05

简易的劳动合同的范本(分享9篇)

简易劳动合同范本 劳动合同范本 05-05

全部分类