×
单片机 > 单片机程序设计 > 详情

单片机出租车计价器电路原理图与源程序

发布时间:2021-01-21 发布时间:
|

电路原理图如下:

单片机源程序如下:


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

                      多功能出租车计价系统


补充说明:

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

#include                 //头文件

#include

#include

#include

#include

#include


/*****************灯、蜂鸣器、按键引脚定义*******************/

sbit led       =P3^0;         //红色LED灯

sbit led2      =P3^1;         //绿色LED灯


sbit key_start =P1^0;         //开始/结束计价

sbit key_Wait  =P1^1;         //电机开始/结束

sbit key_set   =P1^2;         //设置

sbit key_jia   =P1^3;         //加值

sbit key_jian  =P1^4;         //减值


/************************变量定义***********************/

uint start_price;             //起步价

uint white_price;        //白天单价

uint white_Wait;             //白天等待超10分钟后每分钟价钱。


bit start;                                                 //开始计价标志,=0非计价模式,=1计价模式

double price1;                                         //应收总价钱(带小数)

uint mil,Wait,price2;                 //里程数、等待时间、总价

uchar set_f;                                         //设置选择标记,=0未设置,=1设置起步价,=2设置白天公里价,=3设置时,=4设置分,=5设置秒


bit strat_f;                                         //初始界面显示标志,=0显示初始界面,=1可能计价、设置、总价显示

uchar num;                                                 //循环计数变量

bit moto_f=0;                    //电机控制标志,=0关闭电机,1打开电机


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

函数名称:void baojia()

函数作用:乘坐结束进行报价

参数说明:

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

void baojia()

{

        uint temp;

        SC_Speech(1);                           //先播放一次空的内容,防止语音混乱


        //以下里程播报

        SC_Speech(55);                           //播放【本次】

        SC_Speech(56);                           //播放【行程】


        if(mil>=1000)                           //里程【大于100KM】

        {

                SC_Speech(10+mil/1000);        //播放  里程的百位

                SC_Speech(21);                       //播放【百】

        }

        if(mil>=100)                           //里程【大于10KM】

        {

                if(mil%1000/100!=0)                   //如果  里程十位  不为0

                {

                        if(mil<1000&&mil%1000/100==1);//只有十几的时候不用报【一】

                        else

                                SC_Speech(10+mil%1000/100);//播放  里程的十位

                        SC_Speech(20);                   //播放【十】

                }

                else                                                   //否则  里程十位  为0

                {

                        if(mil%100/10!=0)                   //如果  里程个位  不为0

                                SC_Speech(10);               //播放【零】

                }

        }

        if(mil>=10)                                                   //里程【大于1KM】

        {

                if(mil%100/10!=0)                           //如果  里程个位  不为0

                        SC_Speech(10+mil%100/10);  //播放  里程的个位

        }

        else

                SC_Speech(10);                       //播放【零】


        if(mil%10!=0)                                           //如果  里程小数  不为0 

        {

                SC_Speech(24);                       //播放【点】

                SC_Speech(10+mil%10);          //播放  里程的小数位

        }

        SC_Speech(4);                           //播放【千米】


        

        //以下价格播报                                                           

        temp=price2/10;                                           

        SC_Speech(58);                           //播放【共计】


        if(temp>=1000)                                           //总价【大于100元】

        {

                SC_Speech(10+temp/1000);       //播放  总价的百位

                SC_Speech(21);                       //播放【百】

        }

        if(temp>=100)                                           //总价【大于10元】

        {

                if(temp%1000/100!=0)                   //如果  总价十位  不为0

                {

                        if(temp<1000&&temp%1000/100==1);//只有十几的时候不用报【一】

                        else

                                SC_Speech(10+temp%1000/100);//播放  总价的十位

SC_Speech(20);



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ATtiny13 复位与中断处理