找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2652|回復: 3
收起左側(cè)

51單片機proteus仿真 保存已行駛的里程并顯示 如何修改程序

[復制鏈接]
ID:1007713 發(fā)表于 2022-3-3 17:40 | 顯示全部樓層 |閱讀模式
300黑幣
這個圖如何使得出租車停止行駛時,保存已行駛的里程和費用并顯示。對應程序怎么改?
11111.png

#include<reg51.h>#define uchar unsigned char
#define  uint unsigned int
sbit        RESET                =        P3^7;
int        Price =        100, Mile =        0;
uchar        count =        0;
uchar code tab_d[10] = {0x3F,        0X06,        0X5B,        0X4F,        0X66,        0X6D,        0X7D,        0X07,        0X7F,        0X6F};
uchar code tab_wei[8] = {0x7f,        0xbf,        0xdf,        0xef,        0xf7,        0xfb,        0xfd,        0xfe};
void        delay(uint t)
{
        uchar        i=0;
        while(t--)
                for        (i;        i<120;i++);
}


void        display(uchar d,uchar x,uchar w)
{
        P2        =        0XFF;
        P2        =        tab_wei[w];
        P0        =        0;
        P0        =        tab_d[d] | x;
        delay        (100);
}


void        refresh()
{
        display(0,0,0);
        display(Mile%10,0,1);
        display(Mile/10%10,0x80,2);      
        if        (Mile>= 100)               
                        display(Mile/100%10,0,3);               
        if        (Mile >= 1000)               
                        display(Mile/1000%10,0,4);      
        display(Price%10,0,5);
        display(Price/10%10,0x80,6);      
        if        (Price>= 100)
                display(Price/100%10,0,7);
        if        (Price>=1000)
                display(Price/1000%10,0,8);
}
void timer1        ()        interrupt 1
{
        count++;
        Mile +=        1;
        if(        count==10)
        {
                count=0;
                if        (Mile>=30&&Mile<160)
                                Price +=16;
                if        (Mile>=160)
                                Price +=18;
                }
}
void init()
{
        P0                        =        0;
        P2                        =        0XFF;
        TMOD                =        0X0E;   
        IT0                        =        1;                        
        TH0                        =        255;      
        TL0                        =        255;
        TR0                        =        1;
        IE                        =        0X82;
}


void        judgeReset()
{
        if(RESET ==        0)
        {
                Price =        100;
                Mile = 0;
        }
}
void        main()
{
                init        ();               
                while        (1)
                {
                        judgeReset        ();
                        refresh                        ();
                        }                       
}

最佳答案

查看完整內(nèi)容

如果你的脈沖是根據(jù)從出租車獲取的脈沖數(shù),比如說輪子轉(zhuǎn)一圈,給一個脈沖這樣的話,程序沒有什么問題,在出租車停下來的時候,沒有脈沖信號,顯示也就停在那了,如果你要在proteus中這么做的話,需要在脈沖和單片機之間加一個按鍵
回復

使用道具 舉報

ID:251390 發(fā)表于 2022-3-3 17:41 | 顯示全部樓層
如果你的脈沖是根據(jù)從出租車獲取的脈沖數(shù),比如說輪子轉(zhuǎn)一圈,給一個脈沖這樣的話,程序沒有什么問題,在出租車停下來的時候,沒有脈沖信號,顯示也就停在那了,如果你要在proteus中這么做的話,需要在脈沖和單片機之間加一個按鍵
回復

使用道具 舉報

ID:123289 發(fā)表于 2022-3-4 11:43 | 顯示全部樓層
寫程序總有一個目的吧。
修改程序也有一樣,請問修改要達成什么目的呢?
回復

使用道具 舉報

ID:68800 發(fā)表于 2022-3-4 16:16 | 顯示全部樓層
你這個應該是增加一個脈沖信號開關模擬停車狀態(tài),然后程序增加延時判斷程序一定時間內(nèi)沒有脈沖信號即把數(shù)據(jù)寫入存儲內(nèi)

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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