找回密碼
         注冊(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.

        返回頂部
        中文字幕在线永久在线视频2020| 欧美日韩人妻精品一区二区在线 | 91大神精品全国在线观看| 91精品免费久久久久久久久| 精品亚洲一区二区三区在线观看 | 精品国产一区二区三区不卡| 欧美日韩精品一区二区三区| 日韩美女18网站久久精品| 少妇人妻无码精品视频| 欧美精品免费观看二区| 亚洲欧美精品丝袜一区二区| 久久精品亚洲日本波多野结衣 | 中文精品人人永久免费| 国精品无码一区二区三区在线| 99热精品毛片全部国产无缓冲| 无夜精品久久久久久| 国产精品久久久久久吹潮| 国产成人高清精品免费观看| 亚洲国产综合精品中文字幕 | 国产精品午夜免费观看网站| 女人精水喷出来视频免费| 国产91精品一区二区麻豆网站| 久久久久亚洲精品中文字幕| 久久夜色精品国产噜噜亚洲AV| 国产精品 日韩欧美| 一本一本久久aa综合精品| 亚洲精品自产拍在线观看动漫| 亚洲精品成人a在线观看| 国产精品成人观看视频国产奇米 | 久久精品国产亚洲AV无码偷窥| 国产精品性爱| 亚洲AV无码久久精品蜜桃| 北岛玲日韩精品一区二区三区| 亚洲欧美日韩久久精品第一区| 99国产精品国产免费观看| 亚洲精品无码久久久影院相关影片| 亚洲国产精品婷婷久久| 无遮挡很爽很污很黄的网站w| 思思99热在线观看精品| 2020先锋影音中文字幕5566| 91久久精品国产免费直播|