单片机测频仪设计

更新时间:2024-05-05 19:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

※※※※※※※※※ ※※

※※

2011级

※ ※

单片机课程设计

※※※※※※※※※

单片机课程设计报告书

课题名称 姓 名 学 号 院、系、部 专 业 指导教师

2014年6月26日

测频仪设计

电气工程系 电气工程及其自动化

测频仪设计

一、设计目的

本次课程社级是用单片机进行的测频仪系统设计,完成频率的测试和频率范围的选择,并在八位数码管上相应的显示结果。设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的89c52单片机,输入不同频率的频率。显示采用八位数码管。软件方面从分析测频仪的功能、流程图设计,再到程序的编写进行系统设计。通过独立设计方案并自己动手用测频仪电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。

二、设计要求

本次课程设计,我选择的课题是单片机测频仪硬软件设计,设计任务为: 1、测量并显示所测频率; 2、通过按键切换测量范围;

3、本机地址为07H,当接到上位机发的07H时,则回发07H。当接到上位机发的AAH时,则将所测频率发给上位机;

4、具有较强的抗干扰能力;

三、硬件电路

3.1系统电路原理图

设计电路图如图3-1

1

图3-1 系统电路图

2

3.2 系统框图

测频仪系统由单片机、LED显示、开关、晶振、控制按钮及锁存器六部分组成。系统框图如图3-2所示。

控制按钮

图3-2 系统框图

3.3 STC89C52单片机介绍

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口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。

P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。P1口特点是输出锁存器,输出时没有条件。输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1。

此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)

3

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-3 STC89C52引脚图

四、流程图设计

4.1主程序流程图

4

图4-1 主程序流程图

4.2 从机程序流程图

图4-2 从机程序流程图

五、程序设计

#include \

static data bit Tran_mark;

5

static data uchar Reci_num; static data uchar char_num; static datauchar Ask; uchar data xbuf[10]; uchar data *Sram; uchar counter=0; ulong timer_tick,grand; uint ExtInt=0,ExInt1=0; uchar Fre_0,Fre_1,Fre_2;

uchar grand_0,grand_1,grand_2,grand_3; uchar Timer0OverFlowCnt,Timer0OverFlowCntBUF; uchar TL0BUF,TH0BUF; void Init_System() { IT1=1; EX1=1; EA=1; P14=0; }

void Uart_Init() {

TMOD=0x21; SCON=0x50; PCON=0x00; TL1=0xFB; TH1=0xFB; ES=1; TR1=1;

TL0=(TIMER0_COUNT & 0x00FF); TH0=(TIMER0_COUNT >> 8); //TR0=1; ET0=1; }

void main()

6

{ uchar i; 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_tick>>8); xbuf[4]=0xff&(timer_tick>>16); xbuf[5]=0xff&grand; xbuf[6]=0xff&(grand>>8); xbuf[7]=0xff&(grand>>16); xbuf[8]=0xff&(grand>>24);

xbuf[9]=0xff&(xbuf[0]+xbuf[1]+xbuf[2]+xbuf[3]+xbuf[4]+xbuf[5]+xbuf[6]+xbuf[7]+xbuf[8]);

7

Sram=xbuf; for(i=0;i<10;i++) {

Tran_mark=1; SBUF=*Sram++; while(Tran_mark); } } } } }

static void Timer0_int(void) interrupt 1 {

TL0=(TIMER0_COUNT & 0x00FF); TH0=(TIMER0_COUNT >> 8); Timer0OverFlowCnt++; if(Timer0OverFlowCnt>=50) {

Timer0OverFlowCnt=0; ExtInt=0; } }

void Serial_int() interrupt 4 {

uchar tsbuf; ES=0; if(RI) {

tsbuf=SBUF; if(tsbuf==0xff) { Ask++; } if(Ask)

8

{

char_num++; *Sram++=tsbuf; }

if(char_num==3) {

Reci_num++; } RI=0; } else {

Tran_mark=0; TI=0; } ES=1; }

void ExInt1_int(void) interrupt 2 { EX1=0; ExtInt++; //ExtInt1++; if(ExtInt==1) { TR0=1; }

if(ExtInt==21) { TR0=0; TL0BUF=TL0; TH0BUF=TH0;

Timer0OverFlowCntBUF=Timer0OverFlowCnt; TL0=0x00FF&TIMER0_COUNT; TH0=0x00FF&(TIMER0_COUNT >> 8);

9

Timer0OverFlowCnt=0; ExtInt=0;

timer_tick=((((TH0BUF<<8)|TL0BUF))+(Timer0OverFlowCntBUF*65536)); grand = grand+timer_tick; } EX1=1; }

六、设计总结

经过几天的努力,终于完成了本学期的单片机课程设计,过程虽是辛苦的,但从中我学到了很多东西,通过这次课程设计,使我对硬件电路的工作原理有了进一步的学习,进一步的认识。在这次课程设计中我遇到了一些困难,但在老师的指导和同学的帮助,再加上自己查阅了些许资料的情况下都解决了。虽然课程设计进行的不够顺利,但还是完成了任务,使自己的专业知识又得到了提升。在制作过程中熟练了Portel 的制图方法,同时对单片机有了进一步的认识,巩固了课上学习的理论知识,对于计算机汇编语言的系统化整体化有了更深的认识。

在这次难得的课程设计过程中我们锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我们思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。同时感谢老师和同学的指导帮助。

10

七、参考文献

[1] 高峰.单片微型计算机原理与接口技术.科学出版社,2007. [2] 胡汉才.单片机原理及其接口技术.清华大学出版社,2004.

[3] 李勋.单片机微型计算机大学读本.北京航空航天大学出版社,2002. [4] 王幸之. 单片机应用系统抗干扰技术.北京航空航天大学出版社,2001. [5] 张毅刚.单片机原理及应用 .高等教育出版社,2004.

11

本文来源:https://www.bwwdw.com/article/ph2g.html

Top