单片机原理与应用课程设计设计并实现两路相位可调方波信号发生器

上传人:仙*** 文档编号:30434701 上传时间:2021-10-10 格式:DOC 页数:46 大小:1.18MB
返回 下载 相关 举报
单片机原理与应用课程设计设计并实现两路相位可调方波信号发生器_第1页
第1页 / 共46页
单片机原理与应用课程设计设计并实现两路相位可调方波信号发生器_第2页
第2页 / 共46页
单片机原理与应用课程设计设计并实现两路相位可调方波信号发生器_第3页
第3页 / 共46页
点击查看更多>>
资源描述
武汉理工大学单片机原理与应用课程设计课程设计任务书学生姓名: 专业班级: 电信0806 指导教师: 工作单位: 信息工程学院 题目: 单片机原理与应用课程设计设计并实现两路相位可调方波信号发生器 初始条件:(1)Proteus仿真软件或XL1000综合仿真试验仪一台;(2)先修课程:微机原理与接口技术、单片机原理。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)输出两路方波信号,键盘控制频率和两信号的相位差,频率范围和变化步长值自定,相位03600,相位差变化步长值自定。用双踪示波器观察。(能做到频率和相位差两参数独立变化更好)。具体完成以下任务:1. 完成系统的方案设计,给出系统框图。2. 完成系统的硬件设计,给出硬件电路图和系统资源分配表。3. 完成系统的软件设计,给出程序流程图和程序清单。4. 运用Proteus仿真软件对所设计的系统进行调试和仿真,直到预定的功能全部仿真通过,给出仿真结果;如果条件允许,将程序下载到XL1000综合仿真试验仪,验证系统功能。5. 对所设计的系统进行性能分析(精度、实用性、成本等)。6. 完成课程设计报告。时间安排:总体设计和硬件设计 二天软件设计 一天调试 一天写报告,答辩 一天参考书目:1 李群芳、 张士军,单片微型计算机与接口技术, 电子工业出版社,20082 张毅刚、彭喜元、董继成,单片机原理及应用,高等教育出版社,20043 赵晓安,MCS-51单片机原理及应用,天津大学出版社,2001指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 总体设计31.1 目标要求31.2设计方案比较31.3系统方框图42硬件设计52.1单片机概述52.1.1 80C51引脚说明62.2最小系统设计82.3 数码管显示电路83.软件设计93.1 软件设计思想93.2 主控程序设计93.2.1主程序设计思想93.2.2主程序设计流程图103.2.3主控程序113.3 计算溢出次数子程序设计153.3.1计算溢出次数子程序设计主要思想153.3.2计算溢出次数子程序设计流程图163.3.3 计算溢出次数子程序163.3 定时器中断1程序设计173.3.1 定时器1程序设计思想173.3.2定时器中断0程序设计流程图183.3.3 定时器1程序183.4 定时器中断0程序设计203.4.1 定时器中断0程序设计流程图203.4.2定时器中断0程序203.5 程序清单214系统调试和制作334.1调试工具keil说明334.2调试内容334.2.1 中断程序运行时间调试334.2.2 测试相位变化时的输出334.2.3 调试工具调试总结334.3 整体制作344.3.1 仿真软件介绍344.3.2 仿真及实物制作过程344.3.3 仿真整体电路图344.3.4 运行结果显示364.3.5 运行结果说明405 性能分析415.1 主要性能介绍415.2 误差分析416 心的与体会427 参考文献44两路相位可调方波信号发生器1 总体设计1.1 目标要求用单片机产生两路频率相位可调的方波信号。输出方波的频率范围为1Hz-200Hz,频率误差比小于0.5%。要求用“增加”、“减小”2个按钮改变方波给定频率,按钮每按下一次,给定频率改变的步进步长为1Hz,当按钮持续按下的时间超过2秒后,给定频率以10次/秒的速度连续增加(减少),输出方波的频率要求在数码管上显示。相位最小步进值为1度,也可以行10度步进,且可以进行左移,右移。开机默认输出频率为5Hz。1.2设计方案比较两路相位可调方波信号发生器中可以有两种思路来产生方波信号,其一是利用延时来实现,其二是利用51单片机自带的定时器来实现。如果使用延时来控制,一是容易产生误差;二是相位调节会有诸多不变。而利用51单片机自带的定时器不仅可以产生精确的定时而且还可以通过控制定时器的工作来产生相位差。基于此,此次课程设计选用方案二,即利用定时器来实现方波输出,相位变化。1.3系统方框图2硬件设计2.1单片机概述单片微型计算机(Single-Chip Microcomputer),简称单片机。就是将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)和其他多种功能器件集成在一块芯片上的微型计算机。本次课程设计选用的是MCS-51系列单片机中的80C51。MCS-51单片机包含中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O接口、串行I/O接口和中断系统等几大单元。其内部结构框图如图1所示。 图1 51内部系统结构中央处理器由运算器、控制器组成。8051的CPU包含以下功能部件: (1)8位CPU。(2)布尔代数处理器,具有位寻址能力。(3)128B内部RAM数据存储器,21个专用寄存器。(4)4KB内部掩膜ROM程序存储器。(5)2个16位可编程定时器/计数器。(6)32位(48位)双向可独立寻址的I/O口。(7)1个全双工UART(异步串行通信口)。(8)5个中断源、两级中断优先级的中断控制器。(9)时钟电路,外接晶振和电容可产生1.2MHz12 MHz的时钟频率。(10)外部程序/数据存储器寻址空间均为64KB。(11)111条指令,大部分为单字节指令。(12)单一+5V电源供电,双列直插40引脚DIP封装。内部结构如图2所示图2 51内部结构MCS-51单片机中有两个16位的定时器/计数器T0和T1,它们由4个8位寄存器(TL0, TH0, TL1和TH1)组成,2个16位定时器/计数器是完全独立的。可以单独对这4个寄存器进行寻址,但不能把T0和T1当做16位寄存器来使用。2.1.1 80C51引脚说明MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明。MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明。如图5所示。图5 51单片机引脚图Pin9:RESET/Vpd复位信号复用脚,当80C51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,80C51的初始态。80C51的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。2.2最小系统设计51单片机最小系统需要一个时钟电路和一个复位电路,如果P0口用作I/O口的话,还需要在P0口加上10K的上拉电阻。复位电路与时钟电路见图6。图6 常见的复位与时钟电路2.3 数码管显示电路由于51单片机I/O口驱动能力有限,无法直接驱动数码管,所以加入一块驱动芯片74HC244。加入74HC244后可以直接驱动数码管显示。此处使用数码管动态显示,P0口控制数码管段选,P2.0P2.2进行P2口的位选。如图7图7数码管显示电路3.软件设计3.1 软件设计思想任务分析:方波信号的产生实质上就是在定时器溢出中断次数达到规定次数时,将输出I/O管脚的状态取反。由于频率范围最高为200Hz,即每个周期为5ms(占空比1:1,即高电平2.5ms,低电平2.5 ms),开始时由于将过多程序放在中断中运行造成时间过长而无法使用8位自动重装模式提高精度,在经过修改后两个定时器中断均采用8为自动重装模式进行定时。 涉及以下几个方面的问题:按键的扫描、功能键的处理、计时功能以及数码管动态扫描显示等。问题的难点在按键连续按下超过2S的计时问题及如何跟踪当前频率进行相位变化等问题 系统的整体思路:主程序在初始化变量和寄存器之后,扫描按键,根据按键的情况执行相应的功能,然后在数码显示频率的值,显示完成后再回到按键扫描,如此反复执行。定时器1中断程序主要用来方波的产生、按键连续按下超过2S后频率值以10Hz/s递增(递减)。定时器0用来产生第二路的方波及进行第二路与第一路的相位变化。3.2 主控程序设计 3.2.1主程序设计思想主程序完成对按下各键对应的功能的实现,其中对于键盘检测中最麻烦的地方在于如何检测此键是否为长时间按下及如何进行相位变化处理。此处采用用当前值和上一次按键值相比较的方法来检测是否为长时间按下某键。处理相位变化时,当相位差超过180度时要设置一路二路反向输出标志。 3.2.2主程序设计流程图 3.2.3主控程序void main()init(); while(1) key_val=scan_key(); /扫描按键if(key_val=2) init();else if(key_val=3) N=N+0.00555;if(N=1&flag=1)flag=0;N=0.000001;else if(N1)flag=1;N=N-1;xw_show=xw_show+1;if(xw_show360)xw_show=0; else if(key_val=4) N=N+0.05555;if(N=1&flag=1)flag=0;N=0.0000001;else if(N=1)flag=1;N=N-1;/elsexw_show=xw_show+10;if(xw_show360)xw_show=0; else if(key_val=5) if(N0.26&flag=0)N=0.000000001;xw_show=0;else if(N1&flag=0)N=N-0.25;xw_show=xw_show-45;if(N0.25&flag=1)flag=0;N=1.000000001-(0.25-N);xw_show=xw_show-45;if(N1&flag=1)N=N-0.25;xw_show=xw_show-45; else if (key_val!=key_val_old) /说明有键按下或弹起 key_val_old=key_val; if (key_val!=255) /说明键按下 state_val=0; /清除连续按键标志 sec_over_num=0; switch (key_val) case 0: /增1键if(hz_shu=2) hz_shu-; else hz_shu=1; T1_over_num=get_T1_over_num(hz_shu); break; else /说明键弹起 state_val=0; second=0; else /一直按下或弹起 if (key_val!=255) state_val=1; /连续按键 else state_val=0; /没有按键按下,一直处于弹起状态 if(state_val=1&second=2&sec_over_num=5000)/连续按键且超过一秒 / TR1=0; sec_over_num=0; switch (key_val) case 0: if(hz_shu10) hz_shu=hz_shu-10; /减10/秒 else hz_shu=1; T1_over_num=get_T1_over_num(hz_shu); break; / TR1=1; led_show(); /数码管显示,动态扫描 T2_over_num=get_T2_over_num(hz_shu); 3.3 计算溢出次数子程序设计3.3.1计算溢出次数子程序设计主要思想 主要使用了C51有专门的库文件MATH.H里面一个个函数它是这样定义的extern float modf(float x, float *ip)调用它之后,整数部分被放入*ip, 小数部分作为返回值。这样就可以进行四舍五入的判断,减小计算溢出次数的误差。3.3.2计算溢出次数子程序设计流程图3.3.3 计算溢出次数子程序(1)计算当前频率下的溢出次数unsigned int get_T1_over_num(unsigned char p) /p为频率数unsigned int *k,h; double f; f=(double)p; /转化为浮点数 f=0.5/f; /半个周期的时间 f=f/0.0002; /中断溢出数=f/0.00025; h=f; /取整/四舍五入 if (modf(f,k)=0.5) h=h+1; return h;(2)计算当前频率下的改变固定相位的溢出次数unsigned int get_T2_over_num(unsigned char p) /p为频率数 int *s,h; double l; l=(double)p; /转化为浮点数 l=N*0.5/l; /选取相位的时间 l=l/0.000055; / h=l; /取整/四舍五入 if (modf(l,s)=0.5) h=h+1; return h;3.3 定时器中断1程序设计3.3.1 定时器1程序设计思想 主要完成一路方波信号的产生,并对长按键是的计时。为避免两个定时器中断冲突,且能够产生相位差,所以定时器0的中断在定时器1中开启。3.3.2定时器中断0程序设计流程图3.3.3 定时器1程序void timer1() interrupt 3 /T1中断 T1_cnt+;if(T1_cntT1_over_num) /半周期的计数到达 T1_cnt=0; pulse_out=pulse_out;/反复取反,产生方波 ET0=1;TR0=1; if(state_val=1)/连续按键 if (sec_over_num5000) /计时未到1s sec_over_num+; else /计时到1s时,执行else的代码 if(secondT2_over_num)T2_cnt=0;if(flag=0) pulse_out1=pulse_out;else pulse_out1=pulse_out;ET0=0;TR0=0;3.5 程序清单/*变量的定义: hz_shu: 设定的频率数 T1_over_num: 根据设定频率计算后的,定时器溢的出次数值 T1_cnt: 定时器计数溢出数 sec_over_num: 计算1s内的计数 second: 连续按键的计时 state_val: 连续按下的标志 0=按键已经弹起;1=按键一直按下去 led_seg_code: 数码管7段码*/#include reg51.h#include math.hsbit pulse_out=P30;sbit pulse_out1=P31;/-unsigned char data hz_shu,second,key_val,key_val_old,yanshi=1,flag;unsigned int data sec_over_num,xw_show;double N=0.000000001; int data T1_cnt,T1_over_num,T2_cnt,T2_over_num;unsigned char data state_val; char code led_seg_code10=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/led_seg_code0-9代表0-9的7段码void led_show();/-void delay(unsigned int i)/延时 unsigned int j,k; for(k=i;k0;-k)for(j=110;j0;-j);/-unsigned char scan_key() unsigned char i,k; i=P1; if (i=0xff) k=255; /无键按下 else /有键按下 led_show(); /延时去抖动 if(i!=P1) k=255; else switch (i) case 0xfe: k=0; break; / case 0xfd: k=1; break; case 0xfb: k=2; break; case 0xf7: k=3; break; case 0xef: k=4; break; case 0xdf: k=5; break; if(k=2|k=3|k=4|k=5) while(P1!=0xff) led_show ; /只有按下复位和相位移动式进行松手检测 return k;/-void led_show()unsigned char i,j;i=hz_shu%10; /显示个位P0=led_seg_codei;P2=0xfe;delay(5);i=hz_shu%100/10; /显示十位P0=led_seg_codei;P2=0xfd;delay(5);i=hz_shu%1000/100; /显示百位P0=led_seg_codei;P2=0xfb;delay(5);j=xw_show%10; /显示个位P0=led_seg_codej;P2=0xdf;delay(5);j=xw_show%100/10; /显示十位P0=led_seg_codej;P2=0xbf;delay(5); /显示百位j=xw_show/100;P0=led_seg_codej;P2=0x7f;delay(5);/-/unsigned int get_T2_over_num(unsigned char p) /p为频率数 int *s,h; double l; l=(double)p; /转化为浮点数 l=N*0.5/l; /延时四分之一个周期的时间 l=l/0.000055; / h=l; /取整/四舍五入 if (modf(l,s)=0.5) h=h+1; return h;/unsigned int get_T1_over_num(unsigned char p) /p为频率数unsigned int *k,h; double f; f=(double)p; /转化为浮点数 f=0.5/f; /半个周期的时间 f=f/0.0002; /中断溢出数=f/0.00025; h=f; /取整/四舍五入 if (modf(f,k)=0.5) h=h+1; return h;/* C51有专门的库文件MATH.H,里面有个函数 它是这样定义的extern float modf(float x, float *ip); 调用它之后,整数部分被放入*ip, 小数部分作为返回值。*/-void timer1() interrupt 3 /T1中断 T1_cnt+;if(T1_cntT1_over_num) /半周期的计数到达 T1_cnt=0; pulse_out=pulse_out;/反复取反,产生方波 ET0=1;TR0=1; if(state_val=1)/连续按键 if (sec_over_num5000) /计时未到1s sec_over_num+; else /计时到1s时,执行else的代码 if(second x=c9 TL0=0xc9; EA=1; /开中断 ET1=1;/ TR0=1; TR1=1; /定时器T1void main()init(); while(1) key_val=scan_key(); /扫描按键if(key_val=2) init();else if(key_val=3) N=N+0.00555;if(N=1&flag=1)flag=0;N=0.000001;else if(N1)flag=1;N=N-1;xw_show=xw_show+1;if(xw_show360)xw_show=0; else if(key_val=4) N=N+0.05555;if(N=1&flag=1)flag=0;N=0.0000001;else if(N=1)flag=1;N=N-1;xw_show=xw_show+10;if(xw_show360)xw_show=0; else if(key_val=5) if(N0.26&flag=0)N=0.000000001;xw_show=0;else if(N1&flag=0)N=N-0.25;xw_show=xw_show-45;if(N0.25&flag=1)flag=0;N=1.000000001-(0.25-N);xw_show=xw_show-45;if(N1&flag=1)N=N-0.25;xw_show=xw_show-45; else if (key_val!=key_val_old) /说明有键按下或弹起 key_val_old=key_val; if (key_val!=255) /说明键按下 state_val=0; /清除连续按键标志 sec_over_num=0; switch (key_val) case 0: /增1键if(hz_shu=2) hz_shu-; else hz_shu=1; T1_over_num=get_T1_over_num(hz_shu); break; else /说明键弹起 state_val=0; second=0; else /一直按下或弹起 if (key_val!=255) state_val=1; /连续按键 else state_val=0; /没有按键按下,一直处于弹起状态 if(state_val=1&second=2&sec_over_num=5000)/连续按键 / TR1=0; sec_over_num=0; switch (key_val) case 0: if(hz_shu10) hz_shu=hz_shu-10; /减10/秒 else hz_shu=1; T1_over_num=get_T1_over_num(hz_shu); break; / TR1=1; led_show(); /数码管显示,动态扫描 T2_over_num=get_T2_over_num(hz_shu); void timer0() interrupt 1/TH0=(65536-55)/256;/TL0=(65536-55)%256;T2_cnt+;/yanshi=0;if(T2_cntT2_over_num)T2_cnt=0;/yanshi=1;if(flag=0) pulse_out1=pulse_out;else pulse_out1=pulse_out;ET0=0;TR0=0;4系统调试和制作4.1调试工具keil说明Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。4.2调试内容 4.2.1 中断程序运行时间调试 测试中断运行时间可以很好的来选择中断工作方式,还能合理控制中断中的程序的复杂度。避免由于中断程序过长造成屏蔽某些其他同级的中断。 在最早的思路中定时器1中断中程序过长,接近250us,无法使用定时器方式2,经过调试发现此问题后将程序修改,最终两个定时器均可以使用8位自动重装模式。其中定时器1中断中的程序运行需要50us,定时器0中程序运行需要32us。 4.2.2 测试相位变化时的输出 在进行相位变化中,通过改变控制变量N的值,再通过计算得出相位变化。所以此变量的值至关重要。经过跟踪测试观察该变量的值,在最初的程序观察过程中发现,当相位延迟180度后,二路方波输出均为高电平。经过仔细分析与计算,终于了解到,180度之后的延迟与180度内的延迟的唯一差别仅为此二路的输出反相,由此想到添加反相标志。 4.2.3 调试工具调试总结 此次课设中主要用到keil中调试软件的部分主要为以上两个,虽然有其他部分的调试,但是由于较上面的两个重要性差很多,就不在此做详细介绍。总之,运用调试工具调试的主要为,标志变量,结果输出,中间过程是的值,执行时间等方面的应用。4.3 整体制作 4.3.1 仿真软件介绍 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。4.3.2 仿真及实物制作过程 在Proteus中仿真时首先将系统所需的各个硬件模块,主要为单片机最小系统,数码管,键盘,示波器构成。在Proteus中将各个所需原件找到,并根据程序搭建硬件电路。最后便可以测试波形结果。Proteus仿真结束后便可以上实际开发板来测试,由于自己拥有一个简单的开发板,所以此处就不用在额外焊接外围电路。和仿真相同,在输出部分接示波器来观测结果,及按键功能。4.3.3 仿真整体电路图454.3.4 运行结果显示图1 频率5HZ相位差0度图2 频率5hz相位差33度图3 频率20HZ相位差0度图4 频率20HZ相位差223度4.3.5 运行结果说明 此处图为Proteus中示波器的显示图,4副图均在50ms/格的横向扫描频率下输出。由于篇幅有限在此只选取5HZ和20HZ两个频率来进行示例。此系统频率可以范围为1200HZ,相位变化为0360度,最小步长为1度。在示例图中可以看到频率增加,相位可以任意改变。符合大多数情况下的基本要求。5 性能分析5.1 主要性能介绍本次课设所设计出的两路相位可调方波信号发生器,能够调频的范围为1200HZ相位,相位最小步长为1度。长按频率键2s频率进行加10或减10操作,按一下进行加一或减一操作。5.2 误差分析本次课设所用的单片机的晶振为12MHZ,所以机器周期为1us,定时器最小定时时间为1us。在主要负责相位延时的定时器0中,由于中断代码执行时间为32us,所以定时器0中断必须要大于32us,由于需要预留一定的时间,所以最终将定时器0设为定时55us。在计算相位延时时,由于用到的运算是用最小定时时间除以当前频率的半个周期。所以在频率为1HZ时,相位误差最小为0.198度(55us/500us*180).而当频率增加到200HZ时,相位误差同样增大到3.96度(55us/2500us*180)。所以误差范围在0.1983.96之间。在主要负责频率变化的定时器1中,代码所执行时间最大约为50us,由于两个定时器之间的定时不宜间隔过小,所以选取定时时间为200us。在频率计算时由于存在将浮点型数转换为整形数,并且由于存在定时器1中断内部程序的运算造成了方波频率输出的误差。6 心的与体会通过此次单片机课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 过而能改,善莫大焉。在大作业过程中,我不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次大作业终于顺利完成了,在设计中遇到了很多问题,最后在同学们的相互询问学习中,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可! 此次课程设计给我很多专业知识以及专业技能上的提升,同时给了我许多道,给了我很多思考,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了用单片机来实现两路相位可调方波信号发生器的设计实现。在编程方面,我又学会了一种编程方法,即如何进行键盘长按的检测,这样能方便的对键盘实行复用,节省了外部资源及更加人性化。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在此次课设中,我们学会了很多学习的方法而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。回顾起此大作业,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 此次课程设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。 7 参考文献1姚燕南,薛钧义.微型计算机原理与接口技术.北京:高等教育出版社.20042李群芳,张士军.黄建.单片微型计算机与接口技术(第2版).北京:电子工业出版社.20053徐维祥,刘旭敏.单片微型计算机原理及应用.大连:大连理工大学出版社.20064张鑫,华臻,陈书谦.单片机原理及应用.北京:电子工业出版社.20085汪道辉.单片机系统设计与实践.北京:电子工业出版社.2006本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!