首页天道酬勤c++程序设计(程序设计5个基本步骤)

c++程序设计(程序设计5个基本步骤)

admin 11-28 12:27 390次浏览

目录

1.系统的工作原理

1.1功能描述

1.2基本原则

2.硬件设计

2.1微控制器最小系统单位

2.2 A44Ezydbh传感器检测单元

2.3 AT24C01存储单元

2.4键盘调节装置

2.5显示单元

3.软件设计

3.1系统主程序

3.2中断程序

3.2.1里程计数中断程序

3.2.2中途等待中断程序

3.3计算程序

3.4显示程序

3.5键盘程序

4.摘要

参考

附录一系统示意图

附录b系统源程序

随着出租车行业的发展,出租车已经成为城市交通的重要组成部分。从加强行业管理,减少驾乘人员纠纷的角度来看,出租车司机和乘客都需要有一个好的性能表。但模拟电路和数字电路设计的电表整个电路规模大,使用器件多,故障率高,调试困难。而用单片机设计的功能比较强大,用较少的硬件和合适的软件就可以很容易地满足设计要求,而且灵活,通过软件编程可以完成更多的附加功能。本设计采用AT89S52单片机为主控制器,A44Ezydbh传感器测量距离,实现出租车多功能定价设计。AT24C01用于保存系统断电时的单价等信息,8个数码管输出。该电路设计的电表不仅可以实现基本定价,还可以根据白天、夜晚和中途等待调整单价。

第一章系统工作原理

1.1功能描述

出租车计价器根据车内乘客的距离和等待时间计算价格,并在行程中同步显示票价。从起步价开始,当汽车行程小于3公里时,按起步价计算。行驶3公里后,将收取每公里的单价。中间有停顿时,里程不再增加,计时收费、测距收费、计时收费之和构成乘客票价。同时白天和晚上价格不同,可以切换。白天单价、晚上单价、等待单价、起步价可通过独立键盘调节。(默认起步价5元/3公里,白天里程单价1.5元/公里,夜间1.8元/公里,等待时间单价0.5元/5分钟)

1.2基本原则

计数器系统主要由A44Ezydbh传感器、AT89S52单片机、独立键盘、EEPROM AT24C01和显示数码管五部分组成。

Zydbh传感器安装在车轮上,主要检测汽车行驶的公里数,并产生一系列相应的脉冲输出。脉冲被发送到微控制器进行处理。单片机根据程序设置通过计算脉冲数来转换行驶的公里数,然后根据价格和从EEPROM读取的其他相关数据来计算量。计算的金额、里程和单价实时显示在数码管上。独立键盘可以调节价格和其他相关数据,按下相应的按钮,产生的信号将由单片机处理并实时显示。调整后的数据将存储在EEPROM中,这样断电后调整后的数据不会丢失,下次断电后直接从EEPROM读取到单片机。系统结构图如图1所示。

图1系统结构图

第二章硬件设计

2.1微控制器最小系统单位

主控计算机系统采用Atmel公司生产的AT89S52单片机,内含256字节的数据存储器,内置8K电可擦除FLASH ROM,可反复重编程,其大小能满足主控计算机软件系统的设计,无需扩充程序存储器。复位电路和晶振电路是AT89S52工作最简单的外围电路。单片机最小系统的电路图如图2所示。

图2单片机最小系统图

AT89S52的复位端是施密特触发器输入,高电平有效。如果RST从低电平上升到高电平达2个周期,系统将实现复位操作。在复位电路中,按下复位开关会使RST端子在一段时间内出现高电平,并且外接11.0592M晶振和两个30pF

A44E是一款开关型zydbh设备。它的工作电压范围比较宽(4.5~18V),输出信号符合TTL电平标准,可以直接连接到MCU的IO口,最高检测频率可达1MHZ。

A44E集成霍尔开关由五个基本部分组成:稳压器A、霍尔电位发生器(硅霍尔芯片)B、差分放大器C、施密特触发器D和OC门输出e。

输入端的电压Vcc输入由稳压器稳定,然后施加到zydbh电位发生器的两端。根据zydbh效应原理,当zydbh芯片处于磁场中时,在垂直于磁场的方向上施加电流,会在垂直于磁场的方向上产生zydbh电位差VH输出。VH信号由放大器放大,然后送到施密特触发器进行整形,使其成为

方波输送到OC门输出。当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。这样两次电压变换,使zydbh开关完成了一次开关动作。A44Ezydbh传感器原理如图3所示。

图3 A44Ezydbh传感器原理

里程计算是通过安装在车轮上的zydbh传感器检测到的脉冲信号,送到单片机产生中断,单片机再根据程序设定,计算出里程。其原理如图4所示。

图4 传感器测距示意图

本系统选择了将A44E的脉冲输出口接到P3.3口外部中断1作为信号的输入端(这样可以减少程序设计的麻烦),车轮每转一圈(设车轮的周长是1米),zydbh开关就检测并输出信号,引起单片机的中断,对脉冲计数,当计数达到1000次时,即1公里,单片机就控制将金额自动增加,如图5。

图5 A44Ezydbh元件接线图

2.3 AT24C01存储单元

存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C01 是Ateml公司的1KB的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8 脚的DIP 封装,使用方便。

AT24C02芯片引脚配置如图6所示。

存储单元电路连接如图7所示。

图 7 存储单元电路原理图

图中R4、R5 是上拉电阻,其作用是减少AT24C01 的静态功耗。由于AT24C01的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(时钟脉冲)和SDA(数据/地址)与单片机P2.2和P2.3口连接,进行传送数据。

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

2.4 键盘调整单元

当单价等信息需要进行修改时,就要用到键盘进行修改。由于调节信息不多,故采用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。电路原理如图8所示。

图8 键盘调整单元接线图

S1:接P1.0口,对上一次的计费进行清零,为下次载客准备

S2:接P1.1口,实现白天和夜晚单价的切换;当功能键S4按下时,S2可对数据进行增大。

S3:接P1.2口,当功能键S4按下时,S3可对数据进行减小。

S4:接P1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。

2.5 显示单元

显示单元由7个8段共阳数码管组成,采用动态扫描进行显示。前三个数码管分别接P3.0、P3.1和P3.2,用于显示总金额;中间两个分别接P3.4和P3.5,用于显示里程;后边两个分别接P3.6和P3.7,用于显示单价。电路如图9所示。

图9 数码管显示图

第三章 软件设计

3.1 系统主程序

在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。

当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程和单价送数码管显示出来。程序流程如图10所示。

图10 主程序流程图 图11 计算程序流程图

3.2 中断程序

3.2.1 里程计数中断程序

每当zydbh传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1000次时,进入里程计数中断服务程序中,里程变量加一。主函数中总金额也相应地变化。

3.2.2 中途等待中断程序

在中途等待中断程序中,每1ms产生一次中断,将当前里程值送入某个缓存变量,每5分钟将缓存变量中的值和当前里程值比较,当汽车停止,zydbh传感器5分钟没有输出信号,当前里程值和缓存变量内的值相同,则进入等待计时,每5分钟记一次价格。

3.3 计算程序

计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价。程序流程图如图11所示。

3.4 显示程序

显示程序利用定时器每1ms产生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管震动的白云和人眼暂留现象,即可实现显示。

3.5 键盘程序

键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。流程图如图12。

图12 键盘程序流程图

第四章 总结

经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。在课程设计的过程中,还是碰到了许多的问题。比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是把问题解决了。

通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。

参考文献

[1] 漂亮的毛巾,鲜艳的蜡烛,tdhm编著. 单片机原理与接口技术(第二版). 北京:北京邮电大学出版社,2007.

[2] rqdzp著. C程序设计(第三版). 北京:清华大学出版社,2005.

附录A 系统原理图

附录B 系统源程序

算了图贴不上去 给你个网址吧

SpringSecurity注销怎么设置c#自定义值类型一定不要忘了重写Equals产品优势 物理云主机 UPHost从共享组件库中导出`react-router`重定向学生成绩管理系统源码
有源带通滤波电路设计(无源rc低通滤波电路) 出租车计价器维修配件(出租车计价器程序设计)
相关内容