欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:4146002       资源大小:6.77MB        全文页数:32页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    吉林大学珠海学院单片机课程设计报告基于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五、参考文献11附录1 IAP15W4K58S4开发板原理图12附录2 程序源代码13一、课程设计性质和目的单片机课程设计是单片机原理及接口技术课程与实验结束后的一门综合性实践课。设计一种基于STC15单片机的频率计及方波发生器。该程序能实现可调频率的方波输出,并通过不同按键实现频率的粗调和微调,以及正弦波或方波的频率和占空比的检测功能。介绍电路接口原理图,给出相应的软件设计流程图和程序。课程设计题目基于STC15单片机的频率计及方波发生器设计紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度,能充分发挥学生的能动性和想象力。通过电路设计、安装、调试等一系列环节的实施,提高学生的单片机应用系统的设计能力。 相信本次的设计一定能够使我们电子设计能力得到很好的锻炼,使我们的理论和现实生活联系起来!二、课程设计的内容及要求 (1)基础部分 数字频率计设计要求:被测信号为正弦波或方波,频率范围为1Hz5MHz;1) 测量相对误差的绝对值不大于百分之一;2) 门限电压2V-5V;3) 测量数据刷新时间不大于2s,测量结果稳定。方波发生器设计要求:1) 方波发生器可以分为低频和高频2个端口产生,频率范围1Hz-6MHz;2) 通过不同按键实现频率的粗调和微调。(2)发挥部分1) 频率计范围为 大于5MHz;2) 测量相对误差的绝对值不大于 千分之一;3) 增加脉冲信号占空比的测量功能。三、课程设计的进度及安排项目时 间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系列单片机定时器/计数器有一个时钟输出TnCLKO允许控制位,当定时器/计数器溢出时,对应的一个管脚的电平会产生跳变,通过这个原理,就能产生方波,频率最大能达到主时钟频率的二分之一,本次课程设计,本人设定的单片机主时钟是33.1776MHz,理论上能产生16.5888MHz的方波,满足课程设计方波发生器最高5MHz的要求。由于定时器溢出时间不能做到很长,定时器时钟输出的不能做到很低甚至是1Hz的频率,所以要产生低频的方波,可在定时器中断服务程序里取反某个管脚,以达到产生低频方波的目的,因此方波发生器分为了高频和低频部分。图4-1(2)数字频率计数字频率计的功能实现,同样可以利用定时器完成。由于定时器可以充当计数器,当用作计数器时,当外部管脚来一个脉冲后,由THn和TLn组成的16位寄存器就会加1,1秒内统计其增加的次数便是所要测得的频率。占空比的检测,也可以利用定时器/计数器完成。如图4-1,当定时器/计数器的GATE位为1的时候,只有在INT0管脚为高电平的时候,定时器/计数器才开始计数,因此,可以确定INT0高电平的时间。再用另一个定时器你记录总时间,两者一相除,即是所要测得的占空比。(3)电路原理图(4)程序资源分配与按键说明图(5)程序流程图No No Yes No 开始程序初始化(定时器、外部中断、引脚等)显示LED数码管占空比模式?定时器0定时器1定时器2定时器3定时器4计数产生高频方波每秒输频率计频率低频模式?产生低频方波频率计计数测占空比:当INT0=1时计数外部中断1设置模式LED数码管显示按键检测设置模式?每秒输出占空比数值测占空比/非测试占空比模式切换分配各个定时器的资源调度各个定时器的状态While(1) Yes Yes 开 启 中 断 五、课程设计实物与调试(1)IAP15W4K58S4开发板(2)程序运行调试图五、心得与体会结束为期两周的单片机课程设计,让我加深了对新型15单片机的理解,由与单片机控制系统可以应用到生活中的很多地方,解决生活和学习中的一些简单的用电子控制的问题,使我意识到了单片机的重要性。编程的过程中,发现要考虑很多个细节的问题,这样程序才会完美,一些细微的差错,会让程序产生许多意想不到的bug。总结经验的时候我得出这样的结论:学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要理论联系实际,这样才会取得事半功倍的效果。最后,感谢老师在课程设计中给我提供的帮助。五、参考文献STC单片机原理及应用-清华大学出版社2015年6月第一版 何宾 姚永附录1 IAP15W4K58S4开发板原理图 附录2 程序源代码#include "STC15Fxxxx.h"#define uint8 unsigned char#define uint16 unsigned int#define uint32 unsigned long int uint16 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;/定时器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_counter_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_flag=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;TH0=0;counter0_count+;/* 定时器1中断服务程序 */void Interrupt_timer1() interrupt 3 /2毫秒33.1776MHzif(duty_flag)/如果是占空比模式TL1=0;TH1=0;duty_count+;else timer1_count+;if(timer1_count>=500) /如果不是占空比模式,则频率计每秒计算一次频率并显示 counter_h=TH0;counter_l=TL0;counter_frequency=counter0_count*65536+counter_h*256+counter_l;counter0_count=0;TL0=0;TH0=0; LED7s_DisplaySet(counter_frequency,led_data);timer1_count=0;if(lf_flag) /如果不是占空比模式,且方波发生器为低频模式,则P30产生低频方波interrupt_count_data+;if(interrupt_count_data>=interrupt_count)P30=!P30;interrupt_count_data=0;/* 定时器4服务程序 */void Interrupt_timer4() interrupt 20 /20毫秒33.1776MHztimer4_count+;if(timer4_count>=50) /1scounter_h=TH0;counter_l=TL0;duty_counter_h=TH1;duty_counter_l=TL1;counter_frequency=counter0_count*65536+counter_h*256+counter_l;counter_duty=duty_count*65536+duty_counter_h*256+duty_counter_l;duty_count=0;counter0_count=0;TL1=0;TH1=0;TL0=0;TH0=0; LED7s_DisplaySet(counter_frequency*100)/counter_duty,led_data);timer4_count=0;/* 定时器3中断服务程序 */void Interrupt_timer3() interrupt 19 /24毫秒33.1776MHz if(set_flag)set_count+;if(set_count>100)TR1=1;/定时器1开启计时set_count=0;set_flag=0;if(!P54) /Key3,增加频率T4T3M &= 0xf7;/定时器3关闭计时TR1=0;set_flag=1;set_count=0;Delay1ms(10);if(!P54)P2=0;while(!P54) ;if(lf_flag)/负数if(P32)/微调+if(interrupt_count=1)lf_flag=0;interrupt_count=0;INT_CLKO|=0x04;/T0的P3.0输出打开AUXR |= 0x10;LED7s_DisplaySet(value,led_data);elseif(interrupt_count>128)interrupt_count-=4;else if(interrupt_count>64)interrupt_count-=2;elseinterrupt_count-;LED7s_DisplaySet(interrupt_count,led_data);else /粗调+if(interrupt_count!=1) /不是-1if(interrupt_count>128)interrupt_count=128;else if(interrupt_count>64)interrupt_count=64;else if(interrupt_count>32)interrupt_count=32;else if(interrupt_count>16)interrupt_count=16;else if(interrupt_count>8)interrupt_count=8;else if(interrupt_count>4)interrupt_count=4;else if(interrupt_count>2)interrupt_count=2;elseinterrupt_count=1;LED7s_DisplaySet(interrupt_count,led_data);else /是-1lf_flag=0;interrupt_count=0;INT_CLKO|=0x04;/T0的P3.5输出打开AUXR |= 0x10;LED7s_DisplaySet(value,led_data); else /正数if(P32)/微调+if(value!=65535)if(value<32768)value+=4096;else if(value<49152)value+=768;else if(value<62464)value+=128;else if(value<64512)value+=16;else if(value<65472)value+=2;elsevalue+;LED7s_DisplaySet(value,led_data);T2H=value>>8;T2L=value;else /粗调+if(value<16384)value=16384;else if(value<32768)value=32768;else if(value<49152)value=49152;else if(value<53248)value=53248;else if(value<57344)value=57344;else if(value<61440)value=61440;else if(value<62464)value=62464;else if(value<63488)value=63488;else if(value<64512)value=64512;else if(value<64640)value=64640;else if(value<64768)value=64768;else if(value<64832)value=64832;else if(value<64896)value=64896;else if(value<64960)value=64960;else if(value<65024)value=65024;else if(value<65088)value=65088;else if(value<65152)value=65152;else if(value<65216)value=65216;else if(value<65280)value=65280;else if(value<65344)value=65344;else if(value<65408)value=65408;else if(value<65472)value=65472;else if(value<65504)value=65504;elsevalue=65535;LED7s_DisplaySet(value,led_data);T2H=value>>8;T2L=value;else if(!P55) /Key4,降低频率T4T3M &= 0xf7;/定时器3关闭计时TR1=0;set_flag=1;set_count=0;Delay1ms(10);if(!P55)P2=0;while(!P55) ;if(value=0) /负数或value等于0if(P32) /微调-if(interrupt_count!=255)if(interrupt_count>128)if(interrupt_count>=251)interrupt_count=255;else interrupt_count+=4;else if(interrupt_count>64)interrupt_count+=2;elseinterrupt_count+;else /粗调-if(interrupt_count<2)interrupt_count=2;else if(interrupt_count<4)interrupt_count=4;else if(interrupt_count<8)interrupt_count=8;else if(interrupt_count<16)interrupt_count=16;else if(interrupt_count<32)interrupt_count=32;else if(interrupt_count<64)interrupt_count=64;else if(interrupt_count<128)interrupt_count=128;elseinterrupt_count=255;INT_CLKO&=0xfb;/T0的P3.0输出关闭AUXR&=0xef;lf_flag=1;LED7s_DisplaySet(interrupt_count,led_data);else /正数if(P32) /微调-if(value<32768)if(value<=4096)value=0;elsevalue-=4096;else if(value<49152)value-=768;else if(value<62464)value-=128;else if(value<64512)value-=16;else if(value<65472)value-=2;elsevalue-;LED7s_DisplaySet(value,led_data);T2H=value>>8;T2L=value;else /粗调-if(value=0)INT_CLKO&=0xfb;/T0的P3.0输出关闭AUXR&=0xef;lf_flag=1;interrupt_count+;LED7s_DisplaySet(interrupt_count,led_data);elseif(value>65504)value=65504;else if(value>65472)value=65472;else if(value>65408)value=65408;else if(value>65344)value=65344;else if(value>65280)value=65280;else if(value>65216)value=65216;else if(value>65152)value=65152;else if(value>65088)value=65088;else if(value>65024)value=65024;else if(value>64960)value=64960;else if(value>64896)value=64896;else if(value>64832)value=64832;else if(value>64768)value=64768;else if(value>64640)value=64640;else if(value>64512)value=64512;else if(value>63488)value=63488;else if(value>62464)value=62464;else if(value>61440)value=61440;else if(value>57344)value=57344;else if(value>53248)value=53248;else if(value>49152)value=49152;else if(value>32768)value=32768;else if(value>16384)value=16384;elsevalue=0;LED7s_DisplaySet(value,led_data);T2H=value>>8;T2L=value;T4T3M |= 0x08;/定时器3开始计时/* 1ms延时函数 */void Delay1ms(uint8 x)/33.1776MHzunsigned char i, j;while(x-)_nop_();_nop_();i = 33;j = 66;dowhile (-j); while (-i);/* 32位整型转数码管代码索引函数 */void LED7s_DisplaySet(uint32 lNum,uint8 led_data8)if(lNum=0)led_data0=0;led_data_length=1;elseint i=0;while(lNum!=0) led_datai=lNum%10;lNum/=10;i+;led_data_length=i; /* 主函数 *

    注意事项

    本文(03130330郑成达单片机课程设计报告.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开