单片机课程设计报告书课题名称测频仪设计姓名陈兴学号20106666院、系、部电气工程系专业电气工程及其自动化指导教师马丽2013年7月10日※※※※※※※※※※※※※※※※※※※※※※※※2010级单片机课程设计1测频仪设计一、设计目的基于51系列的单片机进行的测频仪系统设计,完成频率的测试和频率范围的选择,并在LED上相应的显示结果。设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入不同频率的频率。显示采用5位7段共阴极LED静态显示。软件方面从分析测频仪的功能、流程图设计,再到程序的编写进行系统设计。通过学生独立设计方案并自己动手用测频仪电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。二、设计要求本次课程设计,我选择的课题是单片机测频仪硬软件设计,设计任务为:1、测量并显示所测频率;2、通过按键切换测量范围;3、本机地址为07H,当接到上位机发的07H时,则回发07H。当接到上位机发的AAH时,则将所测频率发给上位机;4、具有较强的抗干扰能力;2三、硬件电路3.1系统电路原理图33.2系统框图图3-1系统框图全自动洗衣机控制系统由单片机、LED显示、开关、晶振及锁存器五部分组成。系统框图如图3-1所示。3.3STC89C52单片机介绍89C52共有四个八位的并行双向口,即有32根输入输出口线。各口的每一位均由锁存器、输出驱动器和输入缓冲器组成。VCC(40引脚):电源电压,VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电4流。P1口特点是输出锁存器,输出时没有条件。输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1。此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)P3口为准双向口。可以字节访问,也可以位访问。P3.0---RXD,串行输入口。P3.1---TXD,串行输出口。P3.2---INT0,外部中断0的请求。P3.3---INT1,外部中断1的请求。P3.4---T0,定时器/计数器0外部计数脉冲。P3.5---T1,定时器/计数器,1外部计数脉冲。P3.6---WR,外部数据存储器写选通。P3.7---RD,外部数据存储器读选通。RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。ALE(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。STC89C52引脚图如图3-2所示。图3-2STC89C52引脚图5四、流程图设计4.1主程序流程图图4-1主程序流程图4.2从机程序流程图图4-2从机程序流程图6五、程序设计#includest.hstaticdatabitTran_mark;staticdataucharReci_num;staticdataucharchar_num;staticdataucharAsk;uchardataxbuf[10];uchardata*Sram;ucharcounter=0;ulongtimer_tick,grand;uintExtInt=0,ExInt1=0;ucharFre_0,Fre_1,Fre_2;uchargrand_0,grand_1,grand_2,grand_3;ucharTimer0OverFlowCnt,Timer0OverFlowCntBUF;ucharTL0BUF,TH0BUF;voidInit_System(){IT1=1;EX1=1;EA=1;P14=0;}voidUart_Init(){TMOD=0x21;SCON=0x50;PCON=0x00;TL1=0xFB;TH1=0xFB;ES=1;TR1=1;TL0=(TIMER0_COUNT&0x00FF);TH0=(TIMER0_COUNT8);7//TR0=1;ET0=1;}voidmain(){uchari;Init_System();Uart_Init();while(1){P10=0;P11=0;P00=1;Ask=0;Reci_num=0;char_num=0;Sram=xbuf;memset(xbuf,0,10);while(Reci_num==0);if(xbuf[2]==(0xff&(xbuf[0]+xbuf[1]))){if(xbuf[1]==0x01){P10=1;P11=1;P00=0;memset(xbuf,0,10);xbuf[0]=0xff;xbuf[1]=0x01;xbuf[2]=0xff&timer_tick;xbuf[3]=0xff&(timer_tick8);xbuf[4]=0xff&(timer_tick16);xbuf[5]=0xff&grand;xbuf[6]=0xff&(grand8);8xbuf[7]=0xff&(grand16);xbuf[8]=0xff&(grand24);xbuf[9]=0xff&(xbuf[0]+xbuf[1]+xbuf[2]+xbuf[3]+xbuf[4]+xbuf[5]+xbuf[6]+xbuf[7]+xbuf[8]);Sram=xbuf;for(i=0;i10;i++){Tran_mark=1;SBUF=*Sram++;while(Tran_mark);}}}}}staticvoidTimer0_int(void)interrupt1{TL0=(TIMER0_COUNT&0x00FF);TH0=(TIMER0_COUNT8);Timer0OverFlowCnt++;if(Timer0OverFlowCnt=50){Timer0OverFlowCnt=0;ExtInt=0;}}voidSerial_int()interrupt4{uchartsbuf;ES=0;if(RI){tsbuf=SBUF;if(tsbuf==0xff)9{Ask++;}if(Ask){char_num++;*Sram++=tsbuf;}if(char_num==3){Reci_num++;}RI=0;}else{Tran_mark=0;TI=0;}ES=1;}voidExInt1_int(void)interrupt2{EX1=0;ExtInt++;//ExtInt1++;if(ExtInt==1){TR0=1;}if(ExtInt==21){TR0=0;TL0BUF=TL0;10TH0BUF=TH0;Timer0OverFlowCntBUF=Timer0OverFlowCnt;TL0=0x00FF&TIMER0_COUNT;TH0=0x00FF&(TIMER0_COUNT8);Timer0OverFlowCnt=0;ExtInt=0;timer_tick=((((TH0BUF8)|TL0BUF))+(Timer0OverFlowCntBUF*65536));grand=grand+timer_tick;}EX1=1;}六、设计总结通过这次小学期实践,我能够进一步加深对专业知识和理论知识的学习和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过实验,一点点改正。在实验的同时也让我发现了自己的许多不足之处,对以前所学的知识尤其是一些细节方面的知识理解的不够深刻,比如一些原件的目的、使用要求等。但从今以后我会更加努力的学习,将课本知识牢记并争取能与实际结合起来。最后在老师的辛勤的指导下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且得到了锻炼!11七、参考文献[1]高峰.单片微型计算机原理与接口技术.科学出版社,2007.[2]胡汉才.单片机原理及其接口技术.清华大学出版社,2004.[3]李勋.单片机微型计算机大学读本.北京航空航天大学出版社,2002.[4]王幸之.单片机应用系统抗干扰技术.北京航空航天大学出版社,2001.[5]张毅刚.单片机原理及应用.高等教育出版社,2004.