03130330郑成达单片机课程设计报告

上传人:ni****g 文档编号:457143980 上传时间:2023-11-28 格式:DOC 页数:32 大小:6.82MB
返回 下载 相关 举报
03130330郑成达单片机课程设计报告_第1页
第1页 / 共32页
03130330郑成达单片机课程设计报告_第2页
第2页 / 共32页
03130330郑成达单片机课程设计报告_第3页
第3页 / 共32页
03130330郑成达单片机课程设计报告_第4页
第4页 / 共32页
03130330郑成达单片机课程设计报告_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《03130330郑成达单片机课程设计报告》由会员分享,可在线阅读,更多相关《03130330郑成达单片机课程设计报告(32页珍藏版)》请在金锄头文库上搜索。

1、吉林大学珠海学院 单片机课程设计报告吉林大学珠海学院单片机课程设计报告基于STC15单片机的频率计及方波发生器设计专业: 电子信息科学与技术 学生姓名: 郑成达 班级: 13级电子信息科学与技术(3班) 学号: 03130330 指导教师: 刘立勋 完成日期: 2015年11月29日 目 录一、课程设计性质1(1)基础部分2(2)发挥部分2三、课程设计的进度及安排3四、设计思路及原理分析4(1)方波发生器4(2)数字频率计5(3)电路原理图6(4)程序资源分配与按键说明图7(5)程序流程图8五、课程设计实物与调试8(1)IAP15W4K58S4开发板9(2)程序运行调试图9五、心得与体会10五

2、、参考文献11附录1 IAP15W4K58S4开发板原理图12附录2 程序源代码13一、课程设计性质和目的单片机课程设计是单片机原理及接口技术课程与实验结束后的一门综合性实践课。设计一种基于STC15单片机的频率计及方波发生器。该程序能实现可调频率的方波输出,并通过不同按键实现频率的粗调和微调,以及正弦波或方波的频率和占空比的检测功能。介绍电路接口原理图,给出相应的软件设计流程图和程序。课程设计题目基于STC15单片机的频率计及方波发生器设计紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度,能充分发挥学生的能动性和想象力。通过电路设计、安装、调试等一系列环节

3、的实施,提高学生的单片机应用系统的设计能力。 相信本次的设计一定能够使我们电子设计能力得到很好的锻炼,使我们的理论和现实生活联系起来!二、课程设计的内容及要求 (1)基础部分 数字频率计设计要求:被测信号为正弦波或方波,频率范围为1Hz5MHz;1) 测量相对误差的绝对值不大于百分之一;2) 门限电压2V-5V;3) 测量数据刷新时间不大于2s,测量结果稳定。方波发生器设计要求:1) 方波发生器可以分为低频和高频2个端口产生,频率范围1Hz-6MHz;2) 通过不同按键实现频率的粗调和微调。(2)发挥部分1) 频率计范围为 大于5MHz;2) 测量相对误差的绝对值不大于 千分之一;3) 增加脉

4、冲信号占空比的测量功能。三、课程设计的进度及安排序号项目时 间1集中讲授第11周 周六1-4节2绘制原理图及程序流程图第11周周六5、6节3部分同学上台讲解设计思路第11周周日1-2节4方波发生器程序设计及验证第11周周日3-6节5频率计基本功能程序设计第11周周日7-10节6频率计程序设计及验证第12周周六1-4节7程序联合调试及优化第12周周六5-8节8课程设计报告撰写第12周周六9-10节9作品测试,教师检测第12周周日1-4节10针对检测结果进行修改第12周周日5-6节11答辩并给出成绩第12周周日7-10节四、设计思路及原理分析(1)方波发生器如下图4-1,由于15系列单片机定时器/

5、计数器有一个时钟输出TnCLKO允许控制位,当定时器/计数器溢出时,对应的一个管脚的电平会产生跳变,通过这个原理,就能产生方波,频率最大能达到主时钟频率的二分之一,本次课程设计,本人设定的单片机主时钟是33.1776MHz,理论上能产生16.5888MHz的方波,满足课程设计方波发生器最高5MHz的要求。由于定时器溢出时间不能做到很长,定时器时钟输出的不能做到很低甚至是1Hz的频率,所以要产生低频的方波,可在定时器中断服务程序里取反某个管脚,以达到产生低频方波的目的,因此方波发生器分为了高频和低频部分。图4-1(2)数字频率计数字频率计的功能实现,同样可以利用定时器完成。由于定时器可以充当计数

6、器,当用作计数器时,当外部管脚来一个脉冲后,由THn和TLn组成的16位寄存器就会加1,1秒内统计其增加的次数便是所要测得的频率。占空比的检测,也可以利用定时器/计数器完成。如图4-1,当定时器/计数器的GATE位为1的时候,只有在INT0管脚为高电平的时候,定时器/计数器才开始计数,因此,可以确定INT0高电平的时间。再用另一个定时器你记录总时间,两者一相除,即是所要测得的占空比。(3)电路原理图(4)程序资源分配与按键说明图(5)程序流程图No No Yes No 开始程序初始化(定时器、外部中断、引脚等)显示LED数码管占空比模式?定时器0定时器1定时器2定时器3定时器4计数产生高频方波

7、每秒输频率计频率低频模式?产生低频方波频率计计数测占空比:当INT0=1时计数外部中断1设置模式LED数码管显示按键检测设置模式?每秒输出占空比数值测占空比/非测试占空比模式切换分配各个定时器的资源调度各个定时器的状态While(1) Yes Yes 开 启 中 断 五、课程设计实物与调试(1)IAP15W4K58S4开发板(2)程序运行调试图五、心得与体会结束为期两周的单片机课程设计,让我加深了对新型15单片机的理解,由与单片机控制系统可以应用到生活中的很多地方,解决生活和学习中的一些简单的用电子控制的问题,使我意识到了单片机的重要性。编程的过程中,发现要考虑很多个细节的问题,这样程序才会完

8、美,一些细微的差错,会让程序产生许多意想不到的bug。总结经验的时候我得出这样的结论:学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要理论联系实际,这样才会取得事半功倍的效果。最后,感谢老师在课程设计中给我提供的帮助。五、参考文献STC单片机原理及应用-清华大学出版社2015年6月第一版 何宾 姚永附录1 IAP15W4K58S4开发板原理图 附录2 程序源代码#include STC15Fxxxx.h#define uint8 unsigned char#define uint16 unsigned int#define uint32 unsigned long int ui

9、nt16 value=0;/方波发生器高频模式下的装载值变量uint8 led_data_length=0;/LED数码管显示字数的长度uint8 led_data8;/LED数码管显示的字数uint8 led_table10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/LED数码管显示各个数字的代码uint8 interrupt_count=0;/方波发生器低频模式下应该进入定时中断的次数uint8 interrupt_count_data=0;/方波发生器低频模式下实际进入定时中断的次数uint16 timer1_count=0;/

10、定时器1进入中断的次数uint8 timer4_count=0;/定时器4进入中断的次数uint8 set_count=0;/退出设置模式时,所需要进入中断的次数uint32 counter0_count=0; /计数器0溢出次数uint32 counter_frequency=0;/频率1(用于频率计和占空比)uint8 counter_h=0;/计数器0高8位计数uint8 counter_l=0;/计数器0低8位计数uint32 duty_count=0;/计数器1溢出次数(用于测占空比)uint8 duty_counter_h=0;/计数器1高8位计数uint8 duty_counte

11、r_l=0;/计数器1低8位计数uint32 counter_duty=0;/频率2(用于占空比)bit lf_flag=0;/是否为低频模式bit set_flag=0;/是否为设置模式bit duty_flag=0;/是否为占空比模式void LED7s_DisplaySet(uint32 iNum,uint8 led_data8);/设置数码管显示的数字void Delay1ms(uint8 x);/33.1776MHz 1ms延时/* 外部中断1服务程序 */void Interrupt_int1() interrupt 2duty_flag=!duty_flag;if(duty_fl

12、ag=1)/如果是占空比模式P35=0; /LED2亮TR0=0;TMOD|=0x08; /GATE=1TMOD&= 0xfb;/计数器改为定时器TL0=0;TH0=0;counter0_count=0;TR1=0;AUXR |= 0x40;/T1 12倍速度TMOD |= 0x10;/T1工作在模式1TL1 = 0x00;/设置定时初值TH1 = 0x00;/设置定时初值T4T3M |= 0x80;/定时器4开始计时TR1=1;TR0=1;else /如果不是占空比模式TR1=0;AUXR &= 0xBF;/T1 非12倍速度TMOD &= 0xef;/T1工作在模式0TL1 = 0x66;/设置定时初值TH1 = 0xEA;/设置定时初值TR1=1;P35=1;/LED2灭TR0=0;TMOD&=0xf7;/GATE=0TMOD |= 0x04;/定时器改为计数器TR0=1;T4T3M &= 0x7f;/定时器4关闭计时/* 计数器0中断服务程序 */void Interrupt_counter0() interrupt 1TL0=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号