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

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

QQ登錄

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

搜索
查看: 3164|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

大佬幫忙看看怎么改計(jì)算器單片機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
1黑幣
       在網(wǎng)上找的程序,有一個(gè)地方不是很明白,改了半天一直出錯(cuò),求大佬們幫幫忙,晚上做夢(mèng)都在想。。程序上我會(huì)標(biāo)出不明白的地方希望有大佬解答。一共有兩個(gè)問(wèn)題,紅色部分標(biāo)出了,還有一個(gè)用大號(hào)字體說(shuō)明了。

單片機(jī)源程序如下:
#include  <reg51.h>        //頭文件
#include<math.h>
#define uchar unsigned char                                                                                           //宏定義
#define uint unsigned int
sbit STAR=P2^4;
sbit EOC=P2^6;
sbit CLOCK=P2^5;
sbit OE=P2^7;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
uchar getdata;
double change;
long int temp;        
uchar code table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
                                                    0x6F,0X77,0x40};//0-9,-,無(wú)小數(shù)點(diǎn)
uchar code table2[]={0xbF,0x86,0xdB,0xcF,0xe6,0xeD,0xfD,0x87,0x7fF,
                                                    0xeF};//0-9,小數(shù)點(diǎn)
uchar dispbuf[6];

/****************************************************************************************/
//延時(shí)函數(shù):帶有入口參數(shù)m,代表ms毫秒
//
/****************************************************************************************/
void delay_ms(uchar m)
{
        unsigned int i,j;
        for(i=0;i<m;i++)
        {
                for(j=0;j<123;j++)
                {;}
        }
}
/****************************************************************************************/
//
//數(shù)碼管顯示程序
/****************************************************************************************/
void display()
{
        P0=table1[dispbuf[3]];//顯示百位
        P20=0;
        P21=1;
        P22=1;
        P23=1;

        delay_ms(8);
        P0=0X00;
        P0=table1[dispbuf[2]];//顯示十位
        P20=1;
        P21=0;
        P22=1;
        P23=1;
        delay_ms(8);
        P0=0X00;
        P0=table2[dispbuf[1]];//顯示個(gè)位
        P20=1;
        P21=1;
        P22=0;
        P23=1;
        delay_ms(8);
        P0=0X00;
        P0=table1[dispbuf[0]];//顯示小數(shù)位
        P20=1;
        P21=1;
        P22=1;
        P23=0;
        delay_ms(8);
        P0=0X00;
}
/****************************************************************************************/
//
//計(jì)算溫度
/****************************************************************************************/
void PT100()                                                        
{
double deal,U;//
        U=5.0/255.0*getdata;                                                      紅色部分不是很明白其中的意思
        deal=U*20*10;
        temp=(long int)deal;                                       
        if(U<5.2&&U>0)

        {   
    dispbuf[0]=temp%10;
                dispbuf[1]=temp/10%10;
                dispbuf[2]=temp/100%10;
                dispbuf[3]=temp/1000;        
        }
        else
{
                 
                 dispbuf[0]=temp%10;
                dispbuf[1]=temp/10%10;
                dispbuf[2]=temp/100%10;
                dispbuf[3]=11;
         
          /*dispbuf[0]=0;
                dispbuf[1]=0;
                dispbuf[2]=0;
                dispbuf[3]=0;*/        
         
  }
               
display();
}

/****************************************************************************************/
//
//
/****************************************************************************************/
main()
{
        TMOD = 0x10;                                        //定時(shí)器0,工作在定時(shí)器方式
        TH1        = (65536-200)/256;                //0x3c
        TL1 = (65536-200)%256;                //0xb0
        EA = 1;                                                        //開(kāi)總中斷
        ET1 = 1;                                                //打開(kāi)(允許)定時(shí)器1中斷
        TR1 =1;                                                        //開(kāi)始(啟動(dòng))定時(shí)
  while(1)
        {
          STAR=0;
                OE=0;
                STAR=1;
                STAR=0;
                while(EOC==0)
                {
                  OE=1;
                        delay_ms(10);
                        getdata=P1;
                        OE=0;
                        PT100();                        
                }
        }
}
/****************************************************************************************/
//
//
/****************************************************************************************/
void t1(void) interrupt 3        using 0 //0:int0 1: t0 2: int1 3:t1 4:串行口
{
        TH1        = (65536-200)/256;                //0x3c
        TL1 = (65536-200)%256;                //0xb0
        CLOCK=~CLOCK;//給ADC0808一個(gè)時(shí)鐘脈沖(0.2ms)              
}


計(jì)算部分的程序麻煩大佬幫我改一下,值小于0之后,數(shù)碼管一直顯示-25.6,負(fù)數(shù)就一直不變。


大佬們幫我解答一下吧,我太難了。

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

使用道具 舉報(bào)

沙發(fā)
ID:827243 發(fā)表于 2021-5-13 12:45 | 只看該作者
U=5.0/255.0*getdata;  應(yīng)該是轉(zhuǎn)化getdata到 0-5的值 ,可能是電壓。不可能小于零,你小于零的數(shù)怎么來(lái)的?
deal=U*20*10; 就不清楚想干什么了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:909090 發(fā)表于 2021-5-13 13:57 | 只看該作者
本帖最后由 十青學(xué)狗 于 2021-5-13 13:58 編輯

C:\Users\86157\Desktop
回復(fù)

使用道具 舉報(bào)

地板
ID:909090 發(fā)表于 2021-5-13 14:03 | 只看該作者
daemondong 發(fā)表于 2021-5-13 12:45
U=5.0/255.0*getdata;  應(yīng)該是轉(zhuǎn)化getdata到 0-5的值 ,可能是電壓。不可能小于零,你小于零的數(shù)怎么來(lái)的? ...

大佬我是網(wǎng)上找的代碼,這塊就是不明白,我想改一下,改半天老出錯(cuò),我把電路圖貼下面回復(fù)了,能幫我看看這塊怎么改合適么。就是基于51單片機(jī)的PT100溫度仿真。
回復(fù)

使用道具 舉報(bào)

5#
ID:88256 發(fā)表于 2021-5-13 14:26 | 只看該作者
紅色的 if(U<5.2&&U>0)是判斷語(yǔ)句,表示當(dāng)U大于0并且U小于5.2時(shí)執(zhí)行:
{   
    dispbuf[0]=temp%10;
                dispbuf[1]=temp/10%10;
                dispbuf[2]=temp/100%10;
                dispbuf[3]=temp/1000;        
        }


如果U小于或者等于0,或者U大于、等于5.2,則執(zhí)行:


{
                 
                 dispbuf[0]=temp%10;
                dispbuf[1]=temp/10%10;
                dispbuf[2]=temp/100%10;
                dispbuf[3]=11;
         
          /*dispbuf[0]=0;
                dispbuf[1]=0;
                dispbuf[2]=0;
                dispbuf[3]=0;*/        
         
  }


所以,當(dāng)U不符合要求時(shí),dispbuf[3]=11;   顯示的當(dāng)然是一個(gè)負(fù)號(hào)
回復(fù)

使用道具 舉報(bào)

6#
ID:909090 發(fā)表于 2021-5-13 14:44 | 只看該作者
hhdsdy 發(fā)表于 2021-5-13 14:26
紅色的 if(U0)是判斷語(yǔ)句,表示當(dāng)U大于0并且U小于5.2時(shí)執(zhí)行:
{   
    dispbuf[0]=temp%10;

我那個(gè)PT100溫度小于0,只顯示-25.6,不管溫度是負(fù)多少,數(shù)碼管一直顯示-25.6不變
回復(fù)

使用道具 舉報(bào)

7#
ID:466730 發(fā)表于 2021-5-13 14:52 | 只看該作者
ADC0808應(yīng)該是AD轉(zhuǎn)換芯片吧,轉(zhuǎn)換的結(jié)果剛好對(duì)應(yīng)給P1口,賦值給getdata,然后紅色部分再把AD轉(zhuǎn)換為電壓,然后把電壓放大,最后應(yīng)該少了個(gè)放大后的電壓轉(zhuǎn)溫度的查表吧
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩福利 | 国产精品免费一区二区三区四区 | 黄色大片网站 | 午夜精品一区二区三区免费视频 | 欧美一级免费看 | 日韩成人高清在线 | 国产欧美一区二区三区在线看 | 亚洲天天 | 国产精品久久久久久久久久 | 国产福利免费视频 | 亚洲国产aⅴ精品一区二区 免费观看av | 中文字幕日韩欧美一区二区三区 | 综合久久av| 美女一级a毛片免费观看97 | 又爽又黄axxx片免费观看 | 国产成人一区二区三区 | 中文字幕免费 | 国产91亚洲精品一区二区三区 | 亚洲综合日韩精品欧美综合区 | av网站在线看| 日韩精品一区二区三区中文在线 | 91在线视频观看免费 | 精品国产网 | 日韩一区二区三区在线观看视频 | 国产视频在线观看一区二区三区 | 亚洲成人一区二区三区 | 在线一级片| 日韩欧美精品一区 | 国产一区二区欧美 | 成人国产精品视频 | 91文字幕巨乱亚洲香蕉 | 精品国产乱码久久久久久影片 | 国产免费福利小视频 | 中文字幕在线一区二区三区 | 久草视频在线播放 | 久久亚洲一区二区三区四区 | 日韩一区二区福利 | 日皮视频免费 | 91精品一区二区三区久久久久久 | 婷婷色婷婷 | av天天看 |