久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1396|回復(fù): 0
收起左側(cè)

單片機(jī)出租車計(jì)價(jià)器程序

[復(fù)制鏈接]
ID:1013951 發(fā)表于 2023-11-13 12:38 | 顯示全部樓層 |閱讀模式
在本次設(shè)計(jì)中電路鍵盤(pán)用到了P1口,其中P1.0口到P1.3口作為鍵盤(pán)的輸入,顯示電路用到了P0口和P2口,P2口為液晶的數(shù)據(jù)口,P3.7口作為AD的輸入端。

單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include <LCD1602.h>
  3. #include "XPT2046.h"
  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. unsigned char Command,Speed;

  7. sbit key_start =P3^1;         //開(kāi)始/結(jié)束計(jì)價(jià)
  8. sbit key_wait  =P3^0;         //等待
  9. sbit key_set   =P1^2;         //設(shè)置

  10. sbit key_dn    =P3^2;   //控制白天晚上
  11. sbit key_fuwei =P3^3;  //復(fù)位

  12. /************************——變量定義***********************/
  13. uint start_price=70;                //起步價(jià)88
  14. uint white_price=18;         //白天的單價(jià)   超過(guò)3公里每公里6元66
  15. uint black_price=20;        //夜晚的單價(jià)   超過(guò)3公里每公里8元88
  16. uint Wait_price=100;                //等待價(jià)錢100
  17. bit dnc=0;                   //白天晚上的轉(zhuǎn)換標(biāo)志
  18. bit qiting;                 //起 停標(biāo)志位   
  19. uint price1,price2;                           //總價(jià)錢、等待價(jià)錢
  20. uint   mil;                //里程數(shù)

  21. uint mil2;               

  22. uchar shi,fen,miao;
  23. uchar  moshi,moshi2,ms,set_f;                                //模式mos=0初始界面,=1改價(jià)頁(yè)面,=2等待頁(yè)面           
  24.                                 //set_f設(shè)置標(biāo)志=1設(shè)置初始,=2設(shè)置等待價(jià),=3設(shè)置晚上單價(jià),=4設(shè)置白天單價(jià)


  25. void delay(uchar ms)        //延時(shí)函數(shù)
  26. {
  27.    uchar j;
  28.          while(ms--)
  29.          {
  30.           for(j=0;j<130;j++);
  31.          }
  32. }


  33. void key()        //按鍵函數(shù)
  34. {  
  35.                         if(key_dn==0)
  36.                                  {
  37.            delay(5);   //延時(shí)去抖
  38.                                          if(key_dn==0)
  39.                                           {
  40.              while(!key_dn);
  41.                                                  dnc=~dnc;                                                
  42.             }
  43.          }
  44.         if(key_start==0)
  45.                                  {
  46.            delay(5);
  47.                                          if(key_start==0)
  48.                                           {
  49.              while(!key_start);   //檢測(cè)按鍵是否松開(kāi)
  50.                                                  qiting=~qiting;      //起 停 轉(zhuǎn)換
  51.                                                  if(qiting==0)         
  52.                                                    {
  53.                 moshi=0;
  54.                }
  55.          
  56.                                                         TR0=qiting;          //定時(shí)器0打開(kāi)/關(guān)閉
  57.               set_f=0;                                                         
  58.             }
  59.          }
  60.                                  if(key_fuwei==0)          //復(fù)位
  61.                                  {
  62.            delay(5);
  63.                                          if(key_fuwei==0)
  64.                                           {
  65.              while(!key_fuwei);
  66.                                                  miao=0;fen=0;shi=0;
  67.                                                  price1=0;price2=0;        mil=0;moshi=0;
  68.             }
  69.          }
  70.                                 if(key_wait==0)
  71.                                 {
  72.                                  delay(5);
  73.                                  if(key_wait==0)
  74.                                  {
  75.                                   while(!key_wait);
  76.                                         miao=0;fen=0;shi=0;
  77.                                         moshi=2;
  78.                                  }
  79.                                 }        
  80.                                          
  81.                                 if(qiting==0)         //結(jié)束計(jì)價(jià)后才能設(shè)置
  82.                                 {                                       
  83.                                 if(key_set==0)
  84.                                  {
  85.            delay(5);
  86.                                          if(key_set==0)
  87.                                           {
  88.              while(!key_set);
  89.                                                  set_f++;
  90.                                                  moshi=1;
  91.              if(set_f==5){moshi=0;set_f=0;}                                                        
  92.             }
  93.          }
  94.         
  95.          
  96.          }
  97.                                }

  98. void xianshi()
  99.      {
  100.                          if(moshi!=moshi2)   
  101.                           {
  102.           lcd_wcmd(0x01);       //清顯示屏        
  103.                                         moshi2=moshi;
  104.         }                                 
  105.                          if(moshi==0)
  106.                          {        
  107.          lcd_wcmd(0x80);
  108.                          lcd_data('N');
  109.        lcd_data('J');        
  110.                          lcd_data(':');
  111.                          lcd_data(ASCII[black_price%1000/100]);
  112.                          lcd_data(ASCII[black_price%100/10]);
  113.                          lcd_data('.');
  114.                          lcd_data(ASCII[black_price%10]);

  115.                                  
  116. //       lcd_wcmd(0x80);
  117. //                         lcd_data('D');
  118. //       lcd_data('J');        
  119. //                         lcd_data(':');
  120. //                         lcd_data(ASCII[white_price%1000/100]);
  121. //                         lcd_data(ASCII[white_price%100/10]);
  122. //                         lcd_data('.');
  123. //                         lcd_data(ASCII[white_price%10]);
  124. //                         lcd_data('Y');
  125.                                  mil=XPT2046_ReadAD(XPT2046_XP);
  126.                          lcd_data('G');
  127.                          lcd_data(':');  
  128.                          lcd_data(ASCII[mil%1000/100]);
  129.                          lcd_data(ASCII[mil%100/10]);
  130.                          lcd_data('.');
  131.                          lcd_data(ASCII[mil%10]);
  132.                          lcd_data('K');
  133.                          lcd_data('M');         
  134.                          lcd_wcmd(0x80+0x40);
  135.                          lcd_data('D');
  136.        lcd_data('J');        
  137.                          lcd_data(':');
  138.                          lcd_data(ASCII[white_price%1000/100]);
  139.                          lcd_data(ASCII[white_price%100/10]);
  140.                          lcd_data('.');
  141.                          lcd_data(ASCII[white_price%10]);
  142.                          lcd_data('Y');
  143.                          lcd_data('Y');
  144.        lcd_data('Q');        
  145.                          lcd_data(':');
  146.                          lcd_data(ASCII[price1%1000/100]);
  147.                          lcd_data(ASCII[price1%100/10]);
  148.                          lcd_data('.');
  149.                          lcd_data(ASCII[price1%10]);
  150.                          lcd_data('O');
  151.                          lcd_data('Y');
  152.                          }
  153.                         if(moshi==1)       //改價(jià)頁(yè)面
  154.                          {                                 
  155.        lcd_wcmd(0x80);
  156.                          lcd_data('S');
  157.        lcd_data('J');        
  158.                          lcd_data(ASCII[start_price%1000/100]);
  159.                          lcd_data(ASCII[start_price%100/10]);
  160.                          lcd_data('.');
  161.                          lcd_data(ASCII[start_price%10]);
  162.                          lcd_data('Y');
  163.                          lcd_data(' ');  
  164.                          lcd_data('P');
  165.                          lcd_data('T');

  166.                          lcd_data(ASCII[Wait_price%1000/100]);
  167.                          lcd_data(ASCII[Wait_price%100/10]);
  168.                          lcd_data('.');
  169.                          lcd_data(ASCII[Wait_price%10]);
  170.                          lcd_data('Y');
  171.                           
  172.                          lcd_wcmd(0x80+0x40);
  173.                          lcd_data('N');
  174.        lcd_data('J');        
  175.                          lcd_data(ASCII[black_price%1000/100]);
  176.                          lcd_data(ASCII[black_price%100/10]);
  177.                          lcd_data('.');
  178.                          lcd_data(ASCII[black_price%10]);
  179.                          lcd_data('Y');
  180.        lcd_data(' ');        
  181.              lcd_data('D');
  182.        lcd_data('J');        
  183.                          lcd_data(ASCII[white_price%1000/100]);
  184.                          lcd_data(ASCII[white_price%100/10]);
  185.                          lcd_data('.');
  186.                          lcd_data(ASCII[white_price%10]);
  187.                          lcd_data('Y');
  188.                          }
  189.                          if(moshi==2)       //等待頁(yè)面
  190.                           {
  191.                                 
  192.         lcd_wcmd(0x80);
  193.                          lcd_data('W');
  194.        lcd_data('a');        
  195.                          lcd_data('i');
  196.                          lcd_data('t');        
  197.                          lcd_data(':');
  198.                          lcd_data(' ');
  199.                          lcd_data(' ');
  200.         
  201.                          lcd_data(ASCII[shi%100/10]);
  202.                          lcd_data(ASCII[shi%10]);
  203.                          lcd_data(':');
  204.                          lcd_data(ASCII[fen%100/10]);
  205.                          lcd_data(ASCII[fen%10]);
  206.                          lcd_data(':');
  207.                          lcd_data(ASCII[miao%100/10]);
  208.                          lcd_data(ASCII[miao%10]);
  209.                
  210.          
  211.                          lcd_wcmd(0x80+0x40);
  212.                          lcd_data('D');
  213.        lcd_data('D');        
  214.                          lcd_data('M');
  215.                          lcd_data(':');
  216. //                         lcd_data(ASCII[(white_price/2)%100/10]);
  217.                          lcd_data(ASCII[price2%1000/100]);
  218.                          lcd_data(ASCII[price2%100/10]);
  219.                          lcd_data('.');
  220.                          lcd_data(ASCII[price2%10]);
  221.                          //lcd_data(ASCII[(white_price/2)%10]);
  222.                          lcd_data(' ');
  223.                          lcd_data('Y');
  224.         }  
  225.      }
  226.                  
  227. void jiaqianjisuan()         //計(jì)算價(jià)錢
  228.       {
  229.                                 if(dnc==0)   //白天價(jià)錢
  230.                                 {        
  231.                                 if(mil>25)
  232.                                  {        
  233.           price1=(white_price*(((mil-25)/10)+1));
  234.                                   price1=price1+start_price+price2;        
  235.                                  }
  236.                                 else
  237.                                  price1=start_price+price2;        
  238.                          }        
  239.        else         //晚上價(jià)錢
  240.                          {
  241.          if(mil>25)
  242.                                  {        
  243.           price1=(black_price*(((mil-25)/10)+1));
  244.                                   price1=price1+start_price+price2;        
  245.                                  }
  246.                                 else
  247.                                  price1=start_price+price2;        
  248.        }        
  249.                         
  250.              }                 

  251. void T0_init()                   //定時(shí)器0初始化
  252.                   {
  253.                 EA=1;                  //開(kāi)總中斷
  254.                 ET0=1;                 //定時(shí)器T0中斷允許         
  255.                 TMOD=0x01;             //使用定時(shí)器T0的模式1
  256.                                         TH0=(65536-50000)/256; //定時(shí)器T0的高8位賦初值
  257.                                         TL0=(65536-50000)%256; //定時(shí)器T0的低8位賦初值
  258.                                         TR0=0;                                         //關(guān)閉定時(shí)器0
  259.                                   EX0=1;                 //外部中斷0允許位
  260.                                   IT0=1;                 //下降沿觸發(fā)外部中斷
  261.       }
  262.                  
  263. void main()
  264. {
  265.         
  266.         lcd_init();           //LCD1602初始化
  267.         T0_init();           //定時(shí)器0初始化
  268. while(1)                                                         //死循環(huán)
  269.         {
  270.         
  271.                   jiaqianjisuan();
  272.                    key();                        //按鍵檢測(cè)處理
  273.             xianshi();
  274.                  
  275.   }
  276. }

  277. void timer0() interrupt 1                  //定時(shí)器0中斷函數(shù)
  278.    {
  279.      TH0=(65536-50000)/256;
  280.      TL0=(65536-50000)%256;                //定50ms
  281.      ms++;
  282.      if(ms>=20)
  283.            {
  284.             ms=0;
  285.             miao++;
  286.                   if(moshi==0)
  287.                   {
  288.             if(miao>=3)
  289.                    {
  290.         moshi=2;
  291.                                 miao=0;
  292.              }
  293.                    }
  294.             if(moshi==2)
  295.                          {
  296.          if(miao>=60)
  297.                                   {
  298.            miao=0;
  299.                                                 fen++;
  300.                                                 if(fen>=60)
  301.                                                 {
  302.               fen=0;
  303.                                                         shi++;
  304.             }
  305.                                                 if(moshi==2){if(fen>=1)price2=fen*50; }
  306.            }
  307.        }
  308.            }
  309.    }


  310. void inn0() interrupt 0         //外部中斷0中斷子函數(shù)           
  311.    {
  312.                 if(qiting==1)
  313.     {                        
  314.                 mil2++;
  315.                 if(moshi==2) moshi=0;
  316.                 if(moshi==0) miao=0;
  317.     if(mil2==10)        
  318.     {
  319.      mil2=0;                        
  320.      mil++;
  321.                 }
  322.           }
  323.    }
復(fù)制代碼

原理圖: 無(wú)
仿真: 無(wú)
代碼: 程序.7z (728.2 KB, 下載次數(shù): 4)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二 | 看毛片的网站 | 精品国产乱码久久久久久影片 | 国产一区二区电影网 | 国产精品美女久久久久aⅴ国产馆 | 99r在线 | 一区二区三区视频在线免费观看 | 成年人黄色一级毛片 | 国产亚洲精品一区二区三区 | 精品国产一区二区在线 | 天堂va在线 | 国产ts人妖系列高潮 | 美女爽到呻吟久久久久 | 欧美一区二区三区日韩 | 国产日韩一区二区三免费高清 | 欧美成人一区二区三区 | 日韩欧美网 | 欧美精品在线播放 | japanhd美女动 | 国产成人一区二区三区久久久 | 国产做a爱免费视频 | 天堂中文字幕av | 亚洲欧美一区二区三区1000 | 国产精品久久久久久久久久 | 丁香五月网久久综合 | a在线免费观看视频 | 免费黄色的视频 | 久久久91精品国产一区二区三区 | 久久99深爱久久99精品 | 国产精彩视频 | 一区在线视频 | 蜜桃传媒一区二区 | 欧美一区2区三区4区公司 | 亚洲国产一区二区三区在线观看 | 欧美一级免费看 | 日韩天堂av| 欧美寡妇偷汉性猛交 | 国产一区二区久久 | 一级二级三级黄色 | 2020国产在线| 九九亚洲精品 |