新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機18B20溫度與串口實驗

        51單片機18B20溫度與串口實驗

        作者: 時間:2016-11-30 來源:網絡 收藏
        有圖有真相






        溫度顯示在串口調速器上,此軟件可到http://www.51hei.com/mcudown/單片機開發實用工具軟件這一欄下載
        下面單片機部分的源代碼:

        本文引用地址:http://www.104case.com/article/201611/323877.htm
        //11.0592晶振
        #include
        #define uchar unsigned char
        #define uint unsigned int
        code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60}; //數碼管碼表
        code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //數碼管位選

        //sbit k8=P1^7; //按鍵發送溫度值
        sbit dec=P0^5; //小數點顯示位
        static uint count; //延時發送溫度值變量
        void delay(uint k)
        {
        while(k--);
        }
        void show_temp(uint k) //顯示溫度值函數
        {
        P0=seg[k/100];
        P2=tab[2];
        delay(30);
        P0=0xff;
        P2=0xff;
        P0=seg[k%100/10];
        dec=0; //顯示小數點
        P2=tab[1];
        delay(30);
        P0=0xff;
        P2=0xff;
        P0=seg[k%10];
        P2=tab[0];
        delay(30);
        P0=0xff;
        P2=0xff;
        }
        #include "18B20.h" //18B20庫函數
        uchar suf; //存放串口收到的數據
        uint temp; //輸出溫度值
        void serial_init() //串口初始化
        {
        TMOD|=0x20; //定時器設定自動重撞在模式
        TH1=TL1=0xfd; //9600波特率
        SM2=0; //無多機處理位
        SM1=1; // 8位可變波特率模式
        SM0=0;
        TR1=1; // 定時器1打開
        REN=1; //串口接收使能
        }
        void send_byte(uchar u) //發送一個字節函數
        {
        bit es;//保存先前ES狀態變量,這樣可以不干擾其他用戶用它是現在的狀態
        es=ES;
        ES=0; //暫時關閉串口中斷
        SBUF=u;//數據放入SBUF緩沖器等待發送完成
        while(TI==0); //等待發送完成
        TI=0;
        ES=es; //恢復先前狀態
        }
        void send_str(uchar *p)//發送一串字符函數
        {
        while(*p)
        {
        send_byte(*p);
        p++;
        }
        }
        void str_init() //串口中斷初始化
        {
        EA=1;
        ES=1;
        }
        void serial_event() interrupt 4 //串口中斷函數
        {
        if(RI==1)//在中斷里盡量只做需要的事情
        {
        suf=SBUF;
        RI=0;
        }
        else
        {
        ;
        }
        }
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 漠河县| 纳雍县| 东方市| 兰西县| 德阳市| 吉水县| 当雄县| 双江| 莱芜市| 门源| 馆陶县| 武平县| 突泉县| 通化县| 海林市| 滨海县| 饶阳县| 台东县| 嘉定区| 通化县| 元江| 封丘县| 五河县| 新乡县| 客服| 大城县| 祁连县| 丽水市| 永登县| 城固县| 鄂伦春自治旗| 尼木县| 石景山区| 东乡县| 高尔夫| 嘉兴市| 常熟市| 大田县| 横峰县| 临安市| 四子王旗|