教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

出租车计价器课程设计报告(2)

来源:网络收集 时间:2026-04-30
导读: 4-1. 图4-1 Keil uVision4编译 在Proteus软件中画出仿真电路(如图4-2),把Keil uVision4编译后生成的“.hex”导入到单片机中,按“运行仿真”键进行仿真。 图4-2 Proteus仿真 五.程序 源程序如下: #includereg5

4-1.

图4-1 Keil uVision4编译

在Proteus软件中画出仿真电路(如图4-2),把Keil uVision4编译后生成的“.hex”导入到单片机中,按“运行仿真”键进行仿真。

图4-2 Proteus仿真

五.程序

源程序如下:

#include<reg52.h>

#define uchar unsigned char #define uint unsigned int

/****description: *********************************/ /*********** 本区定义了程序各部分涉及的单价 **********/ #define QBJ 5 /*起步价;修改“5”,即可改变程序中打表起步价.*/

#define DJ 10 /*每公里价钱;修改十位上“1”,即可改变每公里单价.例“ 10代表1公里1元,20代表1公里2元 ”***/

#define DC_SD 2; /*堵车时默认速度;修改“2”,即可改变默认速度**/ /*表示每10秒增加 “2” 百米 /*(默认速度公式:DC_SD= V/3600 V单位为km/h)*/ /* 注:暂不支持小数,仅支持整数。 */

volatile unsigned int qianwei,baiwei,shiwei,gewei; //显示数据各个位置数字的临时变量 unsigned int code

led_seg_code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //段码表示0-9

volatile unsigned int dis,distance,A_distance,time,A_time,cost,A_cost; //定义路程、价钱、总路程,总时间,全局变量; volatile unsigned int

temp_cost,temp_distance,temp_cost_1,temp_distance_1; //需要用来传递的临时 全局变量

sbit key1=P1^4; //开始打表

sbit key2=P1^5; //停车,停止打表 sbit key3=P3^3; //以按键模拟堵车

sbit key4=P1^6; //查看 合计 打表 里程 及 费用 sbit key5=P1^7; //清除当前显示

sbit led1=P1^0; // 指示key1 sbit led2=P1^1; // 指示key2 sbit led3=P1^2; // 指示key3 sbit led4=P1^3; // 指示key4 bit STAR_flag; // 标志位对应 key1 bit STOP_FLAG; // 标志位对应 key2 bit DC_flag; // 标志位对应 key3 bit DATA_flag; // 标志位对应 key4 bit CLR_FLAG; // 标志位对应 key5

void initial_data(void) {

STAR_flag=0; DATA_flag=0; DC_flag=0; STOP_FLAG=0; CLR_FLAG=0; led1=0; led2=0; led3=0;

led4=0; }

void juli() {

dis=dis+1; //每转一周1M(暂定)

if(dis==5)//100M 在数码管上显示(暂定) {

distance=distance+1; dis=0; } }

void jisuan() {

if(distance>=20)

cost=(distance-20)/DJ+QBJ; /*起步价;修改此处“5”,即可改变程序中打表起步价.每公里价钱;修改“10”,即可改变每公里单价.***/ else /* 注: “1”为每公里1¥ */ cost=QBJ; /*这里5,同上。*/ }

void fenli(uint temp) {

if(temp>9999) temp=9999;

qianwei=temp/1000; baiwei=(temp/100)%10; shiwei=(temp%100)/10; gewei=temp%10; }

void diplay_delay() {

uchar i;

for(i=0;i<200;i++); }

void led_show_1() {

if(qianwei==0) //判断高位是为0,若为0,则不显示。 {

if(baiwei==0) //判断高位是为0,若为0,则不显示。 {

if(shiwei==0) //判断高位是为0,若为0,则不显示。 {

P2=0xfe; //位选通

P0=led_seg_code[gewei]; //段选通 diplay_delay(); } else {

P2=0xfe;

P0=led_seg_code[gewei]; diplay_delay();

P2=0xfd;

P0=led_seg_code[shiwei]; diplay_delay(); } } else {

P2=0xfe;

P0=led_seg_code[gewei]; diplay_delay();

P2=0xfd;

P0=led_seg_code[shiwei]; diplay_delay();

P2=0xfb;

P0=led_seg_code[baiwei]; diplay_delay(); } } else {

P2=0xfe;

P0=led_seg_code[gewei]; diplay_delay();

P2=0xfd;

P0=led_seg_code[shiwei]; diplay_delay();

P2=0xfb;

P0=led_seg_code[baiwei]; diplay_delay();

P2=0xf7;

P0=led_seg_code[qianwei]; diplay_delay(); } }

void led_show_2() {

if(qianwei==0)//判断高位是为0,若为0,则不显示。 {

if(baiwei==0) //判断高位是为0,若为0,则不显示。

{ P2=0xef; //位选通

P0=led_seg_code[gewei]; //段选通 diplay_delay();

P2=0xdf;

P0=led_seg_code[shiwei]&0x7f; // |0x08显示小数点。 diplay_delay(); } else {

P2=0xef;

P0=led_seg_code[gewei]; diplay_delay();

P2=0xdf;

P0=led_seg_code[shiwei]&0x7f; diplay_delay();

P2=0xbf;

P0=led_seg_code[baiwei]; diplay_delay(); } } else {

P2=0xef;

P0=led_seg_code[gewei]; diplay_delay();

P2=0xdf;

P0=led_seg_code[shiwei]&0x7f; diplay_delay();

P2=0xbf;

P0=led_seg_code[baiwei]; diplay_delay();

P2=0x7f;

P0=led_seg_code[qianwei]; diplay_delay(); } }

void delay(uint x)

…… 此处隐藏:1179字,全部文档内容请下载后查看。喜欢就下载吧 ……
出租车计价器课程设计报告(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/49773.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)