欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4013|回復: 1
打印 上一主題 下一主題
收起左側

基于51單片機設計的出租車計價器源程序+Proteus仿真圖文檔等資料

[復制鏈接]
跳轉到指定樓層
樓主
本設計的是一個基于單片機AT89C51的出租車自動計費設計,附有復位電路,時鐘電路,鍵盤電路等。復位電路是單片機的初始化操作,除了正常的初始化外,為擺脫困境,通過復位電路可以重新開始。時鐘電路采用12MHz的晶振,作為系統的時鐘源,具有較高的準確性。
在上電時四位共陽極74EG-MPX4-CA數碼管顯示最初的起步價,里程收費,汽車行駛時間,通過按鍵可以切換起步價,里程收費,汽車行駛時間。通過按鍵模擬出租車的運行,暫停,停止。在74EG-MPX4-CA液晶上可以顯示運行的時間,運行時暫停的時間,以及所用的費用。在這里主要是以AT89C51單片機為核心控制器,P3口接74EG-MPX4-CA液晶顯示模塊,P0口接按鍵的,通過按鍵輸入。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



計價規則:

  用時間模擬路程,前三秒以內8.00元,若超出3秒
每增加一秒,價格增加1元。用數碼管顯示價錢和
時間(用一個按鍵控制顯示時間或價錢)

單片機源代碼
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit p00=P0^0 ;
sbit p01=P0^1 ;
sbit p02=P0^2 ;
sbit p37=P3^7 ;
uint i,j;
uint code Seg[19]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x80};
//數碼管譯碼表:   { 0  , 1 , 2 , 3 , 4  ,5    6     7   8    9    0    . }       P}
uchar jps,ks,key_do;//鍵盤緩存,上次有按鍵按下標志位,按鍵已處理標志位
uint count_10ms=0,second=0;  
float cost;    //價錢
void delay(uint tt)  //延時函數
{
  uint i;
  for(;tt>0;tt--)
    for(i=0;i<200;i++);
}

void LED(uint d1,uint d2)  
{
        if(d1==1)  P0=(P0|0xf0)&0x1f;
        if(d1==2)  P0=(P0|0xf0)&0x2f;
        if(d1==3)  P0=(P0|0xf0)&0x4f;
        if(d1==4)  P0=(P0|0xf0)&0x8f;
        P0=P0|0x0f;
        P1=Seg[d2];
}
int keyscan()     //鍵盤掃描函數
{
  int t=0;
  if(p00==0) { t=1; jps=1;}
  if(p01==0) { t=1; jps=2;}
  if(p02==0) { t=1; jps=3;}
  return(t);      
}
void money()    //價錢計算
{
  count_10ms++;
  if(count_10ms==100)
     {count_10ms=0;second++;}
  if(second<=3) cost=8.0;
        else if(second>3) cost=8.0+1.0*(second-3);
}
void ledshow()
{   
        while(j%2==0)         //  價錢顯示
                {
                         LED(1,(int) (cost/10) );
                        delay(5);
                        LED(2,(int) cost%10 );
                        delay(5);
                         LED(3,(int) (cost*10)%10 );
                        delay(5);
                         LED(4,(int) (cost*100)%10 );
                        delay(5);
                         LED(2,11);
                         delay(5);
                }
      
        while(j%2==1)         //    時間顯示   
       {
                        LED(1,second/10);
                        delay(5);
                        LED(2,second%10);
                       delay(5);
                        LED(3,count_10ms/10);
                       delay(5);
                        LED(4,count_10ms%10);
                       delay(5);
                        LED(2,11);
                       delay(5);               
           }
                       
}
void Time_fun() interrupt 1    //10ms中斷函數
{
  uint k;
  if(k==15) { k=0; p37=1; }
    else k++;
  TH0=(0xffff-10000)/256;  //10ms
  TL0=(0xffff-10000)%256;  //10ms

  if(i%2==1) money();        //   暫停/播放  
  if((ks==1)&&(keyscan()==1)&&(key_do==0))
         {                                                
                k=0;
                p37=0;   //按鍵提示音
                key_do=1;
                if(jps==1) i++;  //   暫停/播放鍵
                if(jps==2) j++; //    時間價錢顯示轉換
                if(jps==3)  //   清零鍵
                        {
                          count_10ms=0;
                          second=0;
                          cost=0;
                        }
         }      
  ks=keyscan();
  if(ks==0)  key_do=0;

}

main()
{   
        TMOD=0x01;     //Time0為16計數器
        TH0=(0xffff-10000)/256;
        TL0=(0xffff-10000)%256;
        TR0=1;    //打開定時器
        IE=0x82;  //EA=1  ET0=1  打開中斷

        while(1)
    {
                ledshow();

    }
}



Keil代碼和Proteus8.8仿真word文檔下載: 出租車計價器.zip (546.1 KB, 下載次數: 71)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:1062623 發表于 2023-2-12 14:42 | 只看該作者
您好,原件清單能列一下嗎
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表