找回密碼
         注冊(cè)會(huì)員
        搜索附件  
        MCU資訊論壇 附件中心 單片機(jī)論壇 51單片機(jī)論壇 原理圖(電路圖).pdf

        原理圖(電路圖).pdf

         

        此程序?qū)е聰?shù)碼管亂碼 是溫度傳感器 8個(gè)陰極數(shù)碼管 如何改數(shù)值謝:

        #include<reg51.h>
        #define uchar unsigned char
        #define uint unsigned int
        sbit DQ=P3^7;//ds18b20與單片機(jī)連接口
        sbit RS=P2^6;
        sbit RW=P2^5;
        sbit EN=P2^7;
        uchar code str1[]={"temperature: "};
        uchar data disdata[5];
        uint tvalue;//溫度值
        uchar tflag;//溫度正負(fù)標(biāo)志
        /*************************lcd1602程序**************************/
        void delay1ms(uchar ms)//延時(shí)1毫秒(不夠精確的)
        {
        uchar i;
        uchar j;
        for(i=0;i<ms;i++)
        for(j=0;j<100;j++);
        }
        void wr_com(uchar com)//寫指令//
        {
        delay1ms(1);
        RS=0;
        RW=0;
        EN=0;
        P0=com;
        delay1ms(1);
        EN=1;
        delay1ms(1);
        EN=0;
        }

        void wr_dat(uchar dat)//寫數(shù)據(jù)//
        {
        delay1ms(1);
        RS=1;
        RW=0;
        EN=0;
        P0=dat;
        delay1ms(1);
        EN=1;
        delay1ms(1);
        EN=0;
        }

        void lcd_init()//初始化設(shè)置//
        {
        delay1ms(15);
        wr_com(0x38);
        delay1ms(5);
        wr_com(0x08);
        delay1ms(5);
        wr_com(0x01);
        delay1ms(5);
        wr_com(0x06);
        delay1ms(5);
        wr_com(0x0c);
        delay1ms(5);
        }

        void display(uchar *p)//顯示//
        {
        while(*p!='\0')
        {
        wr_dat(*p);
        p++;
        delay1ms(1);
        }
        }
        void init_play()//初始化顯示
        {
        lcd_init();
        wr_com(0x80);
        display(str1);

        }
        /******************************ds1820程序***************************************/
        void delay_18B20(uint i)//延時(shí)1微秒
        {
        while(i--);
        }
        void ds1820rst()/*ds1820復(fù)位*/
        {
        uchar x=0;
        DQ = 1;//DQ復(fù)位
        delay_18B20(4); //延時(shí)
        DQ = 0;//DQ拉低
        delay_18B20(100); //精確延時(shí)大于480us
        DQ = 1;//拉高
        delay_18B20(40);
        }
        /****************************************************
        18b20讀數(shù)據(jù)
        *****************************************************/
        uchar ds1820rd()/*讀數(shù)據(jù)*/
        {
        uchar i = 0;
        uchar dat = 0;
        for (i=8 ; i>0 ; i--)
        {
        DQ = 0; //給脈沖信號(hào)
        dat>>=1;
        DQ = 1; //給脈沖信號(hào)
        if(DQ)
        dat|=0x80;
        delay_18B20(10);
        }
        return(dat);
        }
        /**************************************************
        18b20寫數(shù)據(jù)
        **************************************************/
        void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/
        {
        uchar i = 0;
        for (i=8; i>0; i--)
        {
        DQ = 0;
        DQ = wdata&0x01;
        delay_18B20(10);
        DQ = 1;
        wdata>>=1;
        }
        }
        /*****************************************************
        讀溫度并轉(zhuǎn)換
        ******************************************************/
        uint read_temp()/*讀取溫度值并轉(zhuǎn)換*/
        {
        uchar a,b;
        ds1820rst();
        ds1820wr(0xcc);//*跳過讀序列號(hào)*/
        ds1820wr(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/
        ds1820rst();
        ds1820wr(0xcc);//*跳過讀序列號(hào)*/
        ds1820wr(0xbe);//*讀取溫度*/
        a=ds1820rd();
        b=ds1820rd();
        tvalue=b;
        tvalue<<=8;
        tvalue=tvalue|a;
        if(tvalue<0x0fff)
        tflag=0;
        else
        {
        tvalue=~tvalue+1;
        tflag=1;
        }
        tvalue=tvalue*(0.625);//溫度值擴(kuò)大10倍,精確到1位小數(shù)
        return(tvalue);
        }
        /*******************************************************************
        顯示溫度
        ********************************************************************/
        void ds1820disp()//溫度值顯示
        {
        uchar flagdat;
        disdata[0]=tvalue/1000; //百位數(shù)
        disdata[1]=tvalue%1000/100;//十位數(shù)
        disdata[2]=tvalue%100/10;//個(gè)位數(shù)
        disdata[3]=tvalue%10;//小數(shù)位
        if(tflag==0)
        flagdat=0x20;//正溫度不顯示符號(hào)
        else
        flagdat=0x2d;//負(fù)溫度顯示負(fù)號(hào):-
        if(disdata[0]==0x30)
        {
        disdata[0]=0x20;//如果百位為0,不顯示
        if(disdata[1]==0x30)
        {
        disdata[1]=0x20;//如果百位為0,十位為0也不顯示
        }
        }
        wr_com(0xfe);
        wr_dat(flagdat);//顯示符號(hào)位
        wr_com(0xfd);
        wr_dat(disdata[0]);//顯示百位
        wr_com(0xfb);
        wr_dat(disdata[1]);//顯示十位
        wr_com(0xf7);
        wr_dat(disdata[2]);//顯示個(gè)位
        wr_com(0xef);
        wr_dat(0x2e);//顯示小數(shù)點(diǎn)
        wr_com(0xdf);
        wr_dat(disdata[3]);//顯示小數(shù)位
        }
        /********************主程序***********************************/
        void main()
        {
        init_play();//初始化顯示
        while(1)
        {
        read_temp();//讀取溫度
        ds1820disp();//顯示
        }

        QQ|手機(jī)版|MCU資訊論壇 ( 京ICP備18035221號(hào)-2 )|網(wǎng)站地圖

        GMT+8, 2025-5-5 07:10 , Processed in 0.046014 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2025 Discuz! Team.

        返回頂部
        无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品 | 99久久国产主播综合精品 | 黄页免费视频播放在线播放| 亚洲国产另类久久久精品黑人| 国产乱人伦偷精品视频免下载| 中文字幕精品一区二区日本| 欧美日韩在线精品一区二区三区激情综合 | 亚洲日韩国产精品乱| 国精无码欧精品亚洲一区| 99久久精品免费看国产| 老司机午夜精品视频你懂的| 久久国产精品99久久久久久老狼| 久草视频精品在线| 久久66热人妻偷产精品9| 国产精品国产三级国产潘金莲 | 精品国产福利久久久| 日韩AV毛片精品久久久| 久久香蕉超碰97国产精品| 国产精品国产欧美综合一区| 亚洲欧美激情精品一区二区| 热99re久久国超精品首页| 欧美日韩综合精品| 99热精品在线| 亚洲欧美日韩精品专区| 国产精品久久久福利| 日韩精品无码久久一区二区三| 久久精品人成免费| 久久久久99精品成人片三人毛片 | 国产精品嫩草影院一二三区| 亚洲精品乱码久久久久66| 国产成人精品免费大全| 无码精品人妻一区二区三区人妻斩 | 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久久精品国产Sm最大网站| 精品国产三级a∨在线欧美| 精品精品国产国产| 99精品国产在热久久| 亚洲福利精品电影在线观看| 国产精品视频久久久| 日本精品一区二区三区在线播放| 中文字幕亚洲精品资源网|