亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: stc15單片機+1602+ds1302+18b20+串口源程序 [打印本頁]

作者: a1208082536    時間: 2020-11-4 20:44
標題: stc15單片機+1602+ds1302+18b20+串口源程序
使用15單片機+1602+ds1302+18b20+串口。因為是15沒有仿真圖圖,有pro的設計圖,可以看一下。引腳的連線在子程序里有。

制作出來的實物圖如下:


Proteus畫的電路圖:


單片機源程序如下:
  1. #include "STC15.h"
  2. #include "LCD1602.h"
  3. #include "ds18b20.h"
  4. #include "ds1302.h"
  5. #include "delay.h"

  6. u16 dispbuf[]={0,0,0,0};                //存放溫度值
  7. uchar CNCHAR[6] = "WenDu ";


  8. //函數(shù)聲明
  9. void temp_dis();       //溫度顯示
  10. void LcdDisplay();     //時間顯示
  11. void LCD1602xianshi();  //屏幕顯示
  12. void GPIO();            //端口
  13. void Delay200us();      //延時
  14. void UartInit();          //串口

  15. void main()       //主函數(shù)
  16. {
  17.         GPIO();           //串口初始化
  18.         LCD_init();      //屏幕初始化
  19.         UartInit();
  20.         LCD1602xianshi();   //屏幕顯示
  21.         while(1)
  22.         {
  23.                 temp_dis();             //顯示溫度
  24.                 Ds1302ReadTime();      //讀取時間
  25.                 Delay200us();
  26.                 LcdDisplay();          //顯示時間
  27.         }
  28. }


  29. //溫度顯示
  30. void temp_dis()
  31. {
  32.         u16 j;
  33.         u8 i;
  34.         j=ReadTemperature();
  35.         for(i=0; i<6; i++)
  36.         {
  37.                  SBUF = CNCHAR[i];//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  38.                 while (!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  39.                 TI = 0;
  40.         }
  41.         if(j<0)
  42.         {
  43.                 dispbuf[0]= j/100;                        //十位
  44.                 dispbuf[1]= j%100/10;                //個位
  45.                 dispbuf[2]= j%100%10;                //取溫度小數(shù)點1位
  46.                 LCD1602_char(2,3,'-');
  47.                 {SBUF='-';              //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  48.                 while(!TI);                                 
  49.                 TI=0;}        
  50.                 LCD1602_char(2,4,dispbuf[0]+'0');
  51.                 {SBUF = dispbuf[0]+'0';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  52.            while (!TI);                                 
  53.            TI = 0;}
  54.                 LCD1602_char(2,5,dispbuf[1]+'0');
  55.                  {SBUF = dispbuf[1]+'0'; //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  56.            while (!TI);                              
  57.            TI = 0;}
  58.                 LCD1602_char(2,6,'.');
  59.                 {SBUF='.';              //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  60.                 while(!TI);                                 
  61.                 TI=0;}
  62.                 LCD1602_char(2,7,dispbuf[2]+'0');
  63.                 {SBUF = dispbuf[2]+'0';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  64.            while (!TI);                                
  65.            TI = 0;}
  66.         }
  67.         else
  68.         {
  69.                 dispbuf[0]= j/100;                        //十位
  70.                 dispbuf[1]= j%100/10;                //個位
  71.                 dispbuf[2]= j%100%10;                //取溫度小數(shù)點1位
  72.                 LCD1602_char(2,3,'+');
  73.                 {SBUF='+';              //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  74.                 while(!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  75.                 TI=0;}
  76.                 LCD1602_char(2,4,dispbuf[0]+'0');
  77.                 {SBUF = dispbuf[0]+'0';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  78.            while (!TI);                                 
  79.            TI = 0;}
  80.                 LCD1602_char(2,5,dispbuf[1]+'0');
  81.                  {SBUF = dispbuf[1]+'0'; //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  82.            while (!TI);                              
  83.            TI = 0;}
  84.                 LCD1602_char(2,6,'.');
  85.                 {SBUF='.';              //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  86.                 while(!TI);                                 //等待發(fā)送數(shù)據(jù)完成
  87.                 TI=0;}
  88.                 LCD1602_char(2,7,dispbuf[2]+'0');
  89.                 {SBUF = dispbuf[2]+'0';//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  90.            while (!TI);                                
  91.            TI = 0;}
  92.         }
  93. }

  94. //時間顯示
  95. void LcdDisplay()
  96. {
  97.         LCD1602_char(1,3,'0'+TIME[6]/16);                        //年
  98.         LCD1602_char(1,4,'0'+(TIME[6]&0x0f));
  99.         LCD1602_char(1,5,'0'+TIME[4]/16);                        //月
  100.         LCD1602_char(1,6,'0'+(TIME[4]&0x0f));
  101.         LCD1602_char(1,7,'0'+TIME[3]/16);                        //日
  102.         LCD1602_char(1,8,'0'+(TIME[3]&0x0f));
  103.         
  104.         
  105.         LCD1602_char(1,10,'0'+TIME[2]/16);                                //時
  106.         LCD1602_char(1,11,'0'+(TIME[2]&0x0f));                                 
  107.         LCD1602_char(1,12,'0'+TIME[1]/16);                                //分
  108.         LCD1602_char(1,13,'0'+(TIME[1]&0x0f));        
  109.         LCD1602_char(1,15,'0'+TIME[0]/16);                                //秒
  110.         LCD1602_char(1,16,'0'+(TIME[0]&0x0f));
  111. }


  112. void LCD1602xianshi()      //1602屏幕顯示
  113. {
  114.         LCD1602_string(2,1,"Tm");  
  115.   LCD1602_string(1,1,"20");
  116.   LCD1602_char(1,9,'-');
  117.         LCD1602_char(1,14,':');
  118.         Ds1302Init();
  119. }

  120. void GPIO()                   //串口初始化
  121. {
  122.         P0M0=0X00;P0M1=0X00;
  123.         P2M0=0X00;P2M1=0X00;
  124.         P3M0=0X00;P3M1=0X00;
  125.         P4M0=0X00;P4M1=0X00;
  126.         P5M0=0X00;P5M1=0X00;        
  127. }

  128. void Delay200us()                //@11.0592MHz   軟件延時200微秒
  129. {
  130.         unsigned char i, j;

  131.         i = 3;
  132.         j = 35;
  133.         do
  134.         {
  135.                 while (--j);
  136.         } while (--i);
  137. }



  138. void UartInit(void)                //9600bps@11.0592MHz串口初始化
  139. {
  140.         PCON &= 0x7F;                //波特率不倍速
  141.         SCON = 0x50;                //8位數(shù)據(jù),可變波特率
  142.         AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
  143.         AUXR &= 0xFE;                //串口1選擇定時器1為波特率發(fā)生器
  144.         TMOD &= 0x0F;                //清除定時器1模式位
  145.         TMOD |= 0x20;                //設定定時器1為8位自動重裝方式
  146.         TL1 = 0xDC;                //設定定時初值
  147.         TH1 = 0xDC;                //設定定時器重裝值
  148.         ET1 = 0;                //禁止定時器1中斷
  149.         TR1 = 1;                //啟動定時器1
  150. }
復制代碼


1602 18b20 ds1302 串口.zip

141.08 KB, 下載次數(shù): 30, 下載積分: 黑幣 -5

電路設計圖.zip

16.44 KB, 下載次數(shù): 18, 下載積分: 黑幣 -5


作者: songxia8013    時間: 2020-11-5 07:21
STC15為什么沒有仿真圖呢?Proteus仿真里面有單片機STC15W4K32S4,8.9版本上可以用的!




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1