找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2650|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机的出租车计价系统源代码

[复制链接]
跳转到指定楼层
楼主
ID:276997 发表于 2018-1-17 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>
void delay(unsigned int i);      //函数声名
//此表为 LED 的字模, 共阴数码管 0-9  -
Unsigned char code   Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //段码控制

//此表为8个数码管位选控制, 共阴数码管 1-8个  -
unsigned char code   dispbit[6]={0x20,0x10,0x08,0x04,0x02,0x01};    //位选控制   查表的方法控制
unsigned char xdata *p=0x8004;
unsigned char xdata *q=0x8002;
bit flag;
unsigned int i,LedNumVal=0;           //变量定义
unsigned int LedOut[6];
int r;
/************主函数**********************/
int main(void)
{
     flag=0;
    //定时器1初始化;使用定时器1
     TMOD=0X10;
     TH1=0X3C;
     TL1=0XB0;
    // 中断初始化;开放定时器1中断和外中断0、1
     EA=1;
     ET1=1;
     ET0=1;
     EX0=1;
     EX1=1;
     IT1=1;
     IT0=1;
     r=0;

loop:
     while(flag!=1)
   {
             LedOut[0]=Disp_Tab[LedNumVal/60/10];
             if(LedNumVal>=360||LedNumVal==0)
                 LedOut[1]=Disp_Tab[LedNumVal/60%10]|0x80;
             else
             LedOut[1]=Disp_Tab[(LedNumVal-240)/60%10]|0x80;
             LedOut[2]=Disp_Tab[LedNumVal%60/10];
             LedOut[3]=Disp_Tab[LedNumVal%60%10];
             LedOut[4]=Disp_Tab[1*LedNumVal/30/10];
             LedOut[5]=Disp_Tab[1*LedNumVal/30%10]|0x80;
             for( i=0; i<6; i++)
             {
         *p=LedOut[i];
               *q=dispbit[i];   //使用查表法进行位选
                delay(75);                 //扫描间隔时间        太长会数码管会有闪烁感
             }
             *q=0x00;
   }
     LedNumVal=240;
     while(flag!=0)
     {
             LedOut[0]=Disp_Tab[(LedNumVal-240)/60/10];
             LedOut[1]=Disp_Tab[(LedNumVal-240)/60%10]|0x80;
             LedOut[2]=Disp_Tab[(LedNumVal-240)%60/10];
             LedOut[3]=Disp_Tab[(LedNumVal-240)%60%10];
             if(LedNumVal<=360)
             {
                  LedOut[4]=Disp_Tab[1*240/30/10];
                  LedOut[5]=Disp_Tab[1*240/30%10]|0x80;
             }
             else
             {
                  LedOut[4]=Disp_Tab[(1*LedNumVal-120)/30/10];
                  LedOut[5]=Disp_Tab[(1*LedNumVal-120)/30%10]|0x80;
             }
             for( i=0; i<6; i++)
             {
               *p=LedOut[i];
               *q=dispbit[i];   //使用查表法进行位选
                delay(75);      //扫描间隔时间,太长会数码管会有闪烁感
             }
             *q=0x00;
     }
   goto loop;
   return 0;




/***************************************************************************                      延时处理
****************************************************************************/
void delay(unsigned int i)
{
    char j;
    for( ; i> 0; i--)
        for(j = 200; j > 0; j--);
}

/**************************************************************************
*                     定时器中断处理
****************************************************************************/
void timer1(void) interrupt 3
{
   ET1=0;
   if(r<10){r++;
               TH1=0X3C;
            TL1=0XB0;
            ET1=1;
           }
   else {
         r=0;
         LedNumVal++;
         TH1=0X3C;
         TL1=0XB0;
         ET1=1;
        }
}

/**************************************************************************
*                    外中断1中断处理
****************************************************************************/
void int1(void)  interrupt 2
{
        EX1=0;
        flag=0x0;
        EX1=1;
        TR1=0;
}
/**************************************************************************
*                      外中断0中断处理
****************************************************************************/
void int0(void)  interrupt 0
{
         EX0=0;
         flag=0x1;
         LedNumVal=0;
         TR1=1;
         EX0=1;
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:394163 发表于 2019-4-8 09:34 | 只看该作者
有没有电路图什么的
回复

使用道具 举报

板凳
ID:544514 发表于 2019-5-23 09:22 | 只看该作者
warning C294: unreachable code提示这个
代码return 0;错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表