ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:284.27KB ,
资源ID:20780535      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20780535.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(以智能速度里程表为主的多功能系统设计Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

以智能速度里程表为主的多功能系统设计Word格式文档下载.docx

1、 本题属于多功能任务设计,基于本实验室所提供的电路模板,具体题目为:以智能速度里程表为主的多功能任务设计;课题名字的多功能任务的含义是:要求所设计的电路和程序必须实现4个功能,电路提供四个按键,要求同学们能编写、调试对应的键盘扫描子程序,从而实现,当按下A按键,实现蜂鸣器或继电器动作,当按下B按键,实现LED流水灯(循环显示),当按下C按键,实现数码管动态扫描显示(显示内容可以自己确定),前3个功能,对于每个课题都是相同,只有最后一个按键不同,其功能取决于所选课题名称,即当按下D按键,要求实现相应课题的最主要的功能,例如,对于“以智能温度计为主的多功能任务设计”的课题,当按下该课题所对应的D按

2、键,就要实现显示温度的功能,其余类似。4所做题目的意义汽车是现代生活中不可或缺的一种重要交通工具,传统的指针式的里程表伴随着汽车的诞生就一直为人们接受,不过,新生事物不会因传统的存在而停止它前进的步伐,数码科技在今天已渗透到工业,农业,民用等产品的点点滴滴。新概念的车速里程表最直观的变化就是用大屏幕的液晶取代指针式表盘,直接用数字显示时速,里程,以及其他一些诸如油耗、时钟、环境温度等参数。直观的呈现给使用者。由于单片机体积小,可以把它做到产品的内部,取代老式机械零件,缩小产品体积,增强功能,实现智能化。因此广泛的被用在智能产品中。Intel公司的MCS-51系列单片机在近年来广泛流行。本文即介

3、绍一种基于MCS-51单片机的里程表的设计与实现。5本人所做工作以及系统的主要功能本人主要负责对程序的编写及调试本系统由信号采集处理模块、单片机STC89C52RC、数码管显示模块、系统软件组成。其中信号采集处理模块以中断信号为主,将不同的转速信号转换成相应的脉冲信号,并送到单片机的T1引脚;对单片机进行设置,使内部的定时器/计数器timer0工作在定时状态,timer1工作在计数状态,利用内部定时器T0对脉冲输入引脚T1进行控制,这样就能精确地检测到设定时间内加到T1引脚的脉冲数,一个脉冲即代表着车子前进一个轮长,对脉冲数进行处理就可得到里程和速度的数据;将数据送到数码管模块进行显示。1、S

4、TC89C52RCSTC89C52RC是由宏晶公司推出的一种小型单片机,是电子工程师常用器件。其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,且采用高密度非易失存储器制造技术制造,将多功能8位CPU和闪烁存储器组合在单个芯片中,可以很快被中国广大用户接受。其程序的电可擦写特性,使得开发与试验比较容易,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 STC89C52RC引脚功能 1电源:VCC - 芯片电源,接+5V;VSS - 接地端;2.时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。3.控制线:控制线共有4根:ALE/PRO

5、G:地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。PSEN:外ROM读选通信号。RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。4.I/O口线:P0、P1、P2、P3共四个八位口。P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存

6、储器的读/写操作。P0口也用以输出外部存储器的低8位地图1址。由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存,信号用ALE。P1口是专门供用户使用的I/O口,是准双向口。P2口是从系统扩展时作高8位地址线用。不扩展外部存储器时,P2口也可以作为用户I/O口线使用,P2口也是准双向口。P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。作为第一功能使用时操作同P1口。STC89C52RC图1 硬件总框图4.1.1按键控制扫描模块:按键用于控制数码显示、LED显示、扬声器等模块的工作。通过扫描按键是否按下,来设定上述各模块的工作情况,使各模块可以在按键的控制

7、下,有序地进行工作。4.1.2扬声器模块: 本设计是通过P3.7口控制扬声器发出连续,断续的声音。当按键1按下时,则由P3.7口输出方波信号,使扬声器发出声音。4.1.3LED显示模块: 根据流水灯的形式,建立流水灯显示程序。本设计中通过P2口控制流水灯的显示,8个LED共阳极,故P2口低电平有效。4.1.4数码显示模块:根据实际确定字形码表,建立显示子程序。本设计中采用四位共阳极数码管,通过单片机STC89C52RC的P1口控制其位选,以达到动态显示的效果,再通过P0口控制其段选以显示相应的数值。数码管有共阳和共阴之分,可用静态显示,也可用动态显示。静态显示,原理简单,容易编程,但电路复杂占

8、用的资源较多。动态显示电路,控制较难,但电路简单,在资源紧张时是首选。这里用的是动态显示。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起。字型共阳极段码C0H592H1F9H682H2A4H7F8H3B0H880H499H990H表1数码管动态显示接口地址图2 硬件原理电路图本设计中所用的单片机型号为AT89C52RC,其主要特性为:1)有CHMOS工艺的节能运行方式2)兼容MCS51指令系统 3)3个16位可编程定时/计数器中断4)2个串行中断5)2个外部中断源6)2个读写中断口线7)低功耗空闲

9、和掉电模式8)8k可反复擦写(1000次)Flash ROM9)256x8 bit内部RAM10)时钟频率0-24MHz11)可编程UART串行通道12)共6个中断源,3级加密位13)软件设置睡眠和唤醒功能3.3.1按键电路图3 按键电路由于本系统中按键数量较少,且单片机的I/O口相对富余,使用独立式键盘。同样,由于单片机高电平输出能力比低电平输出能力弱,使用如图所示的按键电路。读按键前,先将端口设置为高电平。此时,单片机内部由一个MOS管作为上拉电阻,在按键没被按下时,单片机端口人保持高电平;当按键被按下后,单片机I/O口被强行接地,变为低电平。按键电路中由于单片机内部MOS管有微弱的上拉作

10、用,所以外部硬件可以不接上拉电阻。3.3.2流水灯电路流水灯由单片机的P1口控制。考虑到单片机I/O口高电平驱动能力弱而低电平驱动能力强的特点以及系统功耗大小,采用如图所示的电路。现由P1口低电平驱动发光二极管发光。图4 流水灯显示电路图中D1-D8为发光二极管,R13-R20为限流电阻。发光二极管在电流范围内都能正常发光。则限流电阻,一般发光二极管取,假设单片机低电平输出能力足够强,即,则。按实际器材条件,选择限流电阻为3.3.3蜂鸣器电路SPEAK(P3.7)信号控制器件开通关断,使得蜂鸣器发声或不发声。图5 蜂鸣器电路3.3.4数码显示电路显示电路是系统人机接口的重要组成部分。该系统中采

11、用动态显示的方法来驱动四位数码管显示。数码管为共阳型,所以字形段码为阴码。显示驱动电路如图所示。Rf=330图6 数码管显示电路按照单片机输出端口与数码显示管的连接关系,对应着显示内容的形状,计算字形编码如下表所示。显示字形A(Px.7)F(Px.6)B(Px.5)G(Px.4)C(Px.3)Dp(Px.2)D(Px.1)E(Px.0)阴码LH0x140xD70x4C0x450x870x250x240x570x040x050x0F0x2Cr0xEENull0xFF备注L为低电平,对应显示段亮;H为高电平,对应显示段灭。表2 显示字形对应驱动阴码计算表只要在段码输入端输入对应的阴码,再从DR1-

12、DR4的位码信号中给出要显示内容的数码管的选择信号,便可在对应的数码管中按对应段码显示内容。R13-R20为限流电阻。三极管饱和开通时,集电极发射极之间电压,数码管的压降,数码管的工作电流则限流电阻可这样计算获得:现取 图7 主程序流程图图8 扬声器程序图9 彩灯循环显示流程图图10 数码管动态显示流程图图11 里程表程序流程图5.3各模块软件设计5.3.1扬声器电路的设计本次设计中,设计扬声器产生简单的“嘟嘟”声。只需在P3.7口输出方波即可。当KEY1按下后,单片机则会发出10个方波信号,频率约为1960HZ。信号结束后,调用0.5秒延时,如此就会使扬声器发出“嘟嘟”声。5.3.2彩灯循环

13、显示的设计 设计中,由单片机的P2.0P2.7控制8个发光管。当KEY2按下后,每隔0.5秒就将对应发光管的P2.X口清零,使发光管一次点亮,如此往复。5.3.3数码管动态显示的设计 设计中,由P1.0P1.3口控制数码管的片选,由P0口控制数码管的段选。当KEY3按下后,分别让4个数码管显示“1”,“2”,“3”,“4”,即当P1.0P1.3分别为高电平时,将“F9H”、“A4H”、“B0H”、“99H”分别赋给P0口,显示的时间间隔是2毫秒。对于人来说,已经无法分辨数码是否是轮流点亮的。5.3.4智能速度里程表的设计本次设计中,假设车轮周长为一米,再P3.2口加一个方波信号,模拟车轮滚动。

14、当产生一个下降沿(车轮滚动一圈),就产生一次外部中断。30H34H记录的是里程,分别对应米,十米,百米,千米,万米。当产生一次外部中断,里程数就加一。40H43H记录的是单位时间内所走过的里程,即速度。当产生一次外部中断,里程数加一。当产生一秒的时间中断,就把40H43H的内容赋给20H23H锁存。显示电路中,首先判断速度里程切换按钮是否按下,没按下则由数码管显示31H34H的内容,即里程数。若按下,则显示20H23H的内容,即速度。五、硬件系统参数选择在本次设计中,各端口设置如下:P0:数码管段选位P1:低四位为数码管片选位 高四位为开关控制位P2:流水灯控制位P3:P3.2为外部中断0入口

15、位 P3.3为速度里程切换显示开关位 P3.7为扬声器控制位六、软件设计在主程序中用到了五条汇编语言指令:CLR、ACALL、SETB、LJMP、END。CLR: 是将其后面指定的位清为0,程序中使对应端口输出低电平CALL:是子程序调用指令,程序中调用了DELAY延时子程序SETB:是将其后面指定的位置成1,程序中使对应端口输出高电平JMP:是跳转指令,意思是:跳转到指定的标号处继续运行END: 是程序结束的伪指令,意思是告诉编译器,程序到此结束。伪指令只告诉编译器此程序到此有何要求或条件,它不参与和影响程序的执行。详细完整的程序清单及注释#include#include void Time

16、r1Init(void);void delay_ms(unsigned char x);void w1();void w2();void w3();sbit Wx=P27;/位选sbit Dx=P26;/段选sbit key4=P37;sbit key1=P34;sbit key2=P35;sbit key3=P36;sbit fm=P23;unsigned int cnt=0;/秒计数unsigned char aa,bb,numdu,numwe;unsigned char code tablew=0x71,0x06,0x5b,0x4f,0x66,0x6d,0x7d;/F,211314uns

17、igned char code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;unsigned char code table=0x3f,0x06,0x5b,0x4f, /主功能数组定义 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71;/*- 按键控制蜂鸣器过程 -*/void w1() if(!key1) delay_ms(300); /延时防抖,松手检测 if(key1) fm=!fm; /*- 按键控制流水灯过程void w2() loop1:P1=0xff;key2) delay_m

18、s(300); if(key2) aa=0xfe; /赋初值11111110 while(1) /大循环 P1=aa; delay_ms(100); /延时100毫秒 aa=_crol_(aa,1); /将aa循环左移1位后再赋给aa /相应的cror是循环右移一位 if(! delay_ms(300); if(key2) goto loop1; 按键控制数码管过程void w3() loop2:Wx=1; P0=0xff;key3) if(key3) numdu=0; numwe=0; while(1) numdu+; if(numdu=7) numdu=1; Dx=1; /开段锁存器 P0

19、=tablewnumdu; /送段码 Dx=0; /锁存段码 Wx=1; /开位锁存器 P0=tablewenumwe; /送位码 Wx=0; /锁存位码 numwe+; if(numwe=6) numwe=0; delay_ms(500); if(! delay_ms(300); if(key3) goto loop2; /*=【函数名】:delay_ms(unsigned x)【参数】:ms【功能】:毫秒级延时函数=*/void delay_ms(unsigned char x) unsigned char j; while(x-) for(j = 0;j 100;j +); main()

20、【功能】 :主函数,从000999显示,定时器实现void main() /unsigned char led=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/P0口输出时,09 unsigned char led=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; unsigned char Weima=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /位选,从个位开始 /unsigned int i; unsig

21、ned char temp3; /显示计数缓存 unsigned int KeyData = 0; /Timer1Init(); while(1) while(!key1)w1(); while(!key2)w2();key3)w3(); if(!key4) if(key4) KeyData+; if(KeyData=1000)KeyData=0; temp0=KeyData/100; /百位显示值 temp1=(KeyData%100)/10; /十位显示值 temp2=KeyData%10; /个位显示 Wx= 1; P0 =Weima3; Wx = 0; Dx = 1; P0 =ledtemp0; delay_ms(1); P0 = 0; /关显示,消隐 /delay_ms(1); Dx= 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1