单片机出租车计价器程序及原理图

单片机出租车计价器程序及原理图
单片机出租车计价器程序及原理图

#include

#include

#define uint unsigned int

#define uchar unsigned char

#define DISPON 0x3f //显示开

#define DISPOFF 0x3e //显示关

#define FIRSTROW 0xc0 //显示起始行设置1 1 L5 L4 L3 L2 L1 L0,在0到63行间选择

#define SETY 0xb8 //Y方向,8页64行,1 0 1 1 1 P2 P1 P0,0到8页选择

#define SETX 0x40 //X方向,半屏64列,0 1 C5 C4 C3 C2 C1 C0 ,0到63列选择/*P2+P0口16位编址,有效位是P2.3~P2.0,无关位用“1”表示

P2.0--RS,P2.1--RW,P2.2--CS2,P2.3--CS1

右屏命令和数据读写编址CS2 CS1 RW RS*/

#define LLCD_CMD_WR XBYTE[0xf4ff] //0 1 0 0

#define LLCD_DAT_WR XBYTE[0xf5ff] //0 1 0 1

#define LLCD_CMD_RD XBYTE[0xf6ff] //0 1 1 0

#define LLCD_DAT_RD XBYTE[0xf7ff] //0 1 1 1

/*左屏命令和数据读写编址*/

#define RLCD_CMD_WR XBYTE[0xf8ff] //1 0 0 0

#define RLCD_DA T_WR XBYTE[0xf9ff] //1 0 0 1

#define RLCD_CMD_RD XBYTE[0xfaff] //1 0 1 0

#define RLCD_DA T_RD XBYTE[0xfbff] //1 0 1 1

/**********************数据坐标记录**************************

左-路程:整数部分x=9,y=1,小数部分x=31,y=1

左-路程费用:整数部分x=9,y=3,小数部分x=31,y=3

总费用:整数部分-左:x=45,y=5

路程单价:x=34,y=7

右-时间:整数部分x=20,y=1

右-时间费用:整数部分x=10,y=3,小数部分x=32,y=3

总费用:小数部分-右:x=2,y=5

时间单价:x=44,y=7

*************************************************************/

#define L_Mile_X_Z 9

#define L_Mile_X_D 30

#define L_Mile_Y 1

#define L_Cost_X_Z 9

#define L_Cost_X_D 30

#define L_Cost_Y 3

#define L_Total_X 45

#define L_Total_Y 5

#define L_Unit_X 34

#define L_Unit_Y 7

#define R_Time_X 20

#define R_Time_Y 1

#define R_Cost_X_Z 10

#define R_Cost_X_D 31

#define R_Cost_Y 3

#define R_Total_X 2

#define R_Total_Y 5

#define R_Unit_X 44

#define R_Unit_Y 7

sbit LED=P2^7 ;

sbit START=P1^0;

sbit STOP=P1^1;

sbit CLEAR=P1^2;

sbit MUINT_UP=P1^4;

sbit MUINT_D=P1^5;

sbit TUINT_UP=P1^6;

sbit TUINT_D=P1^7;

uchar Mile_Unit=4,Time_Unit=2;

long time_cost,time_cost_Z,time_cost_D,time_con_s,time_con_m;

long mile_cost,mile_cost_Z,mile_cost_D,mile_con_m,mile_con_km;

long speed_con,speed_con_m,speed,speed_flag,cost_flag;

long total_z=5,total_d;

code char shu[10][6]={

0x3E,0x41,0x41,0x41,0x3E,0x00, //0

0x00,0x42,0x7F,0x40,0x00,0x00, //1

0x42,0x61,0x51,0x49,0x46,0x00, //2

0x22,0x41,0x49,0x49,0x36,0x00, //3

0x38,0x24,0x22,0x7F,0x20,0x00, //4

0x27,0x45,0x45,0x45,0x39,0x00, //5

0x3E,0x45,0x45,0x45,0x38,0x00, //6

0x01,0x01,0x79,0x05,0x03,0x00, //7

0x36,0x49,0x49,0x49,0x36,0x00, //8

0x0E,0x51,0x51,0x51,0x3E,0x00, //9

};

/*************************初始化界面*****************************/

code uchar logo[]=

{

0xFF,0x07,0x03,0xE1,0x11,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x11,0xE1,0x03,0x07,0xFF,

0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x11,0xE1,0x03,0x07,0xFF, 0xFE,0x00,0x00,0xFF,0x00,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFE,0x10,0x28,0x44,0x82,0x00,0xF8,0x08,0xF8,0x08,0xF8,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x04, 0xF8,0x04,0xFE,0x00,0xF4,0x00,0xF8,0x08,0xF8,0x08,0xF8,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02, 0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x02,0x02, 0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00, 0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00, 0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0xFF,0x00,0xFC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x12,0x12,0x13,0x7E,0x13,0x12,0x12,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0xFC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x12,0x12,0x13,0x7E,0x13,0x12,0x12,0x00,0x00,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05, 0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0xC5,0x24,0x14,0x14,0x14,0x15,0x15, 0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14, 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x12,0x11,0x10,0x10,0x1F, 0x1F,0x10,0x10,0x11,0x12,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x14, 0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x15, 0x15,0x15,0x15,0x15,0x14,0x15,0x25,0xC5,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05, 0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0xFE, 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x7E,0x3C, 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60, 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x4A,0x4C, 0xF8,0x4C,0x4A,0x49,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x04,0x04,

0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x05,

0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0xFC,

0xFC,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05,

0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,

0x05,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,

0xFE,0xE0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x9E,0xA0, 0x20,0x9E,0x80,0xBC,0x82,0x82,0xBC,0x80,0x3D,0x80,0x84,0x9E,0xA4,0xA4,0x80,0xB6, 0x36,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x3E,0x41,0x41,0x41,

0x3E,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFF,

0xFF,0xE0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x9E,0xA0,

0x20,0x9E,0x80,0xBC,0x82,0x82,0xBC,0x80,0x3D,0x80,0x84,0x9E,0xA4,0xA4,0x80,0xB6, 0x36,0x80,0x80,0x3E,0x41,0x41,0x41,0x3E,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFE, };

/*************************************************************

写命令

*************************************************************/

void lcd_cmd_wr(uchar cmdcode,uchar right)

{

if(right)

RLCD_CMD_WR=cmdcode;

else

LLCD_CMD_WR=cmdcode;

}

/*************************************************************

写数据

*************************************************************/

void lcd_data_wr(uchar dispdata,uchar right)

{

if(right)

RLCD_DA T_WR=dispdata;

else

LLCD_DAT_WR=dispdata;

}

/*************************************************************

数据清屏

*************************************************************/

void lcd_clr(void)

{

uchar i,j;

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

lcd_cmd_wr(SETY+i,0);

lcd_cmd_wr(SETX,0);

lcd_cmd_wr(SETY+i,1);

lcd_cmd_wr(SETX,1);

for(j=0;j<64;j++)

{

lcd_data_wr(0,0);

lcd_data_wr(0,1);

}

}

}

/************************************************************* 写一个数字

*************************************************************/ void lcd_shu_wr(uchar w,uchar x,uchar y,uchar shu_1)

{

uchar i;

lcd_cmd_wr(SETY+y,w);

lcd_cmd_wr(SETX+x,w);

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

lcd_data_wr(shu[shu_1][i],w);

}

/************************************************************* 写一个三个数字

*************************************************************/ void lcd_sanshu_wr(uchar w,uchar x,uchar y,uint str)

{

uint bai,shi,ge;

bai=str/100;

shi=(str%100)/10;

ge=str%10;

lcd_shu_wr(w,x,y,bai);

lcd_shu_wr(w,x+6,y,shi);

lcd_shu_wr(w,x+12,y,ge);

}

/************************************************************* 写一贞128X64点的图片显示

*************************************************************/ void lcd_bmp_wr(uchar *bmp)

{

uchar i,j;

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

lcd_cmd_wr(SETY+i,0);

lcd_cmd_wr(SETX,0);

lcd_cmd_wr(SETY+i,1);

lcd_cmd_wr(SETX,1);

for(j=0;j<64;j++)

{

lcd_data_wr(bmp[128*i+j],0);

lcd_data_wr(bmp[128*i+j+64],1);

}

}

}

/************************************************************* 延时函数

*************************************************************/ DelayNms(uint y)

{

uint x;

for(;y>0;y--)

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

}

/************************************************************* LCD初始化

*************************************************************/ void lcd_init(void)

{

lcd_cmd_wr(DISPON,0);

lcd_cmd_wr(FIRSTROW,0);

lcd_cmd_wr(SETY,0);

lcd_cmd_wr(SETX,0);

lcd_cmd_wr(DISPON,1);

lcd_cmd_wr(FIRSTROW,1);

lcd_cmd_wr(SETY,1);

lcd_cmd_wr(SETX,1);

lcd_clr();

DelayNms(500);

lcd_bmp_wr(logo);

//welcome_init();

}

/************************************************************** 初始化中断,定时器等

**************************************************************/

void interrput_init()

{

IT0=1; //外部中断0触发方式:边沿触发

EX0=1; //开外部中断0

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

ET1=1; //开定时器中断1

//EA=1; //开部中断

TMOD=0x11; //00010001

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

TR0=1;

TH1=(65535-50000)/256;

TL1=(65535-50000)%256;

TR1=0;

}

/**************************************************************

显示数据

**************************************************************/

void display()

{

lcd_sanshu_wr(0,L_Mile_X_Z,L_Mile_Y,mile_con_km); //写行驶路程lcd_sanshu_wr(0,L_Mile_X_D,L_Mile_Y,mile_con_m);

lcd_sanshu_wr(0,L_Cost_X_Z,L_Cost_Y,mile_cost_Z); //写路程费用lcd_sanshu_wr(0,L_Cost_X_D,L_Cost_Y,mile_cost_D);

lcd_sanshu_wr(0,L_Total_X,L_Total_Y,total_z); //写总费用整数部分lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit); //写路程单价

lcd_sanshu_wr(1,R_Time_X,R_Time_Y,time_con_m); //写行驶时间lcd_sanshu_wr(1,R_Cost_X_Z,R_Cost_Y,time_cost_Z); //写时间费用lcd_shu_wr(1,R_Cost_X_D,R_Cost_Y,time_cost_D);

lcd_sanshu_wr(1,R_Total_X,R_Total_Y,total_d); //写总费用小数部分lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit); //写时间单价}

/*************************************************************

键盘输入

**************************************************************/

void keyboard()

{

P1=0xff;

if(P1!=0xff)

{

DelayNms(1);

if(P1!=0xff)

{

if(!START) E A=1;

if(!STOP) EA=0;

if(!CLEAR)

{

mile_con_km=0;

mile_con_m=0;

mile_cost_Z=0;

mile_cost_D=0;

total_z=5;

time_con_m=0;

time_cost_Z=0;

time_cost_D=0;

total_d=0;

display();

}

if(!MUINT_UP)

{

Mile_Unit++;

while(!MUINT_UP);

lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit);//写路程单价}

if(!MUINT_D)

{

Mile_Unit--;

while(!MUINT_D);

lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit);//写路程单价}

if(!TUINT_UP)

{

Time_Unit++;

while(!TUINT_UP);

lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit);//写时间单价}

if(!TUINT_D)

{

Time_Unit--;

while(!TUINT_D);

lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit);//写时间单价}

}

}

}

/**************************************************************

测速

**************************************************************/ void testspeed()

{

if(speed>=18)

{

speed_flag=1;

TR1=0;

}

else

{

speed_flag=0;

TR1=1;

}

}

/************************************************************** 主函数

**************************************************************/ void main()

{

lcd_init();

interrput_init();

display();

while(1)

{

keyboard();

testspeed();

}

}

/************************************************************* 外部中断0服务程序

测所走过的路程,并且测车速

*************************************************************/ void Int0() interrupt 0

{

LED=!LED;

speed_con_m++;

if(speed_flag)

{

mile_con_m++;

if(mile_con_m==1000)

{

mile_con_m=0;

mile_con_km++;

if(mile_con_km==1)

cost_flag=1;

}

}

}

/************************************************************

定时器0中断服务程序

测速计时器

*************************************************************/ void timer0() interrupt 1

{

TH0=(65535-50000)/256; //50ms

TL0=(65535-50000)%256;

speed_con++;

if(speed_con%5==0) //0.25s测速一次

{

speed=speed_con_m*2;

speed_con_m=0;

}

if(speed_con==20) ////1s刷新显示一次

{

speed_con=0;

if(cost_flag)

{

mile_cost_D=(mile_con_m*Mile_Unit)%1000; //计算路费用

mile_cost_Z=(mile_con_km-1)*Mile_Unit;

mile_cost_Z=mile_cost_Z+(mile_con_m*Mile_Unit)/1000;

total_z=mile_cost_Z+time_cost_Z; //计算总费用

total_z+=5;

total_d=mile_cost_D+time_cost_D*100;

total_z=total_z+total_d/1000;

total_d=total_d%1000;

}

display();

}

}

/*************************************************************

定时器1中断服务程序

按时间计费计时器

*************************************************************/ void timer1() interrupt 3

{

TH1=(65535-50000)/256; //50ms计时

TL1=(65535-50000)%256;

time_con_s++;

if(time_con_s==1200) //一分钟

{

time_con_s=0;

time_con_m++;

time_cost=time_con_m*Time_Unit; //计算时间费用

time_cost_Z=time_cost/10;

time_cost_D=time_cost%10;

}

}

出租车计价器课程设计报告

昆明理工大学信息工程与自动化学院学生实验报告 (2012 —2013 学年第 2 学期) 课程名称:可编程逻辑器件设计开课实验室:信自楼 2013 年4月 11日

一、引言 汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。 我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。 随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。我们设计采用8086为主控器,以A44E霍尔传感器测距,实现对出租车的多功能的计价设计,输出采用8段数码显示管。 二、总体设计方案 利用8253作为定时/计数器,控制电机转速并测量电机的转数;8255作为输入输出接口,控制数码管显示启动后经过的里程数(小数点后取2位有效值)。 硬件连接说明: 直流电机控制器的基础上,增加了一个电机测速电路构成。 8255的B口作为数码管的笔划码驱动;C口的低4位作为段码控制,显示实际里程,同时,也用于输出键盘的列扫描码;PC6、PC7输入行扫描码,用于识别按键,程序中仅使用了PC6行上的四个按键,其定义如下: X1:启动/停止键;X2:加速键,与X3、X4键组合使用;X3:“+”键;X4:“-”键。 A口仅使用了PA0,输出PWM脉冲信号,通过驱动芯片驱动电机,其输出电压的高低与PWM脉冲的占空比成正比。 电机的转数,通过霍尔元件变换为脉冲个数,送入8253的通道2,计数后,将转数转换为里程数,最小单位为0.01公里,送CPU记录,结果由数码管显示出来。

课程设计-出租车自动计费器设计

新疆大学 课程设计报告 所属院系:电气工程学院 专业:电气工程及其自动化课程名称:电子技术基础B 设计题目:出租车自动计费器班级:电气#####班 学生姓名:要要 学生学号:@@@@@@ 指导老师: 常翠宁刘兵完成日期:2013. 1. 4

出租车自动计费器 一、总体方案的选择 1.拟定系统方案框图: 方案一: 汽车在行驶时,里程传感器将里程数转换成与之成正比的脉冲个数,然后由计数译码电路变成收费金额。里程传感器由磁铁和干簧管组成,磁铁置于变速器涡轮上,每行驶100米,磁铁与干簧管重合一次,即输出一个脉冲信号,则10个脉冲/公里(设为P3)。里程单价(设2.1元/公里)可由两位(B2=2、B1=1)BCD拨码开关设置,经比例乘法器(如J 690)后将里程计费变换成脉冲数P1=P3(1B2+0.1B1)。由于P3=10,则P1为21个脉冲,即脉冲当量为0.1元/脉冲。 同理,等车计费也可以转换成脉冲当量,这需要由脉冲发生器产生10个脉冲/10分钟(设为P4),如果等车单价为0.6元/10分钟(置B4=0、B3=6),经比例乘法器后将等车计费变换成脉冲数P2=P4(0B4+0.1B3)。由于P4=10,则P2为6个脉冲,即得到相同的脉冲当量为0.1元/脉冲。同理,起步价(设3元)也可以转换成脉冲数(P0= 单价/当量=5/0.1=50个脉冲)或者将P0作为计数器的预置信号(框图所示)。最后行车费用转换成脉冲总数P=P0+P1+P2,其结果用译码显示器显示。 图1:出租车自动计费器方案一框图

脉冲,行程里程及起步电路则是60毫秒/脉冲。而等候电路为6秒/脉冲。实现此电路我用555多谐振荡器构成。为了减少实验测量时间,我把脉冲周期都缩小了1000倍,即0.06毫秒/脉冲和6毫秒/脉冲。设计电路图及仿真波形图如下: 图3:0.06毫秒555多谐振荡脉冲电路 图4:0.06毫秒脉冲波形图

基于51单片机的简易计算器制作

基于51单片机的简易计算器制作专业:电气信息班级:11级电类一班 姓名:王康胡松勇 时间:2012年7月12日 一:设计任务 本系统选用AT89C52单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LED 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LED上提示八个0;当除数为0时,计算器会在LED上会提示八个负号。 设计要求:分别对键盘输入检测模块;LED显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 二.硬件设计 单片机最小系统 CPU:A T89C52 显示模块:两个4位7段共阴极数码管 输入模块:4*4矩阵键盘 1.电路图

电路图说明 本电路图采用AT89C52作为中处理器,以4*4矩阵键盘扫描输入,用两个74HC573(锁存器)控制分别控制数码管的位于段,并以动态显示的方式显示键盘输入结果及运算结果。为编程方便,以一个一位共阴极数码管显示负号。 三,程序设计 #include #define Lint long int #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; //锁存器段选sbit wela=P2^7; sbit display_g=P2^0; //负号段选 sbit display_w=P2^1; //负号位选uchar code table[]={0x3f,0x06,0x5b,0x4f, //0,1,2,3

数字电路出租车计价器设计

时序逻辑电路课程设计 引言: 我们组选择了题目一,设计出租车计价器,通过对课本、资料的查阅,再经过构思,设计,搭建电路,仿真,得出了结果,虽然不够完美,但是也掌握了一些知识,增加了对各种原件的印象。下文将详细给出设计。 一、资料查阅 通过参考数字电路课本,以及数字电路实验书,再经过网络查阅,也参考了网上有的类似的设计,想出了电路的基本思路。 二、对于要求的实现 要求1:根据出租车上的速度传感器传来的脉冲个数和设置的里程单价来计算对应的总价格,并将总价格通过LED实时显示。 对于此要求的实现,通过查阅,我们发现了74LS160十位计数器,有预制与清零功能,能进行0-9重复计数。功能表如下 要求2:起步价可以设置:。 由于74LS160有置数功能,所以可以置数,能够要求其从一个确定的数开始计数,所以可以设置起步价。对于从要过了起步价里程才开始计数,因为每一个单位里程是一次脉冲,而芯片又是每一次脉冲才记一次数,所以应用触发器的存储功能来使前几次脉冲无法传至芯片。 要求3:里程单价可以设置。 运用比例乘法器,可以实现脉冲的改变。比如用CC4527比例乘法器,输入一个BCD 数,其输出的脉冲为输入脉冲的BCD的十分之一倍。比如速度传感器的每个脉冲为1km,单价为2元,那么就输入20的BCD数,那么比例乘法器就会输出一个2倍速度传感器脉冲的脉冲信号,以此脉冲作为后面电路的时钟信号,可以实现单价2元。其他单价以此类推,但是由于仿真软件中没有找到比例乘法器,所以仿真中没有单价设置这一项。 要求4:可以对总价格进行复位,从而为下次计费做好准备。

运用74LS160的置数功能,重新对其进行置数即可实现下次重新开始计费。 三、具体电路 时序逻辑:左下角U1为里程脉冲发生器,经过N个D锁存器的延时,才可以传至上面的74LS160芯片,芯片开始计数,显示在右上方的两位显示器上,即计程车的价钱。电路中有两个单刀单置开关,上面的S1和下面的S2。S1的作用为每次重新搭载乘客后的清零和重新显示起步价,S2的功能为开启里程传感器,为计程车进行计价。下面对电路各个部分进行解释: 1.计数部分: 用N块74LS160芯片,即可显示N位十进制数,本次仿真以2位为例,也就是只可以显示0-99元的价格。上图七段显示管U5为十位,U3为个位。如图通过开关S5进行起步价设置控制,芯片有CR和LD引脚,CR为1,LD为0时可以进行置数,入上图,设置起步价为5元。由于当有脉冲时候,才会执行置数功能,而又不能和里程传感器用同一个时钟信号,所以单独设置了一个信号源,通过S1开关,既控制LD电位,又通过与门或门非门作为选择开关控制U16信号源的信号是否输入芯片。当开关断开,LD电位为0,U16信号导通到U2芯片,执行置数功能。当S1开关闭合,CR和LD电位都为1,以里程脉冲作为时钟信号执行计数功能,从预制的数字开始计数。

电子设计资料-出租车计价器-程序

#include #define uchar unsigned char sbit P3_4=P3^4; //code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x86,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[4]; int qw,bw,sw,gw,a,b,c; void disp(void) { for(c=3;c>=0;c--) { SBUF=tab[sz[c]]; while(!TI); TI=0; } } void scjs(void)interrupt 3 { TH1=0X3C; TL1=0xB0; a=a+1; if(a==2) { a=0; P3_4=!P3_4; if(P3_4==0) { b=TH0*256+TL0; ///yw=sz[0]=b/100000; //ww=sz[0]=b/10000%10; qw=sz[0]=b/1000%10; bw=sz[1]=b/100%10; sw=sz[2]=b/10%10; gw=sz[3]=b%10; disp(); } } } main() {

IE=0X88; TH1=0X3C; TL1=0XB0; TR0=1; TR1=1; a=0; while(1); } 2 #include #define uchar unsigned char sbit P3_4=P3^4; //code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6]; int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f; void disp(void) { for(c=5;c>=0;c--) { SBUF=tab[sz[c]]; while(!TI); TI=0; } } void scjs(void)interrupt 3 { TH1=0X3C; TL1=0xB0; a=a+1; if(a==2) { a=0; P3_4=!P3_4; if(P3_4==0) { b=TH0*256+TL0;

基于51单片机的出租车计价器带仿真及程序

引言 现在各个城市出租车行业都已普及,因此出租车计价器的技术已经成熟,但是出租车计价器的市场还具有广阔的前景。随着城市建设的日益完善,关乎城市面貌的出租车行业也将迅速发展,出租车计价器的的大批量需求也是毫无疑问的,所以未来出租车计价器的市场还是有相当大的潜力的。 本次出租车计价器设计以AT89S52单片机为中心,采用U18霍尔传感器对轮胎转数进行计数,实现对出租车里程的测量,并最终计算出结果。其中采用寄存器芯片AT24C02使系统在掉电的时候对单价、里程、车轮长度等信息进行存储,采用时钟芯片DS1302来显示时间和在系统需要时进行计时。输出采用两个4段数码显示管,而且根据按键有空车指示灯、等待查询指示灯、单程指示灯进行指示。 汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是有一定的应用价值的。

1 绪论 1.1 出租车计价器概述 我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。 本次设计的目的在于现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。 1.2 单片机的概述 计算机系统已明显地朝巨型化、单片化、网络化三个方向发展。巨型化发展的目的在于不断提高计算机的运算速度和处理能力,以解决复杂系统计算和高速数据处理,比如系统仿真和模拟、实时运算和处理。单片化是把计算机系统尽可能集成在一块半导体芯片上,其目的在于计算机微型化和提高系统的可靠性,这种单片计算简称单片机。单片机的内部硬件结构和指令系统主要是针对自动控制应用而设计的所以单片机又称微控制器MCU(Micro Controller Unit)。用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机又叫做嵌入式微控制器(Embedded MCU)。单片机自20世纪70年代问世以来,以其鲜明的特点得到迅猛发展,已广泛应用于家用电器、智能玩具、智能仪器仪表、工业控制、航空航天等领域,经过30多年的发展,性能不断提高,品种不断丰富,已经形成自动控制的一支中坚力量。据统计,我国的单片机年容量已达1~3亿片,且每年以大约16%的速度增长,但相对于国际市场我国的占有率还不到1%。这说明单片机应用在我国有着广阔的前景。对于从事自动控制的技术人员来讲,

单片机课程设计 出租车计价器

摘要 出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。 在上电时LED数码管显示最初的起步价,里程收费,等待时间收费三种收费。按暂停键,计价器可暂停计价,按查询键,在LED数码管上可以显示运行时等待的时间。通过计算可以得出总共的费用和总的路程。在这里主要是以AT89S52 单片机为核心控制器,P0口、P2 口接两片四合一数码管,P1口接按键,通过按键输入。 关键词:单片机 AT89S52;LED数码管;出租车计费器;

目录 1 概述 (1) 1.1 课题简介 (1) 1.2 功能要求 (1) 2 系统总体方案及硬件设计 (2) 2.1 系统工作原理及总体方案 (2) 2.2 单片机最小系统单元 (3) 2.3 霍尔传感器检测单元 (3) 2.4 键盘调整单元 (5) 2.5 显示单元 (5) 3 软件设计 (7) 3.1系统主程序 (7) 3.2 按键扫描程序 (8) 3.3 中断程序 (9) 3.4 计算程序 (10) 3.5 显示程序 (10) 4 实验仿真 (12) 4.1 Proteus介绍 (12) 4.2 调试与测试 (12) 4.3 里程计价测试 (12) 5 课程设计体会 (14) 参考文献 (15) 附1:系统原理图 (16) 附2:源程序代码 (16)

基于51单片机的计算器设计

目录 第一章引言 (3) 1.1 简述简易计算器 (3) 1.2 本设计主要任务 (3) 1.3 系统主要功能 (4) 第二章系统主要硬件电路设计 (4) 2.1 系统的硬件构成及功能 (4) 2.2 键盘电路设计 (5) 2.3 显示电路设计 (6) 第三章系统软件设计 (7) 3.1 计算器的软件规划 (7) 3.2 键盘扫描的程序设计 (7) 3.3 显示模块的程序设计 (8) 3.4 主程序的设计 (9) 3.5 软件的可靠性设计 (9) 第四章调试 (9) 第五章结束语 (10) 参考文献 (11) 附录源程序 (11)

第一章引言 1.1 简述简易计算器 近几年单片机技术的发展很快,其中电子产品的更新速度迅猛。计算器是日常生活中比较的常见的电子产品之一。如何才能使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器呢? 本设计是以AT89S52单片机为核心的计算器模拟系统设计,输入采用4×6矩阵键盘,可以进行加、减、乘、除9位带符号数字运算,并在LCD1602上显示操作过程。 科技的进步告别了以前复杂的模拟电路,一块几厘米平方的单片机可以省去很多繁琐的电路。现在应用较广泛的是科学计算器,与我们日常所用的简单计算器有较大差别,除了能进行加减乘除,科学计算器还可以进行正数的四则运算和乘方、开方运算,具有指数、对数、三角函数、反三角函数及存储等计算功能。计算器的未来是小型化和轻便化,现在市面上出现的使用太阳能电池的计算器, 使用ASIC设计的计算器,如使用纯软件实现的计算器等,未来的智能化计算器将是我们的发展方向,更希望成为应用广泛的计算工具。 1.2 本设计主要任务 以下是初步设定的矩阵键盘简易计算器的功能: 1.扩展4*6键盘,其中10个数字,5个功能键,1个清零 2.强化对于电路的焊接 3.使用五位数码管接口电路 4. 完成十进制的四则运算(加、减、乘、除); 5. 实现结果低于五位的连续运算; 6. 使用keil 软件编写程序,使用汇编语言; 7. 最后用ptoteus模拟仿真; 8.学会对电路的调试

出租车计价器系统完整版

智能电子产品设计与制作 课程设计(论文) 题目: 《出租车计价器系统设计》 学院:电气与电子信息工程学院 专业名称: 学号: 学生姓名: 同组成员: 指导教师: 课设时间:2011年5月23日—2011年6月10日 目录

一.设计目的 (2) 二.设计要求 (2) 三.系统结构 (2) 四.功能模块设计 (3) 五.软件设计 (5) 六.电路组装与调试 (6) 七.电路仿真 (7) 八.总结 (8) 八.附录 (9)

出租车计价器课程设计 一、设计目的 随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本设计采用AT89S52单片机为主控器,以红外对管测转速,对实际里程的模拟,实现对出租车的多功能的计价设计,并采用AT24C01实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜和中途等待来调节单价。 二、设计要求 出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。从起步价开始,当汽车程行驶未满3公里时,均按起步价计算。过3公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。同时,白天和夜晚价格不同,可以进行切换。白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。(默认起步价为5元/3公里,里程单价白天为1.5元/公里,夜晚为1.8元/公里,等待计时单价为0.5元/5分钟) 三、系统结构 根据设计的要求选择实验的方案:采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。设计采用AT89S51单片机为主控器,以红外对管和电机测转速(按键替代),实现对出租车的基本的计价设计,并采用AT24C02实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管,相对液晶显示价格便宜,利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的计价功能。 器系统结构图如下: 四、功能模块 1、单片机模块

51单片机出租车计价器的设计

基于51单片机原理出租车计价器的设计 摘要 出租车计价器是出租车营运收费的专用只能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4个阶段的发展。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的出租车计价器。出租车计价器计费是否准确是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。在随着科技的发展,现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。 本次设计是采用AT89C52单片机为中心,外加霍尔传感器行对里程进行测距,由于实验室的限制的问题所以改用按键代替霍尔传感器,实现对出租车计价统计,输出采用LCD1602A的出租车计价器。 关键字:51系列单片机,霍尔传感器,LCD1602A

前言 (2) 第一章出租车计价系统的设计要求与设计方案 (3) 1.1 基本设计要求 (3) 1.2 性能指标 (3) 1.3 显示功能 (3) 第二章出租车计价器系统的硬件设计 (4) 2.1 出租车硬件框图 (4) 2.2 AT89C52单片机及引脚说明 (4) 2.3 LCD1602A的简介 (7) 2.4 时钟电路 (10) 2.5 复位电路设计 (10) 2.6 显示电路 (11) 2.7 键盘接口技术 (12) 2.8 霍尔传感器设计 (12) 第三章出租车计价器系统的软件设计 (13) 3.1 系统整体程序流程 (13) 3.2 中断子函数 (14) 3.3 按键判断方式 (15) 3.4 LCD1602显示的判断 (15) 第四章出租车系统的安装与调试 (17) 4.1 硬件调试 (17) 4.2 软件调试 (17) 第五章设计体会与小结 (18) 参考文献 (19) 附录 (20) 一源程序 (20) 二系统硬件原理图 (29)

出租车计价器设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:微机系统综合课程设计 课程设计题目: 出租车计价器的设计与实现 院(系): 计算机学院 专 业 : 计算机科学与技术 班 级: 24010104 学 号: 2012040101037 姓 名: 程里 指导教师: 罗振 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要 求;数据不实 ,不予通过。报告和电子数据必须作为实验现象重复的关键依据。

学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期:年月

沈阳航空航天大学课程设计任务书

课程设计总结:

目录 1 引言 0 1.1出租车计价器概述 0 1.2计价器整体功能描述结构 0 1.3各部分电路功能描述 (1) 2计价器硬件设计 (1) 2.1系统的硬件构成及功能 (1) 2.2MCS-51系列单片机内部结构及功能部件 (3) 2.2.1MCS-51系列单片机的内部结构框图 (3) 2.2.2单片机外部引脚说明 (4) 2.2.3并行输入/输出接口 (6) 3系统的软件设计 (6) 3.1软件总体设计 (6) 3.2系统主程序设计 (8) 3.3显示子程序服务程序 (9) 3.4按键服务程序 (9) 4系统调试与测试结果分析 (10) 4.1系统调试 (10) 4.1.1硬件调试 (10) 4.1.2软件调试 (10) 4.1.3软硬件联调 (10) 4.2 电路图 (11) 参考文献 (10) 附录(关键部分程序清单) (13)

基于51单片机的计算器设计程序代码汇编

DBUF EQU 30H TEMP EQU 40H YJ EQU 50H ;结果存放 YJ1 EQU 51H ;中间结果存放GONG EQU 52H ;功能键存放 ORG 00H START: MOV R3,#0 ;初始化显示为空MOV GONG,#0 MOV 30H,#10H MOV 31H,#10H MOV 32H,#10H MOV 33H,#10H MOV 34H,#10H MLOOP: CALL DISP ;PAN调显示子程序WAIT: CALL TESTKEY ; 判断有无按键JZ WAIT CALL GETKEY ;读键 INC R3 ;按键个数 CJNE A,#0,NEXT1 ; 判断就是否数字键 LJMP E1 ; 转数字键处理NEXT1: CJNE A,#1,NEXT2 LJMP E1 NEXT2: CJNE A,#2,NEXT3 LJMP E1 NEXT3: CJNE A,#3,NEXT4 LJMP E1 NEXT4: CJNE A,#4,NEXT5 LJMP E1 NEXT5: CJNE A,#5,NEXT6 LJMP E1 NEXT6: CJNE A,#6,NEXT7 LJMP E1 NEXT7: CJNE A,#7,NEXT8 LJMP E1 NEXT8: CJNE A,#8,NEXT9 LJMP E1 NEXT9: CJNE A,#9,NEXT10 LJMP E1 NEXT10: CJNE A,#10,NEXT11 ;判断就是否功能键LJMP E2 ;转功能键处理NEXT11: CJNE A,#11,NEXT12 LJMP E2 NEXT12: CJNE A,#12, NEXT13 LJMP E2

C语言出租车计价器课程设计

出租车计价器课程设计目录 前言 1、系统工作原理 1.1 功能说明 1.2 基本原理 2、硬件设计 2.1 单片机最小系统单元 2.2 A44E霍尔传感器检测单元 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、总结 参考文献 附录A 系统原理图 附录B 系统源程序 前言 随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本设计采用AT89S52单片机为主控器,以A44E霍尔传感器测距,实现对出租车的多功能的计价设计,并采用AT24C01实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜和中途等待来调节单价。 第一章系统工作原理

1.1 功能说明 出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。从起步价开始,当汽车程行驶未满3公里时,均按起步价计算。过3公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。同时,白天和夜晚价格不同,可以进行切换。白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。(默认起步价为5元/3公里,里程单价白天为1.5元/公里,夜晚为1.8元/公里,等待计时单价为0.5元/5分钟) 1.2 基本原理 计数器系统主要由五部分组成:A44E霍尔传感器、AT89S52单片机、独立键盘、EEPROM AT24C01和显示数码管。 霍尔传感器安装在车轮上,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程和单价都实时地显示在数码管上。独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来,调节好的数据存储到EEPROM中,掉电后可以使调好的数据不丢失,下次得电后直接从EEPROM读到单片机,系统结构图如图1。

51单片机出租车计价器设计课程设计

任务书 毕业设计(论文)原创性声明和使用授权说明 原创性声明本人郑重承诺:所呈交地毕业设计(论文),是我个人在指导教师地指导下进行地研究工作及取得地成果.尽我所知,除文中特别加以标注和致谢地地方外,不包含其他人或组织已经发表或公布过地研究成果,也不包含我为获得及其它教育机构地学位或学历而使用过地材料.对本研究提供过帮助和做出过贡献地个人或集体,均已在文中作了明确地说明并表示了谢意. 日期:名:者作签

期:指导教师签名:日 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)地规定,即:按照学校要求提交毕业设计(论文)地印刷本和电子版本;学校有权保存毕业设计(论文)地印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目地前提下,学校可以公布论文地部分或全部内容. 期:日作者签名: 学位论文原创性声明本人郑重声明:所呈交地论文是本人在导师地指导下独立进行研究所取得地研究成果.除了文中特别加以标注引用地内容外,本论文不包含任何其他个人或集体已经发表或撰写地成果作品.对本文地研究做出重要贡献地个人和集体,均已在文中以明确方式标明.本人完全意识到本声明地法律后果由本人承担. 日月日期:年作者签名: 学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文地规定,同意学校保留并向国家有关部门或机构送交论文地复印件和电子版,允许论文被查阅和借阅.本人授权大学可以将本学位论文地全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文. .涉密论文按学校规定处理 日年月日期:作者签名:日月年日期:导师签名:摘要 随著超大规模集成电路技术地发展,单片机也随之有了很大发展,各种新颖地单片机层出不穷,并已广泛地应用到人类生活地各个领域,成为当今科学技术现代化不可缺少地重要工具.许多高校也纷纷开办了单片机这门学科,并在学科教授完后设有课程设计,希望同学能够通过这次设计学习和应用单片机解决工作中碰到地实际问题. 现代交通工具迅猛发展,出租车在人们地日常生活中所扮演地角色越练越重要,但如何准确计费,以达到既使乘客满意又不让出租车司机亏本地目地,就迫在眉睫.本课程设计主题是利用等实现出租车费用、LED位8、8279液晶显示器、可编程键盘显示接口器件LCD单片机、89C51. 路程和时间显示,作为一个单片机在实际生活中地简单应用.

出租车自动计费器设计(课程设计报告模板)

目录 1 绪论 (1) 1.1设计背景 (1) 1.2QUARTUS II简介 (1) 1.3VHDL语言基础 (2) 2 出租车计费器总体设计结构 (2) 2.1系统设计要求和目的 (2) 2.2.1 系统设计要求 (2) 2.2.1 系统设计目的 (2) 2.2设计思路 (3) 2.3系统总体结构 (3) 2.4出租车计费器系统工作流程图 (4) 3 出租车计费器的实现 (5) 3.1出租车计费器的顶层原理图 (5) 3.2系统各功能模块的实现 (5) 3.2.1 计费模块JIFEI (5) 3.2.2 计量模块JILIANG (6) 3.2.3 显示控制模块SELTIME (7) 3.2.4 显示模块DELED (7) 4 出租车计费器系统仿真及分析 (8) 4.1计费系统的仿真 (8) 4.2单元模块的仿真及分析 (10) 4.2.1 译码显示模块的仿真及分析 (10) 4.2.2 显示控制模块的仿真及分析 (12) 4.2.3 计量模块的仿真及分析 (13) 4.2.4 计费模块的仿真及分析 (13) 5 锁定管脚及硬件实现 (14) 5.1锁定管脚图 (14) 5.2硬件实现 (14) 5.2.1 显示结果的几种情况 (15) 5.2.2 硬件实现总结 (16) 6 设计体会与总结 (17) 参考文献 (18) 附录 (19) 1JILIANG模块的VHDL编程 (19) 2JIFEI模块的VHDL编程 (21) 3SELTIME控制模块的VHDL编程 (22) 4DELED模块的VHDL编程 (23)

1 绪论 1.1 设计背景 随着我国社会经济的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。于是,出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买卖纠纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具,它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是具有一定意义的。出租车计费器是出租车营运收费的专用智能化仪表,是出租车市场规范化,标准化以及减少司机与乘客之间发生纠纷的重要设备。一种功能完备,简单易用,计量准确的出租车计费器是加强出租车行业管理,提高服务质量的必需品。本设计就是采用VHDL硬件描述语言作为设计手段,采用自己的设计思路,得到一种出租车计价系统的软件结构,通过Quartus II 6.0软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求,具有一定的实用性。 1.2 QUARTUS II简介 QUARTUS II 是Altera公司的综合性CPLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整CPLD设计流程。QUARTUS II 支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Altera QUARTUS II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

基于51单片机的数字计算器的设计

《单片机技术及其应用》课程设计报告 专业:通信工程 班级:09312班 姓名:某某某 学号:09031069 指导教师: 二0一二年六月十八日

目录 1设计目的 (1) 2 设计题目描述与要求 (1) 3 设计过程 (2) 4硬件总体方案及说明 (6) 5 软件总体方案及设计流程 (9) 6 调试与仿真 (13) 7 心得体会 (14) 8 指导老师意见 (15) 9 参考文献 (16) 附录一 (16) 附录二 (21)

基于51单片机的数字计算器的设计 1设计目的 简易计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用和单片机完整程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。单片机课程设计既巩固了课本学到的理论,还学到了单片机硬件电路和程序设计,简易计算器课程设计通过自己动手用计算机电路设计软件,编写和调试,最后仿真,来加深对单片机的认识,充分发挥我们的个人创新和动手能力,并提高我们对单片机的兴趣,同时学习查阅资料、参考资料的方法。 本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件选择AT89C51单片机和74ls164,输入用4×4矩阵键盘。显示用5位7段共阴极LED静态显示。软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。选用编译效率最高的Keil软件进行编程,并用proteus仿真。 2 设计题目描述与要求 基于AT89C51数字计算器设计的基本要求与基本思路: (1)扩展4*4键盘,其中10个数字,5个功能键,1个清零 (2)使用五位数码管接口电路

出租车自动计费器EDA设计

出租车自动计费器EDA设计 6.7.1 设计要求 设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分,用三位数码管显示金额,最大值为元,最小计价单元为元,行程 3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里元计费,等待时间单价为每分钟1元。用两位数码管显示总里程。最大为99公里,用两位数码管显示等待时间,最大值为59min。 6.7.2原理描述 根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块计量模块、译码和动态扫描显示模块,其系统框图如图6-63所示,各模块功能如下: 图6-63出租车自动计费器系统框图 1分频模块 & 分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种频率。该模块产生频率信号用于计费,每个1HZ脉冲为元计费控制,10HZ信号为1元的计费控制,16Hz信号为元计费控制。 2 计量控制模块 计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分种的等待计时使能控制信号en1, 行程 3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程 3公里内,且等待累计时间3分钟内,起步费为8元;3公里外以每公里元计费,等待累计时间3分钟外以每分钟1元计费;计时功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行驶的公里数。计程器的量程为99公里,满量程自动归零。 3 译码显示模块 该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。其中计费数据jifei4~ jifei1~送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。

基于51单片机的简易计算器设计

河南##############学校 毕业设计(论文) 基于51单片机的简易计算器 系部: 自动控制系 专业: 电气自动化 班级: 自083 姓名: 崔 # # 学号: 091415302 指导老师: 许 # 二零一二年五月八日

基于51单片机的简易计算器 摘要 工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次工程实践中,我以《智能化测量控制仪表原理与设计》、《MCS-51系列单片微型计算机及其应用》课程中所学知识为基础,设计了简易计算器。本系统以MCS-51系列中的8051单片机为核心,能够实现多位数的四则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管动态显示。本系统的设计说明重点介绍了如下几方面的内容:基于单片机简易计算器的基本功能,同时对矩阵键盘及数码管动态显示原理进行了简单的阐述;介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;对系统各功能模块的软、硬件实现进行了详细的设计说明。 关键词:MCS-51;8051单片机;计算器;加减乘除

Based on the simple calculator 51 SCM Abstract The engineering practice teaching is to students better to consolidate and practice have set up by the professional knowledge, in this engineering practice, I to the intelligent measurement control instrument principle and design ", "the MCS-51 series single chip computer and its application" course knowledge as the foundation, the design the simple calculator. This system to MCS-51 of the 8051 series single chip microcomputer as the core, can realize the connection arithmetic. The system through the test matrix keyboard scan, judge whether key, the data transfer the numerical into digital tube dynamic display. This system mainly introduced the design that the following aspects of content: based on single chip microcomputer simple calculator basic functions, and the matrix keyboard and a digital tube dynamic display of the principle of a simple expatiated; introduced the design of the whole system, the whole process of the system are discussed, and its function module partition and the components for a detailed explanation; the functional modules of the system hardware and software of the implementation of the detailed design instructions. Key words: MCS-51;8051 single chip microcomputer;Calculator;Add, subtract, multiply and divide:

相关文档
最新文档