专科毕业论文范文

辽东学院毕业论文

出租车自动计费EDA设计

学生姓名: 学 号: 班 级: 专 业: 系 部: 计算机应用技术 指导教师:

20xx年12月

【摘要】

出租车是城市中的主要交通工具之一,随着出租车行业的发展,对于出租车计算器的要求越来越高,最近几年出租车行业发展迅速,在全国有几千家出租车公司,因此出租车计费器的市场是庞大的。合理的解决出租车的交通管理问题是解决城市交通管理问题的重要方面。根据交通需求理论,对出租车实行不同区域不同的计价标准,将城市中心地区价格上浮,在远离城市的中心地区价格下浮,通过经济杠杆的作用来调节人们的出行方式,达到抑制出租车在城市中心地区的数量的目的,从而解决交通拥挤的状况,而油价对其的影响,是使各城市都推出了运价油价联动机制,所以出租车计费器计价标准的灵活设定成为未来计费器不可缺少的一部分。现在的计费器都没有把灵活设定计价标准的功能加入其中,可靠统计每台计费器更换标准及调试所需时间为1小时。现在计费器大多数以单片机为平台的,但是单片机程序是不通用的,不同的片有不同的指令集,因此设计研发比较困难。而FPGA等数字可编程器件的出现彻底解决了这个问题,而且性能更稳定、设计更灵活、能实现较复杂的功能,运用EDA软件方便的在电脑上实现设计与仿真。

关键词:单片机;出租车计价器;存储器

【Abstract】 Taxis are the main transportation of city, with the taxi industry development, the calculator for taxis are increasingly demanding, in recent years, the rapid development in a country has thousands of taxi company, therefore, the market is huge taxi devices. Reasonable solution to the problems is the taxi transportation management to solve problems of the urban traffic management is an important aspect. According to the theory of traffic demand of different regions, different taxi valuation standard, the city center area in the city price increases, the central region, the price if the role through economic lever to adjust the people of transportation, suppressing a taxi in the city center area of purpose, thus solving the amount of traffic condition, and the oil, and all the cities are introduced, so the freight prices linkage mechanism of flexible taxi devices valuation standard setting become an indispensable part of the devices. Now the devices are not flexible Settings of standard pricing, reliable function of statistics each replacement of standard and debugging devices needed time for 1 hour. Now most devices with microcontroller as the platform, but the microcontroller program is not common, different pieces have different set of instructions, thus design more difficult. But the FPGA digital programmable device appeared thoroughly solved the problem, but also more stable performance, and design more flexible and can realize more complex function, using EDA software is convenient in computer simulation of design and realization.

Keywords:singlechip taximeters memorizer

目录

绪论 .......................................................................................................................... 1

1系统工作原理 ....................................................................................................... 2

1.1 功能说明 ................................................................................................... 2

1.2基本原理 .................................................................................................... 2

2 设计 ...................................................................................................................... 4

2.1 单片机最小系统单元 ............................................................................... 4

2.2 A44E霍尔传感器检测单元 ...................................................................... 5

2.3 AT24C01存储单元 .................................................................................... 6

2.4 键盘调整单元 ........................................................................................... 7

2.5 显示单元 .................................................................................................. 8

3 软件设计 .............................................................................................................. 9

3.1 系统主程序 ............................................................................................... 9

3.2 中断程序 ................................................................................................. 10

3.2.1 里程计数中断程序 ...................................................................... 10

3.2.2 中途等待中断程序 ..................................................................... 10

3.3 计算程序 ................................................................................................. 10

3.4 显示程序 ................................................................................................. 11

3.5 键盘程序 ................................................................................................. 11

4 结论 .................................................................................................................... 12

参考文献 ................................................................................................................ 13

致谢 ........................................................................................................................ 15

附录A 源程序 ..................................................................................................... 16

附录B 系统原理图 ............................................................................................... 28

I

辽东学院2010届毕业设计(论文)

绪论

出租车行业在我国是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生。但当时在全国还没有一家企业能够生产,因此早期的计价器是由台湾引进的。台湾是计价器的主要生产场地,目前全世界的计价器中有90%为台湾所生产。现今我国生产计价器的企业有上百家,重庆市有两家企业在生产。但由于技术原因,大部分厂家的产品都不能达标。因此生产厂家主要还是集中在北京、上海、沈阳和广州。

我国第一家生产计价器的企业是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。此时它在计程的同时还可完成计价的工作。大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善,当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本具备了,它可以完成计程、计价、显示等基本工作。单片机以及外围芯片的不断发展促进了计价器的发展,出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。随着电子技术的发展以及对计价器的不断改进和完善,便产生了诸多的附加功能。本设计采用AT89S52单片机为主控器,以A44E霍尔传感器测距,实现对出租车的多功能的计价设计,并采用AT24C01实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜和中途等待来调节单价。

1

辽东学院2010届毕业设计(论文)

1系统工作原理

1.1 功能说明

全面熟悉、掌握EDA基本知识,掌握利用EDA对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。由于采用了CPLD/FPGA大规模可编程逻辑器件,整机功耗小、抗干扰能力强、系统稳定、工作可靠、升级方便。另外,根据实际需要,系统可方便地增加以下功能:①通过芯片内部编程增加时钟功能(器件内部资源足够),既可为司机和乘客提供方便,又能为夜间行车自动调整收费标准提供参考;②用CPLD/FPGA的输出引线控制语音芯片,可向乘客发出问候语、提醒乘客告诉司机所要到达的地点、报出应收缴的费用等。从起步价开始,当汽车程行驶未满3公里时,均按起步价计算。过3公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。同时,白天和夜晚价格不同,可以进行切换。白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。(默认起步价为5元/3公里,里程单价白天为1.5元/公里,夜晚为1.8元/公里,等待计时单价为0.5元/5分钟)。

1.2基本原理

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

霍尔传感器安装在车轮上,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程和单价都实时地显示在数码管上。独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来,调节好的数据存储到EEPROM中,掉电后可以使调好的数据不丢失,下次得电后直接从EEPROM读到单片机,系统结构图如图1。

2

辽东学院2010届毕业设计(论文)

图1 系统结构图

专科毕业论文范文

专科毕业论文范文

3

辽东学院2010届毕业设计(论文)

2 设计

2.1 单片机最小系统单元

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

专科毕业论文范文

图2单片机最小系统电路图

AT89S52 的复位端是一个史密特触发输入,高电平有效。RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。在复位电路中,按一下复位开关就使在RST端出现一段时间的高电平,外接11.0592M 晶振和两个30pF 电容组成系统的内部时钟电路。

4

辽东学院2010届毕业设计(论文)

2.2 A44E霍尔传感器检测单元

A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.5~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可以达到1MHZ。A44E集成霍尔开关由稳压器A,霍尔电势发生器B,差分放大器C,施密特触发器D及OC门输出E五个基本部分组成。

在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。这样两次电压变换,使霍尔开关完成了一次开关动作。A44E霍尔传感器原理如图3所示。

专科毕业论文范文

图3A44E霍尔传感器原

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

专科毕业论文范文

图4计算出里程原理图

5

辽东学院2010届毕业设计(论文)

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

专科毕业论文范文

图5单片机就控制将金额自动增加

2.3 AT24C01存储单元

存储单元的作用是在电源断开的时候,存储当前设定的单价信息。

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

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

图6 AT24C02芯片引脚配置

专科毕业论文范文

6

北京城市学院2006届毕业设计(论文)

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

专科毕业论文范文

图7 储存单元电路连接

图中R4、R5 是上拉电阻,其作用是减少AT24C01 的静态功耗。由于AT24C01的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(时钟脉冲)和SDA(数据/地址)与单片机P2.2和P2.3口连接,进行传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。

2.4 键盘调整单元

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

专科毕业论文范文

图8 电路原理

6

北京城市学院2006届毕业设计(论文)

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 显示单价

8

北京城市学院2006届毕业设计(论文)

3 软件设计

3.1 系统主程序

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

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

专科毕业论文范文

图10 程序流程

9

北京城市学院2006届毕业设计(论文)

3.2 中断程序

3.2.1 里程计数中断程序

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

3.2.2 中途等待中断程序

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

3.3 计算程序

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

专科毕业论文范文

图11 程序流程图

10

北京城市学院2006届毕业设计(论文)

3.4 显示程序

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

3.5 键盘程序

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

专科毕业论文范文

图12 流程图

11

北京城市学院2006届毕业设计(论文)

4 结论

经过近6个月的时间做了关于“出租车自动计费EDA设计”的毕业设计。因我用单片机来完成的整个毕业设计,所以对单片机的应用有了更深的了解。当然在整个的毕业设计中并不是一帆风顺的,过程中还是遇到了很多的问题,比如,共阴共阳接法的区别,通过上网查资料发现共阴共阳接法完全相同,不同的是在于数码管译码表不同,互相取反了,解决了此问题(共阳数码管译码表:DB0C0h0F9h0A4h0B0h099h092h082h0F8h080h90h;共阴数码管译码表:DB

3FH06H5BH4FH66H6DH7DH07H7FH6FH);中途停车计费的问题,加入单刀双掷开关,当中途停车时把打到接地端,这样可以实现途中等待(>30秒开始收费) 1元/30秒。使得计价器更具普遍性;而对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得还不够好;通过这几个月的反复修改及调试,以及参考网上,书本上的程序,并在知道教师的帮助下最终还是把问题解决了。通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计,因此查阅资料及与指导教师的帮助就显得尤为重要。其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:汇编语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。总之在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。

12

北京城市学院2006届毕业设计(论文)

参考文献

[1] 曹昕燕,周凤臣,聂春燕.EDA技术实验与课程设计[M].北京:清华大学出版社,2006:331~345.

[2] 谭会生,张昌凡.EDA技术及应用[M].第2版.西安:西安电子科技大学出版社,2004:12~125.

[3] 高有堂. EDA技术及应用实践 [M].北京:高有堂清华大学出版社, 2006:156~158.

[4] 编著不详.EDA技术与CPLD/FPGA开发应用简明教程 [M].北京:清华大学, 2007:156~178.

[5] 周立功.EDA实验与实践 [M].北京:航空航天大学出版社, 2007:112~199.

[6] 唐俊英.EDA技术应用实例教程 [M].北京:电子工业出版社,2008:145~165.

[7] 臧春华. 电子线路设计与应用[M] . 高等教育出版社, 20xx年6月.

[8] 何小艇. 电子系统设计[M]. 浙江大学出版社,20xx年5月.

[9] 高吉祥. 电子技术基础实验与课程设计[M]. 电子工业出版社,20xx年11月.

[10] 大连理工大学电工电子实验中心组编.数字电子技术基础与设计

[M].2004:148~165.

[11] 卢宝良.单片机系统的可靠性措施.微型机与应用[M].1996:111~235.

[12] 张家良,董秀莲. 单片机控制系统的设计与调试方法[J]. 现代电子技术. 2002,9(7):12~19.

[13] 马崇良.单片微型计算机原理及应用[M].北京:中国纺织出版社.1996:189~192.

[14] 周慈航.单片机应用程序设计技术[M].北京:北京航空航天大学出版社.1991:123~152.

[15] Yang. Y., Yi. J., Woo, Y.Y., and Kim. B.: ‘Optimum design for linearityand efficiency of microwave Doherty amplifier using a new loadmatching technique’, Microw. J., 2001, 44, (12), pp. 20–36

[16] Vizimuller, P.: ‘RF design guide-systems, circuits, and equations’ (ArtechHouse, Boston, MA, 1995)[6]R. Dye, “Visual

13

北京城市学院2006届毕业设计(论文)

Object-Orientated Programming,” Dr. Dobbs MacintoshJournal, Sept. 1st ( 1991).

14

北京城市学院2006届毕业设计(论文)

致谢

经历了近六个月的时间,毕业论文暂告收尾,这也意味着我在北京城市学院的四年的学习生活既将结束。回首既往,自己一生最宝贵的时光能于这样的校园之中,能在众多学富五车、才华横溢的老师们的熏陶下度过,实是荣幸之极。在这四年的时间里,我在学习上和思想上都受益非浅。这除了自身努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的

论文的写作是枯燥艰辛而又富有挑战的。出租车计价器是一个软件与硬件相结合的课题,在指导老师的谆谆诱导、同学的出谋划策及家长的支持鼓励,是我坚持完成论文的动力源泉。在此,我特别要感谢我的导师王良老师。从论文的选题、文献的采集、框架的设计、结构的布局到最终的论文定稿,从内容到格式,从标题到标点,他都费尽心血。没有王良老师的辛勤栽培、孜孜教诲,就没有我论文的顺利完成。

感谢电子与信息工程院系的各位同学,与他们的交流使我受益颇多。最后要感谢我的家人以及我的朋友们对我的理解、支持、鼓励和帮助,正是因为有了他们,我所做的一切才更有意义;也正是因为有了他们,我才有了追求进步的勇气和信心。

时间的仓促及自身专业水平的不足,整篇论文肯定存在尚未发现的缺点和错误。恳请阅读此篇论文的老师、同学,多予指正,不胜感激!

随着毕业设计的结束,大学生活也即将结束,我也要马上就步入工作岗位,走进社会,在整个毕业设计的过程中所学到的独立阅读,查阅资料,遇到问题通过理论结合实践解决问题,与人沟通研讨的能力是我受益匪浅,会为我以后的踏入社会,参加工作打下坚实的基础,我也会在日后学习和工作中不断的充实和完善自己,以优秀的业绩向母校汇报!

15

北京城市学院2006届毕业设计(论文)

附录A 源程序

#include<reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();_nop_();}; Ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

sbit exter=P3^3; /外部中断/

sbit key0=P1^0; /清零/

sbit key1=P1^1; /切换/

sbit key2=P1^2;

sbit key3=P1^3; /功能键/

sbit p30=P3^0; /数码管各位控制/

sbit p31=P3^1;

sbit p32=P3^2;

sbit p34=P3^4;

sbit p35=P3^5;

sbit p36=P3^6;

sbit p37=P3^7;

sbit SDA=P2^3; /IIC引脚/

sbit SCL=P2^2;

uint inter,aa,bb,temp,temp1;

uint zongjine,licheng,dengdai;

uint key3num,qiehuantemp,delaytemp;

uchar danjia1,danjia2,danjia3,danjia,qibu;

void delay(uint x) /延时时基为1ms/

{

int i,j;

for(i=x;i>0;i--)

for(j=340;j>0;j--);

16

北京城市学院2006届毕业设计(论文)

}

void start() /IIC开始位/ {

SDA = 1;

SCL = 1;

delayNOP();

SDA = 0;

delayNOP();

SCL = 0;

}

void stop() / IIC{

SDA = 0;

delayNOP();

SCL = 1;

delayNOP();

SDA = 1;

}

void respons() /IIC{

uchar i;

SCL=1;

delayNOP();

while((SDA==1)&&(i<250))

i++;

SCL=0;

delayNOP();

}

uchar read_byte() /

{

uchar i,j;

for(i=0;i<8;i++)

{

SCL=1;

j<<=1; 停止位/ 应答位/ 从EEPROM读到MCU/

17

北京城市学院2006届毕业设计(论文)

j|=SDA;

SCL=0;

}

return(j);

}

void write_byte(uchar date) / 从MCU写到EEPROM/ {

uchar i,temp;

temp=date;

for(i=0;i<8;i++)

{

temp=temp<<1;

SCL=0;

delayNOP();

SDA=CY;

delayNOP();

SCL=1;

delayNOP();

}

SCL=0;

delayNOP();

SDA=1;

delayNOP();

}

void write_data(uchar addr, uchar date) /

入数据date/

{

start();

write_byte(0xa0);

respons();

write_byte(addr);

respons();

write_byte(date);

respons();

stop();

18 在指定地址addr处写

北京城市学院2006届毕业设计(论文)

}

uchar read_data(uchar addr) / 在指定地址addr读取数据/ {

uchar date;

start();

write_byte(0xa0);

respons();

write_byte(addr);

respons();

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

return date;

}

void display(uint zongjine0,uint

/数码管显示/

{

uint jbai,jshi,jge,lshi,lge,dshi,dge;

uint numwei,numshu; /

jbai=zongjine0/100;

jshi=zongjine0%100/10;

jge=zongjine0%100%10;

lshi=licheng0/10;

lge=licheng0%10;

dshi=danjia0/10;

dge=danjia0%10; /

if(aa)

{

aa=0;

numshu++;

if(numshu==7)

numshu=0;

P3=0xff;

19 licheng0,uint danjia0) 数码管位置分配/ 数码管动态显示/

北京城市学院2006届毕业设计(论文)

switch(numwei)

{

case 0:p30=0;P0=table[jbai];break;

case 1:p31=0;P0=table[jshi]&0x7f;break; case 2:p32=0;P0=table[jge];break;

case 3:p34=0;P0=table[lshi];break;

case 4:p35=0;P0=table[lge];break;

case 5:p36=0;P0=table[dshi]&0x7f;break; case 6:p37=0;P0=table[dge];break; }

numwei++;

if(numwei==7)

numwei=0;

}

}

void keyscan() /{

if(key3==0) /{

delay(5);

if(key3==0)

{

key3num=1;

while(!key3);

delay(5);

while(!key3);

while(key3num)

{

if(key3num==1) /{

if(key1==0)

{

delay(5);

if(key1==0)

{

20 键盘扫描/ 功能键调节/ 调白天单价/

北京城市学院2006届毕业设计(论文)

danjia1++;

if(danjia1==100)

danjia1=0;

while(!key1);

delay(5);

while(!key1);

}

}

if(key2==0)

{

delay(5);

if(key2==0)

{

danjia1--;

if(danjia1==-1)

danjia1=99;

while(!key2);

delay(5);

while(!key2);

}

}

display(1,0,danjia1);

}

if(key3num==2) /{

write_data(1,danjia1);

if(key1==0)

{

delay(5);

if(key1==0)

{

danjia2++;

if(danjia2==100)

danjia2=0;

while(!key1);

21 调夜晚单/

北京城市学院2006届毕业设计(论文)

delay(5);

while(!key1);

}

}

if(key2==0)

{

delay(5);

if(key2==0)

{

danjia2--;

if(danjia2==-1)

danjia2=99;

while(!key2);

delay(5);

while(!key2);

}

}

display(2,0,danjia2);

}

if(key3num==3) /{

write_data(2,danjia2);

if(key1==0)

{

delay(5);

if(key1==0)

{

danjia3++;

if(danjia3==100)

danjia3=0;

while(!key1);

delay(5);

while(!key1);

}

} 调等待单价/

22

北京城市学院2006届毕业设计(论文)

if(key2==0)

{

delay(5);

if(key2==0)

{

danjia3--;

if(danjia3==-1)

danjia3=99;

while(!key2);

delay(5);

while(!key2);

}

}

display(3,0,danjia3);

}

if(key3num==4) /{

write_data(3,danjia3);

if(key1==0)

{

delay(5);

if(key1==0)

{

qibu++;

if(qibu==100)

qibu=0;

while(!key1);

delay(5);

while(!key1);

}

}

if(key2==0)

{

delay(5);

if(key2==0) 调起步价/

23

北京城市学院2006届毕业设计(论文)

{

qibu--;

if(qibu==-1)

qibu=99;

while(!key2);

delay(5);

while(!key2);

}

} display(4,0,qibu);

}

if(key3num==5) /

{

write_data(4,qibu);

key3num=0;

}

if(key3==0)

{

delay(5);

if(key3==0)

{

key3num++;

while(!key3);

delay(5);

while(!key3);

}

}

}

}

}

}

void init()

{

SDA=1;

SCL=1; 退出功能键/

24

北京城市学院2006届毕业设计(论文)

zongjine=0;

licheng=0;

dengdai=0;

danjia1=read_data(1);

danjia2=read_data(2);

danjia3=read_data(3);

qibu=read_data(4);

aa=0; /数码管动态扫描的定时器时基个数/

bb=0; /判断是否等待的时基个数/

inter=0;

EA=1; /开总中断/

EX1=1; /开外部中断1/

IT1=1; /触发方式下降沿/

TMOD=0x01;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

ET0=1; /开定时器T0中断/

TR0=1; /开定时器T0 /

P3=0x08;

P0=table[0];

}

void jisuan()

{

if(licheng>3)

zongjine=qibu+(licheng-3)*danjia+dengdai*danjia3; /金额计算/ else

ongjine=qibu+dengdai*danjia3; /起步公里内金额计算/ }

void qiehuan()

{

if(key1==0) /白天夜晚切换/

{

delay(5); /键盘防抖/

if(key1==0)

qiehuantemp=!qiehuantemp;

25

北京城市学院2006届毕业设计(论文)

while(!key1);

delay(5);

while(!key1);

}

if(qiehuantemp==0)

danjia=danjia2;

if(qiehuantemp==1)

danjia=danjia1;

}

void main()

{

init();

qiehuantemp=1;

key3num=0;

while(1)

{

qiehuan(); /切换白天夜晚单价/

jisuan(); /计算总金额/

display(zongjine,licheng,danjia); keyscan(); if(key0==0) /清零键/

init(); }

}

void inter1() interrupt 2 /脉冲中断/

{

delay(5); if(exter==0)

{ T1=1;

inter++;

if(inter==5)

{

inter=0;

licheng++;

}

} while(!exter); delay(5); while(!exter);

26

北京城市学院2006届毕业设计(论文)

}

void timer0() interrupt 1

{

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

aa++;

bb++;

temp1=licheng; /

if(bb==10000) /10s

{

bb=0;

if(temp=temp&temp1)

dengdai++;

temp=licheng; } } 测试是否进入等待/ 无反应进入等待计费/

27

北京城市学院2006届毕业设计(论文)

附录B 系统原理图

专科毕业论文范文

28

相关推荐