基于单片机的自行车速度里程表设计内容摘要:

部时钟或外部定时脉冲使用。 :外部程序存储器读选通信号。 在读外部ROM时,有效(低电平),以实现外部ROM单元的读操作。 :访问程序存储控制信号。 当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。 RST:复位信号。 当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。 XTALl和XTAL2:外接晶体引线端。 当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 VSS:地线。 VCC:+5V电源。 以上是MCS51单片机芯片40条引脚的定义及简单功能说明。 由于工艺及标准化等原因,芯片的引脚数目是有限制的。 例如,MCS51系列把芯片引脚数目限定为40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了需要与可能的矛盾。 如何解决这个矛盾? “兼职”是唯一可行的办法,即给一些信号引脚赋以双重功能。 如果把前述的信号定义为引脚第一功能的话,则根据需要再定义的信号就是它的第二功能。 下面介绍一些信号引脚的第二功能。 (1) P3 口线的第二功能。 P3的8条口线都定义有第二功能, P3口引脚与第二功能引脚第二功能信号名称RXD串行数据接收TXD串行数据发送外部中断0申请外部中断1申请T0定时/计数器0的外部输入T1定时/计数器1的外部输入外部RAM写选通外部RAM读选通 (2) EPROM存储器程序固化所需要的信号。 有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚以第二功能的形式提供的,即:编程脉冲:30脚(ALE/)编程电压(25V):31脚(/VPP)(3) 备用电源引入。 MCS51单片机的备用电源也是以第二功能的方式由9脚(RST/VPD)引入的。 当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不丢失。 单片机中断系统介绍在本次设计当中,中断部分的设计尤为重要,所谓中断,是当计算机执行正常程序时,系统中出现某些急需处理的事件,CPU暂时中止当前的程序,转去执行服务程序,以对发生的更紧迫的事件进行处理,待处理结束后,CPU自动返回原来的程序执行。 AT89S52系列单片机的系统有5个中断源,2个优先级,可实现二级中断服务嵌套。 由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;有中断优先级寄存器IP安排各优中断源的优先级;同一优先级内各终端同时提出中断请求时,由内部的查询逻辑确定其响应次序。 本次设计采用的外部中断方式包括外部中断0和外部中断1,它们的中断请求信号分别由单片机引脚/。 外部中断请求有两种信号方式:电平触发方式和脉冲触发方式。 电平触发方式的中断请求是低电平有效。 只要在和引脚上出现有效低电平时,就激活外部中断方式。 脉冲触发方式的中断请求则是脉冲的负跳变有效。 在这种方式下,在两个相邻机器周期内,活引脚电平发生变化,即在第一个机器周期内为高电平,第二个机器周期内为低电平,就激活外部中断。 由此可见,在脉冲方式下,中断请求信号的高电平和低电平状态都应至少维持一个机器周期,以使CPU采样到电平状态的变化,本次设计所采用的触发方式为脉冲触发方式。 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。 IE的状态可通过程序由软件设定,某位设定为1,相应的中断源中断允许;某位设定为0,相应的中断源中断屏蔽。 CPU复位时,IE各位为0,禁止所有中断。 IE寄存器各位的定义如下。 EX0()外部中断允许位;ET0()定时/计数器T0中断允许位;EX1()外部中断允许位;ET1()定时/计数器T1中断允许位;ES()串行口中断允许位;EA()CPU中断允许位。 AT89S52单片机有两个中断优先级,即可实现二级中断服务嵌套。 每个中断源的中断优先级都是由中断优先级寄存器IP中的相应的状态来规定的。 IP的状态由软件设定,某位设定为1,则相应的中断源为高优先级中断;。 单片机复位时,IP各位清0,各中断源同为低优先级中断。 IP寄存器各位的定义如下。 PX0()外部中断优先级设定位;PT0()定时/计数器T0中断优先级设定位;PX1()外部中断中断优先级设定位;PT1()定时/计数器T1中断优先级设定位;PS()串行口中断优先级设定位。 单片机定时/计数功能介绍AT89S52单片机定时/计数器的工作由两个特殊功能寄存器控制。 TMOD用于设置其工作方式;TCON用于控制其启动和中断请求。 工作方式寄存器TMOD用于设置定时/计数器的工作方式。 GATE:门控位。 GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATE=1时,要用软件TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。 :定时/计数模式选择位。 =0为定时模式; =1为计数模式。 M1M2:工作方式设置位。 定时/计数器有4种工作方式,由M1M2进行设置。 本次设计TMOD为90H,即选通定时/计数器定时功能、工作方式1。 工作方式16位定时/计数器。 TF1()定时/计数器T1溢出中断请求标志位。 定时/计数器T1计数溢出时由硬件自动置TF1为1。 CPU响应中断后TF1由硬件自动清零。 T1工作时,CPU可随时查询TF的状态。 所以,TF1可用作查询测试的标志。 TF1也可以用软件置1或清零,同硬件置1或清零的效果一样。 TR1()定时/计数器T1运行控制位。 TR1置1时时,定时/ 计数器T1开始工作;TR1置0时,定时/计数器T1停止工作。 TR1由软件置1或清0。 TF0():定时/计数器T0溢出中断请求标志位。 TR0():定时/计数器T0运行控制位。 单片机外围电路的设计 时钟电路的设计时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。 因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。 AT89S52片内由一个反相放大器构成振荡器,可以由它产生时钟。 常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。 本设计采用前者。 单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入为芯片引脚XTAL1,输出端为引脚XTAL2。 这两个引脚跨接石英晶体振荡器和电容,就构成一个稳定的自激振荡器。 单片机片内振荡电路电路中的电容C1和C2常选择为30pF左右。 对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的高低、振荡器的稳定性、起振的快速性和温度的稳定性。 而外接晶体的振荡频率的大小,主要取决于单片机的工作频率范围,每一种单片机都有自己的最大工作频率,外接的晶体振荡频率不大于单片机的最大工作频率即可。 此外,如果单片机有串行通信,则应该选择振荡频率除以串行通信频率可以除尽的晶体。 本设计晶振采用12MHz,则计数周期为T=S 复位电路的设计AT89S52单片机的复位输入引脚RET为AT89S52提供了初始化的手段。 有了它可以使程序从指定处开始执行,即从程序存储器中的0000H地址单元开始执行程序。 在89S52的时钟电路工作后,只要在RET引脚上出现两个机器周期以上的高电平时,单片机内部则初始复位。 只要RET保持高电平,则89S52循环复位。 只有当RET由高电平变成低电平以后,89S52才从0000H地址开始执行程序。 本系统的复位电路是采用按键复位的电路,是常用复位电路之一。 单片机复位通过按动按钮产生高电平复位称手动复位。 上电时,刚接通电源,电容C相当于瞬间短路,+5V立即加到RET/VPD端,该高电平使89S52全机自动复位,这就是上电复位;若运行过程中需要程序从头执行,只需按动按钮即可。 按下按钮,则直接把+5V加到了RET/VPD端从而复位称为手动复位。 复位后,P0到P3并行I/O口全为高电平,其它寄存器全部清零,只有SBUF寄存器状态不确定。 按键复位电路工作原理:上电瞬间,RC电路充电,RST引脚出现高电平,只要RST端保持10ms以上高电平,就能使单片机有效地复位。 显示电路的设计本设计中采用LED数码管显示。 在单片机系统中,通常用LED数码显示器来显示各种数字或符号。 由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 八段LED显示器由8个发光二极管组成。 其中7个发光二极管构成字型“8”的各个笔画段,另一个发光二极管为小数点。 LED显示器有两种不同的形式:一种是发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是发光二极管的阴极都连在一起的,称之为共阴极LED显示器。 本次设计采用共阳极接法。 八段LED显示器LED显示方式有动态显示和静态显示两种方式。 本系统采用动态扫描显示接口电路,动态显示接口电路是把所有显示器的8个笔划段ah同名端连在一起,而每一个显示器的公共极COM各自独立地受I/O线控制。 CPU向字段输出口送出字型码时,所有显示器接收到相同的字型码,但究竟是哪个显示器亮,则取决于COM端。 也就是说我们可以采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。 在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。 、~,通过软件编程,先把所要显示的数据放入存储单元,然后把数据送入段选通对应的地址,再选通某一个LED,逐步完成四个LED的显示。 报警电路的设计本次报警电路采用蜂鸣器报警,当即时速度超过预定值时蜂鸣器响,指示灯亮。 报警电路图4 自行车速度/里程表软件程序设计 概述在硬件设计完毕之后,接下来就是设计中最核心和最为主要的软件部分设计。 所谓软件设计就是把软件需求变换成软件的具体设计方案(即模块结构)的过程。 模块化结构设计即是根据要求和硬件设计的结构,将整个系统的功能分成许多小的功能模块,再根据这些小的功能模块进行程序编写的过程。 这样的设计方法,使得系统的整个功能和各部分的功能趋于明朗化。 当系统出现问题,就可以根据功能设置找出问题的根源,从而更快地解决问题。 所以说,在整个设计过程中,软件设计必须与硬件设计紧密地结合在一起。 基于霍尔传感器自行车速度/里程表的软件设计包括上电初始化程序、中断子程序、速度调用子程序、里程调用子程序、LED显示子程序、延时子程序等几大部分。 由于要实现很多功能,所以采用模块化设计,下面就其主要部分分别加以分析。 自行车速度/里程表总体程序设计在主程序模块中,需要完成对各接口芯片的初始化、自行车里程和速度的初始化、中断向量的设计以及开中断、循环等待等工作。 另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器、速度寄存器,并对它们进行初始化。 然后主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计速等不同的操作。 ,低电平为显示速度,高电平为显示里程。 中断0用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出一个低电平脉冲。 将根据里程寄存器中的内容计算和判断出行驶里程数。 中断1用于控制定时器T1的启/停,当输入为0时关闭定时器。 此控制信号是将轮子圈数的计数经二分频后形成。 这样,每次定时器T1的开启时间刚好为转一圈的时间,根据轮子的周长就可以计算出自行车的速度。 开始初始化开中断,启动定时器=1?调用速度处理子程序NY调用里程处理子程序 主程序流程图 中断子程序的设计定时中断是为满足定时或计数的需要而设置的。 为此在单片机内部有两个定时/计数器,以对其中的计数结构进行计数的方法,来实现定时或计数功能。 当结构发生计数溢出时,即表明定时时间或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志,作为单片机接受中断请求的标志。 这种中断请求是在单片机芯片内部发生的,因此无须在芯片上设置引入端。 关中断开始现场保护开中断中断处理关中断现场恢复开中断中断返回定时/计数器控制寄存器TCON是8位寄存器,地址为88H,可以位寻址。 其高4位用于定时/计数器中断控制,低4位借给外部。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。