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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助,根據at90s8515寫的溫度檢測,一直檢測出了的是-1.5,不知道哪里出了問題

[復制鏈接]
跳轉到指定樓層
樓主
程序如下,芯片頻率是12M
#include<90s8515.h>
#include<delay.h>

unsigned int temp;
unsigned char dis[4]={0,0,0,0};
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0xff,0xbf};//共陽極數顯管顯示0,1,2,3,4,5,6,7,8,9,不顯示,負號
unsigned char led1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//帶小數點顯示

unsigned char init(void)    //ds18b20初始化
{
  unsigned char flag;  
  DDRD=1;//端口設為輸出,發送低電平   
  delay_us(550);//延時550us
  DDRD=0;//端口設為輸入,釋放總線,等待ds18b20響應
  delay_us(68);//延時68us       
while(PIND);
while(!PIND);
if(PIND)
{flag=0;}
else
{flag=1;}       
  delay_us(500);       
  return flag;                                                                    
  }   

void  write(unsigned char dat)    //寫字節
{       
        unsigned char i=0;
        for(i=8;i>0;i--)
        {        
                 DDRD=1;//拉低總線
         delay_us(2);
         if(dat&1)
         {DDRD=1;}
         else
         {DDRD=0;}  
         dat>>=1;
         delay_us(60);//主機延時60us,等待ds18b20進行采樣
         DDRD=0;//釋放總線  
         //delay_us(2);
         }
}

unsigned char read(void)   //讀字節
{
        unsigned  char i=0;
        unsigned char dat=0;  
        for(i=8;i>0;i--)
        {         DDRD=1; //定義為輸出,拉低總線
        delay_us(1);
        DDRD=0;//定義為輸入,釋放總線
        delay_us(9);  
        dat>>=1;
        if(PIND)
                dat|=0x80; //按位或然后賦值給dat,讀取數據最高位為1
        delay_us(65);
                }       

                return(dat);
}


void Display(unsigned int temp)     //顯示函數
{
    if(temp<=0x0800)//進行溫度轉換
    {
    temp>>=4;//二進制轉換成十進制                                                
    temp*=10;
    dis[0]=temp/1000;
    dis[1]=temp%1000/100;
    dis[2]=temp%1000%100/10;
    dis[3]=temp%1000%100%10;
    }
    else
    {
     temp=~temp;
     temp+=1;
     temp>>=4;
     dis[0]=0x0c;
     dis[1]=temp%100/10;
     dis[2]=temp%100%10;
     dis[3]=0;
    }  
    DDRC=0X0F;
    DDRA=0XFF;

    PORTC=0x01;
    PORTA=led[dis[0]];
    delay_us(400);

    PORTC=0x02;
    PORTA=led1[dis[1]];
    delay_us(400);

    PORTC=0x04;
    PORTA=led[dis[2]];
    delay_us(400);

    PORTC=0x08;
    PORTA=led[dis[3]];
    delay_us(400);
}

void main()
{   
    unsigned char th,tl;
    while(1)
    {
    init();
    write(0xcc);//跳過ROM的操作
    write(0x44);//進行溫度變換
    delay_ms(10);     

    init();
    write(0xcc);//跳過ROM的操作
    write(0xbe);//發出讀取RAM的命令  

    th=read();
    tl=read();
     temp=th<<8;
     temp|=tl;
     Display(temp);
   }
}

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

使用道具 舉報

沙發
ID:382826 發表于 2018-10-19 12:09 | 只看該作者
temp=th<<8;會不會有問題呀!th是8位變量,左移8位后給temp會不會出錯,應該temp=th;temp=temp<<8;
回復

使用道具 舉報

板凳
ID:411631 發表于 2018-10-19 12:22 | 只看該作者
已經解決了
回復

使用道具 舉報

地板
ID:411631 發表于 2018-10-19 13:00 | 只看該作者
已經解決了,就是不知道為什么數顯管不顯示“-”號
回復

使用道具 舉報

5#
ID:199427 發表于 2018-11-7 13:02 | 只看該作者
樓主,請問你的問題是怎么解決的?
另外,懇求能不能上傳一份完整的程序,包括頭文件。
回復

使用道具 舉報

6#
ID:480718 發表于 2019-12-16 14:54 | 只看該作者
你是不是顯示程序沒寫對。。。我就經常數碼管程序寫錯細節,你仔細檢查一下啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕视频网 | 欧美一级片在线播放 | 九色 在线 | 国产精品日日摸夜夜添夜夜av | 视频一区二区在线观看 | h视频免费在线观看 | 超碰在线97国产 | 国产精品国产成人国产三级 | 久草99| 亚洲一区二区三区桃乃木香奈 | 免费一区 | 天堂一区二区三区 | 久久久久久亚洲 | 午夜成人免费视频 | 麻豆视频在线免费观看 | 影视一区| 日韩欧美中文 | 天天操天天干天天爽 | 久久久国产精品视频 | 国产成都精品91一区二区三 | 热99在线 | 激情免费视频 | 欧美一级久久 | 天堂va在线观看 | 国产成人精品午夜视频免费 | 四虎成人av | 亚洲一区电影 | 国产精品福利视频 | 久精品久久 | 免费黄色大片 | 久久蜜桃资源一区二区老牛 | 中文字幕日韩一区 | 国产精品一区久久久久 | 色天堂影院 | 日韩欧美一区二区在线播放 | 国产影音先锋 | 国产精久久久久久 | 国产日韩精品视频 | 国产精品一区二区久久精品爱微奶 | 欧美伊人久久久久久久久影院 | 国产69久久精品成人看动漫 |