




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2011年至2012年第1学期单片机原理与应用课程设计班 级_1006402_指导教师_ 涂立 李旎_ 学生人数_ _3_ _设计份数_ _1_ _2011年12月23日设计并实现两路相位可调方波信号发生器1006402-02朱旭东 1006402-43 孙兰平 1006402-47 曹立清一 设计时间2011年12月 19 日-2011年12月23日二 设计地点湖南城市学院一实验楼计算机401机房三 设计目的1.掌握51单片机系列的外围电路控制 2.熟练使用Protel电路制图软件绘画电路图3.学会使用Visio绘制工程的程序流程图4.通过课程设计了解方波信号发生器的功能并应用5.通过课程设计使学生能熟练掌握数据的查询(图书、网络),单片机课程所学知识在工程设计工作中综合地加以应用,使理论知识和实践结合起来。四 设计小组成员朱旭东 1006402-02 编写程序孙兰平 1006402-43 资料整理及写实验报告曹立清 1006402-47 制作流程图及原理图制作五 指导老师涂立(副教授)、李旎(讲师)六 设计课题设计并实现两路相位可调方波信号发生器要求:输出两路方波信号,键盘控制频率和两信号的相位差,频率范围和变化步长值自定,相位03600,相位差变化步长值自定。用双踪示波器观察。(*能做到频率和相位差两参数独立变化更好)七 基本思路及关键问题的解决方法输出两路方波信号,键盘控制频率和两信号的相位差,频率范围和变化步长值自定,相位03600,相位差变化步长值自定。用双踪示波器观察。(能做到频率和相位差两参数独立变化更好)。具体完成以下任务:1. 完成系统的方案设计,给出系统框图。2. 完成系统的硬件设计,给出硬件电路图和系统资源分配表。3. 完成系统的软件设计,给出程序流程图和程序清单。4. 运用Proteus仿真软件对所设计的系统进行调试和仿真,直到预定的功能全部仿真通过,给出仿真结果;如果条件允许,将程序下载到XL1000综合仿真试验仪,验证系统功能。5. 对所设计的系统进行性能分析(精度、实用性、成本等)。6. 完成课程设计报告。需求分析:本次课设所设计出的两路相位可调方波信号发生器,能够调频的范围为1200HZ相位,相位最小步长为1度。长按频率键2s频率进行加10或减10操作,按一下进行加一或减一操作。两路相位可调方波信号发生器中可以有两种思路来产生方波信号,其一是利用延时来实现,其二是利用51单片机自带的定时器来实现。如果使用延时来控制,一是容易产生误差;二是相位调节会有诸多不变。而利用51单片机自带的定时器不仅可以产生精确的定时而且还可以通过控制定时器的工作来产生相位差。基于此,此次课程设计选用方案二,即利用定时器来实现方波输出,相位变化。51单片机最小系统需要一个时钟电路和一个复位电路,如果P0口用作I/O口的话,还需要在P0口加上10K的上拉电阻。复位电路与时钟电路见图a,最小系统图见图b 。图1. 常见的复位与时钟电路图2. 最小系统图八 算法及流程图用visio软件画出流程图,如图3:图3. 设计并实现两路相位可调方波信号发生器流程图实验步骤:1打开入Keil软件后,建立一个新工程,单击【Project】下拉菜单中的【New project.】选项,如截图图4所示:图4. 建立新工程截图2.选择工程要保存的路径,输入工程名。然后单击【Save】按钮。工程建立后,此工程名变为024.uvproj。如图5所示:图5. 保存工程截图3.单击保存按钮后,会弹出一个对话框,要求用户选择单片机的型号,可以根据用户使用的单片机来选择。Keil C51几乎支持所有的51内核的单片机,在这里选择Atmel的AT89C52 ,如下图6所示,选择后单击保存。图6. 选择单片机型号截图4.完成上一步骤后,窗口界面如图7所示:图7. 添加单片机后的窗口界面截图到此为止,还没有建立好一个完整的工程,虽然工程名有了,但工程当中还没有任何文件及代码,接下来添加文件及代码。5.单击【File】菜单中的【New】菜单项,或单击界面上的快捷图标。如下图8、9所示:图8. 添加文件截图图9. 添加文件后的窗口界面截图此时光标在编辑窗口闪烁,可以输入用户的应用程序,但此时这个新建文件与刚才建立的工程还没有直接的联系,单击图标,窗口界面如图10所示:图10. 保存文件截图6.回到编辑界面,单击【Target1】前面的“+“号,然后在【Source Group1】选项上单击右键,弹出如图11所示菜单。然后选择【Add Files to Group Source Group1】菜单项,对话框如图12所示:图11. 将文件加入工程的菜单截图图12. 选中文件后的对话框截图选中【024.c】,单击【Add】按钮,再单击【Close】按钮,然后再单击【Sourse Group1】前面的“+“号,屏幕窗口如图13所示:图13. 将文件加入工程后的屏幕截图7.接着是在编辑窗口中编写程序。编写好程序就要进行程序的编译,单击工具栏上的进行出现错误,修改程序直到没有错误为止,然后在依次点击和,在此过程中出现错误的,也要修改程序直到没有错误为止,编译过程中出现警告一般可以不必考虑,但特殊时也要通过修改程序消除警告。屏幕窗口如图14所示:图14. 将程序编写及编译的屏幕截图8.把文件转化成十六进制文件,点击【Project】在下拉菜单里找到【Options for Target target1】,屏幕窗口如图15所示:图15. 【Options for Target target1】的屏幕截图单击【Options for Target target1】会弹出对话框,屏幕窗口如图16所示:图16. 弹出对话框的屏幕截图用鼠标左键单击Creat HEX Fi:前面的方框,这时方框里会用一个对号,屏幕窗口如图17所示:图17. 单击Creat HEX Fi:前面的方框的屏幕截图然后点击确定对话框就会消失,这样刚刚所建立的文件就转化成十六进制的文件。9.用40针排线把DP-51PRO试验仪(如下图)上的A1区J76接口与A2区J79接口相连,然后使用导线把A2区的J61接口与D1区的J52接口相连。再用导线把A2区的J58的RXD,TXD与A2区的J53的KEY1,KEY2相连,最后用导线把A2区的J58的INTO与D4区的J8的任意一接口相连。10. 对DP-51PRO试验仪上电。打开DPFlash软件,点击栏中的【文件】在下拉菜单里找到【装载】,将生成的hex文件装载,屏幕窗口如图18所示:图18. 装载hex文件的屏幕截图然后单击,单击编程后,软件开始把程序烧入试验仪,烧片的过程,屏幕窗口截图如图19、20所示:图19. 烧片的过程的屏幕截图图20. 烧片的过程的屏幕截图当烧片完成后,点击退出就行了。11. 关闭DPFalsh软件。把DP-51PRO单片机仿真试验仪A1区的工作模式选择开关(MOD_sw1)切换到RUN处,然后按一下复位键(RST),MON51程序即开始运行。12. 观察实验运行的情况是不是符合设想。元件清单见表1:表1 元件清单名称大小/型号数量PC机Lenovo一台单片机ATC89C51一片示波器一台电容30F两个电容10pF一个晶振110592MHz一个按键独立按键六个电阻1K两个导线若干电路原理图见图21:图21. 设计并实现两路相位可调方波信号发生器电路图九 调试过程中出现的问题及相应解决办法1.在这次课程设计中,我们遇到了许多的问题,甚至也遇到了较难跨越的瓶颈,比如说,由于相位在我们单片机课程教学中没有涉及过多,所以在处理方波相位这里我们花费了较多的时间,经过查阅资料,请教别人等,才顺利解决了所遇问题。 2.程序不能烧到实验板上? 方法:开关没有按下,实验板不能正常工作,线接触不良,程序出现了逻辑错误,需进一步的调试。3.实验现象不跟预期相同?原因:程序编写有问题,可能是算法出现错误,或者板上的某些功能出现了问题十 课程设计心得体会这次课程设计过程中,我们组成员尽心尽力地去做实验设计,通过分工合作,慢慢地把此次课程设计顺利地完成了。此次课程设计给我很多专业知识以及专业技能上的提升,同时给了我许多道,给了我很多思考,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了用单片机来实现两路相位可调方波信号发生器的设计实现。在编程方面,我又学会了一种编程方法,即如何进行键盘长按的检测,这样能方便的对键盘实行复用,节省了外部资源及更加人性化。最重要的一点就是:学习要实践。我们不能只了解理论的知识而忽视实践的重要性。“实践是检验真理的唯一标准”,只有通过实践,才能发现其中的错误。从这次课程设计来看,我就深有体会,本来觉得很正确的,通过一实验就发现了一些问题,而且其中一些都是很简单的知识。所以在学习过程中我们要勇于去实践,将理论知识应用于实际,从实际中找出问题,解决问题,从而升华自我。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可! 我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在此次课设中,我们学会了很多学习的方法而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。十一. 源程序#include #include sbit 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; 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;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;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; 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) / /连续按键 se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品出库复核培训试题测试题库含答案
- 经空气传播疾病医院感染与预防措施试题及答案
- 第14课 单色吹塑纸版画教学设计-2025-2026学年小学美术赣美版三年级下册-赣美版
- 机电运输安全知识培训课件
- 2025年教师招聘之《幼儿教师招聘》题库试题含答案详解(综合卷)
- 导游服务个性化定制-洞察及研究
- 语义化知识图谱-洞察及研究
- 人教版化学九年级上册《7.2使用燃料对环境的影响》说课稿
- 《生活中的数 - 玩具》教学设计-2024-2025学年一年级上册数学北师大版
- 七年级生物上册 第二单元 生物体的结构层次第二章 细胞怎样构成生物体第一节 细胞通过分裂产生新细胞说课稿 (新版)新人教版
- 2022中国国家职业分类大典
- 快递公司快递员操作流程预案
- 高中语文++《大学之道》课件++统编版高中语文选择性必修上册
- 2022-2023年度省职业院校学生专业技能大赛装配式建筑智能建造赛项竞赛规程
- 化工产品销售管理制度
- 闽2023-G-01先张法预应力高强混凝土管桩DBJT13-95
- 前列腺电切手术
- 掌握敏锐观察和细节把控的沟通技巧
- 贵州省安顺市平坝区第二中学2023-2024学年七年级数学第一学期期末考试模拟试题含解析
- 2024年中国融通旅业发展集团有限公司招聘笔试参考题库附带答案详解
- 民谣酒馆创业计划书
评论
0/150
提交评论