基于DSP的频率计毕业设计论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于DSP的频率计毕业
设计论文
目录
1 前言 (1)
1.1 选题意义 (1)
1.2 国内外研究现状 (1)
1.3 本文主要工作 (2)
1.4 本文结构安排 (2)
2 总体方案设计与论证 (3)
2.1 设计方案选择 (3)
2.2 方案设计与论证 (4)
2.3 系统结构框图 (5)
3 系统硬件设计 (7)
3.1 硬件电路说明 (7)
3.2 硬件电路模块介绍 (7)
3.2.1 AT89S51单片机简介 (7)
3.2.2 驱动电路 (11)
3.2.3显示电路 (11)
3.2.4复位电路 (13)
3.2.5掉电保护电路 (14)
3.2.6时钟电路 (16)
3.2.7按键电路 (17)
4 系统软件设计 (19)
4.1 系统程序设计 (19)
4.2 各模块程序设计 (20)
4.2.1 掉电模块——I2C总线接口设计 (20)
4.2.2 按键模块设计 (23)
4.2.3 显示模块设计 (23)
4.2.4 测试里程模块设计 (24)
4.2.5 计费模块设计 (25)
5 系统调试及指标测试 (27)
5.1 软件测试 (27)
5.1.1 程序调试工具—KEIL (27)
5.1.2 单片机仿真软件在线调试—PROTUES (28)
5.2 硬件测试 (30)
6 结论与展望 (33)
6.1 结论 (33)
6.2 不足与展望 (33)
致谢.................................................................................. 错误!未定义书签。

参考文献.. (35)
附录 (37)
1 前言
1 前言
1.1 选题意义
近年来,随着出租车的普及使其成为人们工作,生活不可缺少的交通工具。

出租车行业的收费标准也随之被人们日益重视,出租车计价器已成为乘客和驾驶员之间公正合理收费的依据,起到双方“公平称”的作用。

汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。

具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。

微型计算机已经广泛应用于各行各业,促进了社会的进步。

作为今天的设计人员,必须很好的掌握微型计算机的概念与技术。

书本上学习的知识通常只是理论上的东西,而现实工作中的则是与实际结合很紧密的事情。

所以实践是必不可少的掌握所学内容的阶段。

现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。

随着城市建设益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。

因此,汽车计价器的研究也是十分有一个应用价值的。

1.2 国内外研究现状
我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。

随着改革开放益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。

出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打发票和语音提示、按时间自主变动单价等功能。

出租车计价器就是单片微型计算机的一个典型的应用。

现在市面上的出租车计价器品种繁多、功能强大。

作为一个毕业设计的课题,本着从大处着眼,从小处入手的原则,对单片机的应用做了一些初步的尝试和探讨。

出租车计价器一般采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。

为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

1
西安交通大学城市学院本科生毕业设计(论文)
现在可采用的设计方案较多,比如可采用单片机、PLC、VHDL、DSP、FPGA、ARM等等。

各种方案都有各自的优点,如果采用模拟电路和数字电路设计的计价器,整体的电路规模会比较大,用到的器件比较多,造成故障率高,很难调试,所以我们采用单片机方案。

在这里主要介绍单片机方案:单片机硬件与软件结合,硬件设计简单,单片机的接口较为丰富,可以很容易扩展出许多外部设备,并且软件调试过程容易实现。

编程语言采用C语言,使用起来较为简单,软硬件接口设置方便。

在本设计中,采用AT89S51单片机为主控器,并采用AT24C02实现在系统掉电的时候保存单价等信息,输出采用8段数码管显示。

1.3 本文主要工作
本文设计了一台出租车计价器,完成了一下工作:
1)通过查阅相关资料,深入了解出租车计价器的工作原理;
2)复习“MCS-51单片机原理及C语言程序设计”,掌握其接口扩展包括:显示、键盘等;
3)按照设计基本要求组建基于单片机的出租车计价器的总体结构框图,构建硬件平台;
4)采用C语言编写应用程序,要进行初始化,包括对系统初始化和对存储器初始化,要对硬件设备进行初始化,并使硬件处于就绪状态;
5)通过判断是否计费,调价,清零等状态,来分别调用不同的子程序。

然后对系统进行软件仿真,硬件测试和结果分析,并且达到预期目标。

1.4 本文结构安排
第一章:前言;
第二章:总体方案设计与论证;
第三章:系统硬件电路设计;
第四章:系统软件设计;
第五章:系统调试与指标测试;
第六章:项目的综合评价与展望。

2
2 总体方案设计与论证
3
2 总体方案设计与论证
2.1 设计方案选择
1)方案1
采用中小规模数字电路构成计价器,由计数器构成主要的测量模块,由定时器组成主要的控制电路,通过在555振荡器上接入不同电阻选择白天、晚上、红灯或堵车,停车报价。

电路框图如图2-1。

开关选择555振荡器计数器模块控制显示电路
语音播报
图2-1 方案一
2)方案2
用555振荡器模拟车轮转数,用89S52实现外围计数功能,控制单片机P1口的相关开关实现白天,晚上,红灯,停车报价之间的切换,P0口作并行输出。

显示模块选用7个数码管实现动态显示。

电路框图如图2-2。

555振荡器
复位单片机开关
显示
图2-2方案二
3)方案3
出租车驱动轮转数与轴转数的传动比是一定的,磁感应传感器会产生一个大约20MS 的低脉冲,可以通过计算磁感应传感器产生的低脉冲数来计算出租车跑的里程数及相应的车费。

编码器的单片机通过一个I/O 口来检测磁感应传感信号,当确定为传感器产生信号时,就通过里一个I/O 口向解码器的单片机发送一组编码,则解码器的单片机首先判断当前准备接收的数据时编码器发送的编码还是解码器写入器的发送的解码,当判断解码器写入的解码时,解码器的单片机接收此解码,并用
西安交通大学城市学院本科生毕业设计(论文)
4
12C 总线协议将解码保存到EEPROM 中;当判断是编码器发送来的编码时,解码器的单片机接收此编码,然后读出自己EEPROM 中的解码,语气接收到的解码相比较,若相同解码器单片机通过I/O 口向计价装置发出计价脉冲,否则不发出计价脉冲。

此方法解决了以前计价器计价不准确,使用寿命短等缺点 磁感应传感器译码器计价
编码器译码写入器
图2-3 方案三
4)方案4
采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,而且灵活性较强,可以通过软件编程来完成更多的附加功能。

设计采用AT89S51单片机为主控制器,通过按键代替实现霍尔传感器测距,实现对出租车的基本计价设计,并采用AT24C02实现在系统中掉电的时候保存单价等信息,输出采用8段数码管显示器。

利用单片机丰富的I/O 口,及控制的灵活性,实现基本的计价功能。

系统框图2-3如下: 89S51单片机
复位电路
掉电保护时钟电路按键控制
显示模块
显示总里程和总金额
图2-4 方案四
2.2 方案设计与论证
方案1系统电路较复杂,不能程控和扩展,难以实现白天晚上不同价位和单价调整,尚有进一步优化的空间。

方案2采用单片机进行的设计,用较少的硬件和适当的软件相互配合容易的
2 总体方案设计与论证
5
实现设计要求,可以通过软件编程来完成更多的附加功能。

但是考虑到555振荡器价格昂贵,尚有进一步优化的空间。

方案3解决了以前计价器计价不准确,使用寿命短等缺点。

但此方法通常使干扰信号也能产生计数脉冲,分立元件过于复杂,电路稳定性不好。

方案4利用丰富的I/O 端口,及其控制的灵活性,动态显示降低了硬件成本和电源损耗。

在设计中采用一个模拟开关来代替。

通过在软件程序中设置的里程和金额的信息,再加上驱动电路的设计,就可以在数码管上分别显示总金额和总里程,价格便宜而且方便易懂。

综上所述,采用方案3较好。

2.3 系统结构框图
系统结构图如2-5所示: AT89S51独立键盘
AT24C01
数码管动态
显示
调整切换
计算输出
按键输入数据存储
图2-5 系统结构图
在方案四中,设计电路时,考虑到里程传感器价格昂贵,且不便于试验测试,在设计中采用一个模拟开关来代替。

模拟开关一端接在P3.4口,另一端接地,通过来回高低电平的变化,每按两次,对应的里程数加一。

通过在软件程序中设置的里程和金额的信息,再加上驱动电路的设计,就可以在数码管上分别显示总金额和总里程。

设计中,为了能够让数码管更好的正常显示,本设计中采用了驱动电路来驱动,在本次硬件设计中,考虑采用芯片74LS245来驱动数码管显示。

在显示方面可以用液晶显示,也可以用数码管进行显示。

由于在这次设计中只需要显示里程和金额信息,设计时采用数码管进行显示。

这样既节约了成本,又可以达到显示的目的。

同时为了减少硬件的复杂度,本论文采用了动态显示方式,选用了共阴极数码管。

同时,还设计了控制按键,能够很好的对出租车计价器控制,如启动、停止按键,清零按键等。

西安交通大学城市学院本科生毕业设计(论文)6
3 系统硬件设计
3 系统硬件设计
3.1 硬件电路说明
在本次设计中,硬件组成包括:AT89S51,驱动电路,显示电路,复位电路,掉电保护电路,时钟电路,按键电路等几个部分。

单片机是单片微型计算机的简称,单片机以其卓越的性能得到广泛的使用。

在这次设计中,我们采用AT89S51单片机,其中用到的I/O口为P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。

【1】
出租车计价器根据乘客乘坐汽车行驶距里或所用时间的多少进行计价,并在行程中同步显示车费值。

从起步价开始,当汽车程行驶未满2公里时,均按起步价计算。

过2公里后,实现每1公里单价收费,测距收费或测时收费的和便构成了一位乘客的车费。

同时,白天和夜晚价格不同,根据判断时间可以进行切换。

白天单价、夜晚单价和起步价格都可以读取当前时间进行调节。

在系统设计时,按下计价按键时,显示起步价和起步里程范围,这些在程序中显示,当等于或超过两公里后,按计算总价的公式为:
总价=起步价+单价*(总里程-起步里程)+1
3.2 硬件电路模块介绍
3.2.1 AT89S51单片机简介
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4k Bytes ISP(In-System Programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案. 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128
7
西安交通大学城市学院本科生毕业设计(论文)
bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

【2】
单片机各管脚功能介绍:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

PO口有两个功能:
外部扩展存储器时,当作数据/地址总线。

不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

【3】
8
图3-1 AT89S51引脚图
VCC:接+5V电源;
GND:接地;
P1.0:接启动/停止按键,控制计价;
P1.1:按功能键;
P1.3:按清零键;
P0口接数码管选段,P2口接驱动芯片;
P3.4(T0)接模拟开关按键,替代了出租车计价器中的传感器;
P3.0、P3.1口接掉电保护电路。

时钟引脚:XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路,它可以使单片机稳定可靠的运行;
RST:复位信号输入端,高电平有效。

当在此引脚加两个周期的高电平时,就可以完成复位操作;
ALE/PROG:当访问外部存储器时,ALE(地址锁存允许)输出电平用于锁存地址的低8位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE操作,可通过特殊功能寄存器(SFR)区中的8EH单元的D0位置位。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将
内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

图3-2 AT89C51的内部结构框图
AT89S51主要特性
1)兼容MCS-51指令系统,4k可反复擦写(>1000次)ISP Flash Rom
2)32个双向I/O口,4.5-5.5v工作电压
3)2个16位可编程定时/计数器,时钟频率0-33MHz
4)全双工UART串行中断口线,128x8Bit内部RAM
5)2个外部中断源,低功耗空闲和省电模式
6)中断唤醒省电模式,3级加密位
7)看门狗(WDT)电路,软件设置空闲和省电功能
8)灵活的ISP字节和分页编程,双数据寄存器指针
3.2.2 驱动电路
74LS245是我们常用的芯片,用来驱动LED或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。

74LS245还具有双向三态功能,既可以输出,也可以输入数据。

当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。

当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输(接收);DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。

图3-3 74LS245芯片
3.2.3显示电路
用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。

静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少的CPU 时间。

动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。

这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线
路板空间,更重要的是能节省成本。

硬件译码就是显示的段码完全由硬件完成,CPU只要送出标准的BCD码即可,硬件接线有一定标准。

软件译码是用软件来完成硬件的功能,硬件简单,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。

在显示方面我们选用了LED显示器动态显示。

静态显示虽然亮度较高,接口编程容易,但是每位的段码线分别与一个8位的锁存器输出相连,占用的I/O 口较多,在显示位数较多的情况下,一般采用动态显示。

在多位LED显示时,为了简化电路,降低成本,将所有位LED的段选线并接在一起,在某一刻时,将要显示的字符段码同时送到每一个显示器的各段,但是只让这一位LED显示。

下一时刻又送下一位LED要显示字符的段码,并只让下一位LED显示…….如此轮流,使每位显示该为的字符,这样不断的循环送出响应的段选码﹑位选码,就可以获得视觉稳定的显示状态。

【9】
图3-4 显示电路设计原理图
LED数码有共阴和共阳两种,把这些LED发光二极管的正极接在一起(一般是拼成一个8字加一个小数点)而作为一个引脚,叫做共阳的,反之就叫共阴的,那么应用时这个脚就分别接VCC和GND。

然后把多个这样的8字装在一起就成了多位数码管了。

共阴数码管,阴极接地,当某个发光二极管的阳极为高电
平时,发光二极管点亮,对应的段就显示。

在本次设计仿真中使用的是6个一组的共阴8段数码管,如下图所示:
图3-5 共阴极8段数码管示意图
3.2.4复位电路
单片机的复位是由外部的复位电路实现的,无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。

而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。

许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。

所以设计好复位电路是至关重要的。

系统开始运行和重新启动靠复位电路来实现,这种工作方式为复位方式。

单片机在开机时都需要复位,以便CPU及其他功能部件都处于一种确定的初始状态,并从这个状态开始工作。

【11】
复位电路通常采用上电复位和按钮复位两种方式。

上电复位是通过外部复位电路的电容充电来实现的。

除了上电复位外还需要按键手动复位。

按键手动复位有电平方式和脉冲方式两种。

其中电平方式复位是通过RST端经电阻与电源VCC接通而实现的。

单片机复位速度比外围I/O接口电路快,并能保证系统可靠地复位,在初始化程序中安排一定的复位延迟时间。

AT89S51的复位端高电平有效。

RST端若由低电平上升到高电平并持续两个周期,系统将实现一次复位操作。

在复位电路中,按下一个复位开关就使在RST 端出现一段时间的高电平,就实现复位。

图3-6 复位电路模块设计
3.2.5掉电保护电路
单片机实现的仪器仪表,家用电器,工业监控等系统中,对某些状态参数,不仅要求能够在线修改,而且断电能保持,以备上电后恢复系统的状态。

断电数据保护方法可选用具有断电保护功能的RAM和电可擦存储器EEPROM。

具有断电保护功能的RAM容量大,速度快,但占用线多,成本高,EEPROM适合数据交换量少,对传送速度要求不高的场合。

【11】
EPROM有并行和串行之分,并行EEPROM速度比串行快,容量大。

串行芯片成本低,线路简单,工作可靠,占用单片机口线资源少。

AT24CX系列串行EEPROM是目前单片机应用系统中使用较多的EEPROM 芯片。

其系列串行EEPROM除具有体积小、功耗低、工作电压有效范围宽等特点外,还具有型号多,容量大,I2C总线协议,占用I/O口线少,芯片扩展配置方便灵活,读/写操作相对简单等优点。

在智能化装置中,正日益获得广泛应用。

AT24CX系列EEPROM为串行的用电擦除的可编程CMOS只读存储器。

自定时写周期包括自动擦除时间不超过10ms,典型时间为5ms。

擦除/写入周期寿命一般都可达到10万次以上。

片内数据保存寿命可达410年以上。

采用单一电压+5V,低功耗工作电流1mA,备用状态只有10uA,端口为三态门输出,与TTL 电平兼容。

一般商业品工作温度为0~+70℃,工业品为-40~+85℃。

这个系列的芯片有8脚DIP(双列直插)封装,8脚SOIC(表面贴装)封装,一部分型号还有14脚SOIC封装。

【10】
掉电保护电路中采用了存储芯片AT24C02。

它的作用是在电源断开的时候,存储当前设置的单价信息,采用串行的总线和单片机的通讯。

AT24C02系列串行EEPROM引脚、容量及结构
目前我国应用最多的封装形式是8脚封装,如图3-6所示:
图3-7 AT24C02型号和引脚
图中R1,R2是上拉电阻,其作用时减少AT24C02的静态功耗。

由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL (时钟脉冲)和SDA(数据/地址)与单片机P3.1和P3.0连接,进行传送数据。

每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内,当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元里,供主程序使用。

AT24C02的EEPROM的引脚说明如下:
1)SCL—串行时钟端,用于对输入和输出数据的同步。

写入串行EEPROM 的数据用SCL上升沿同步,输出数据用下降沿同步
2)SDA—串行数据输入/输出端,漏极开路结构。

使用时该引脚必须接一个5.1KΩ左右的上拉电阻。

SDA线上数据传送顺序是高位在先,低位在后。

3)WP—写保护,用于硬件数据保护功能。

当该引脚接地时,可以对整个存储器进行正常读/写操作;当其接电源Vcc 时,芯片就具有写保护功能,被保护的区域因型号而异。

被保护部分的读操作不受影响,实际上这时被保护的区域就可以作为串行只读存储器。

英注意,对AT24C08芯片,虽然第7脚也定义为WP,但实际不起作用。

A0,A1,A2—片选或以页面选择地址输入,用于EEPROM器件地址编码。

相关文档
最新文档