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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機出租車計費系統Proteus仿真代碼

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /**************************************  

  2.    計價規則:

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


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

  26. void LED(uint d1,uint d2)  
  27. {
  28.         if(d1==1)  P0=(P0|0xf0)&0x1f;
  29.         if(d1==2)  P0=(P0|0xf0)&0x2f;
  30.         if(d1==3)  P0=(P0|0xf0)&0x4f;
  31.         if(d1==4)  P0=(P0|0xf0)&0x8f;
  32.         P0=P0|0x0f;
  33.         P1=Seg[d2];
  34. }
  35. int keyscan()     //鍵盤掃描函數
  36. {
  37.   int t=0;
  38.   if(p00==0) { t=1; jps=1;}
  39.   if(p01==0) { t=1; jps=2;}
  40.   if(p02==0) { t=1; jps=3;}
  41.   return(t);       
  42. }
  43. void money()    //價錢計算
  44. {
  45.   count_10ms++;
  46.   if(count_10ms==100)
  47.      {count_10ms=0;second++;}
  48.   if(second<=3) cost=8.0;
  49.         else if(second>3) cost=8.0+1.0*(second-3);
  50. }
  51. void ledshow()
  52. {   
  53.         while(j%2==0)         //  價錢顯示
  54.                 {
  55.                          LED(1,(int) (cost/10) );
  56.                         delay(5);
  57.                         LED(2,(int) cost%10 );
  58.                         delay(5);
  59.                          LED(3,(int) (cost*10)%10 );
  60.                         delay(5);
  61.                          LED(4,(int) (cost*100)%10 );
  62.                         delay(5);
  63.                          LED(2,11);
  64.                          delay(5);
  65.                 }
  66.        
  67.         while(j%2==1)         //    時間顯示   
  68.        {
  69.                         LED(1,second/10);
  70.                         delay(5);
  71.                         LED(2,second%10);
  72.                        delay(5);
  73.                         LED(3,count_10ms/10);
  74.                        delay(5);
  75.                         LED(4,count_10ms%10);
  76.                        delay(5);
  77.                         LED(2,11);
  78.                        delay(5);               
  79.            }
  80.                        
  81. }
  82. void Time_fun() interrupt 1    //10ms中斷函數
  83. {
  84.   uint k;
  85.   if(k==15) { k=0; p37=1; }
  86.     else k++;
  87.   TH0=(0xffff-10000)/256;  //10ms
  88.   TL0=(0xffff-10000)%256;  //10ms
  89.   
  90.   if(i%2==1) money();        //   暫停/播放  
  91.   if((ks==1)&&(keyscan()==1)&&(key_do==0))
  92.          {                                                 
  93.                 k=0;
  94.                 p37=0;   //按鍵提示音
  95.                 key_do=1;
  96.                 if(jps==1) i++;  //   暫停/播放鍵
  97.                 if(jps==2) j++; //    時間價錢顯示轉換
  98.                 if(jps==3)  //   清零鍵
  99.                         {
  100.                           count_10ms=0;
  101.                           second=0;
  102.                           cost=0;
  103.                         }
  104.          }       
  105.   ks=keyscan();
  106.   if(ks==0)  key_do=0;

  107. }

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

  115.         while(1)
  116.     {
  117.                 ledshow();

  118.     }
  119. }
復制代碼

所有資料51hei提供下載:
仿真.rar (48.35 KB, 下載次數: 35)


評分

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

查看全部評分

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

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