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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4371|回復: 6
打印 上一主題 下一主題
收起左側

二手STC15F104E單片機溫度器升級

[復制鏈接]
跳轉到指定樓層
樓主
某寶淘了個單片機溫度計,沒顯示,沒代碼,沒參數,沒有圖,除了便宜,再沒優點,幾乎就殼子能用,老板按殼子價出的。自用手電透光法畫出了單片機定意圖,弄了兩程序,成功驅動。

電路原理圖如下:



  1. #include "STC15.H"
  2. #include "codetab_Hygrothermograph.h"//OLED字庫
  3. #include "OLED_Hygrothermograph.h"//OLED基本驅動函數

  4. void OLED_FormName(unsigned char x, y)//在指定位置顯示HFont字符組
  5. {
  6.         unsigned char i=0,j=0;
  7.         for(j=0;j<17;j++)
  8.         {
  9.                 OLED_Set_Pos(x,y);
  10.                 for(i=0;i<6;i++)
  11.                 OLED_WrDat(HFont[i+j*6]);
  12.                 x+=6;
  13.         }
  14. }

  15. void OLED_FormLine(unsigned char x, y)//在指定位置顯示HFont字符組
  16. {
  17.         unsigned char i=0,j=0;
  18.         for(j=0;j<18;j++)
  19.         {
  20.                 OLED_Set_Pos(x,y);
  21.                 for(i=0;i<6;i++)
  22.                 OLED_WrDat(LineFont[i]);
  23.                 x+=6;
  24.         }
  25. }

  26. void OLED_FormTitle(unsigned char x,y)//主標題
  27. {
  28.         unsigned char i=0,j=0;
  29.         for(j=0;j<13;j++)
  30.         {
  31.                 OLED_Set_Pos(x,y);

  32.                 for(i=0;i<8;i++)
  33.                 {
  34.                         OLED_WrDat(TitleFont[j*16+i]);
  35.                 }
  36.                 OLED_Set_Pos(x,y+1);
  37.                
  38.                 for(i=0;i<8;i++)
  39.                 {
  40.                         OLED_WrDat(TitleFont[j*16+i+8]);
  41.                 }
  42.                 x+=8;
  43.         }
  44. }

  45. void OLED_FormTemp(unsigned char x,y)//溫度標識
  46. {
  47.         unsigned char i=0,j=0;
  48.         for(j=0;j<5;j++)
  49.         {
  50.                 OLED_Set_Pos(x,y);

  51.                 for(i=0;i<8;i++)
  52.                 {
  53.                         OLED_WrDat(TempFont[j*16+i]);
  54.                 }
  55.                 OLED_Set_Pos(x,y+1);
  56.                
  57.                 for(i=0;i<8;i++)
  58.                 {
  59.                         OLED_WrDat(TempFont[j*16+i+8]);
  60.                 }
  61.                 x+=8;
  62.         }
  63. }

  64. void OLED_FormHumi(unsigned char x,y)//濕度標識
  65. {
  66.         unsigned char i=0,j=0;
  67.         for(j=0;j<4;j++)
  68.         {
  69.                 OLED_Set_Pos(x,y);

  70.                 for(i=0;i<8;i++)
  71.                 {
  72.                         OLED_WrDat(HumiFont[j*16+i]);
  73.                 }
  74.                 OLED_Set_Pos(x,y+1);
  75.                
  76.                 for(i=0;i<8;i++)
  77.                 {
  78.                         OLED_WrDat(HumiFont[j*16+i+8]);
  79.                 }
  80.                 x+=8;
  81.         }
  82. }

  83. void OLED_AnyChar_16X16(unsigned char x, y,unsigned char anystr_temp[])//在指定位置顯示一個指定的16X16字符
  84. //x:選定行第幾個像素點;y:選定的行數(以16個列像素為單位);待顯示的字符串
  85. {
  86.         unsigned char i=0;
  87.         if(x>112)//如果指定的行超界,那么轉到下一行第一個位置
  88.         {
  89.                 x=0;y++;
  90.         }
  91.         
  92.         OLED_Set_Pos(x,y);//置寫入位
  93.         
  94.         for(i=0;i<16;i++)
  95.         {
  96.         OLED_WrDat(anystr_temp[i]);//在字模表中查找相應位置的字模,并寫入到指定位置
  97.         }
  98.         
  99.         OLED_Set_Pos(x,y+1);//寫入位下移半個單位
  100.                
  101.         for(i=0;i<16;i++)
  102.         {
  103.                 OLED_WrDat(anystr_temp[i+16]);
  104.         }
  105. }

  106. void OLED_AnyChar_8X16(unsigned char x, y,unsigned char anystr_temp[])//在指定位置顯示一個指定的8X16字符
  107. //x:選定行第幾個像素點;y:選定的行數(以16個列像素為單位);待顯示的字符串
  108. {
  109.         unsigned char i=0;
  110.         if(x>112)//如果指定的行超界,那么轉到下一行第一個位置
  111.         {
  112.                 x=0;y++;
  113.         }
  114.         
  115.         OLED_Set_Pos(x,y);//置寫入位
  116.         
  117.         for(i=0;i<8;i++)
  118.         {
  119.         OLED_WrDat(anystr_temp[i]);//在字模表中查找相應位置的字模,并寫入到指定位置
  120.         }
  121.         
  122.         OLED_Set_Pos(x,y+1);//寫入位下移半個單位
  123.                
  124.         for(i=0;i<8;i++)
  125.         {
  126.                 OLED_WrDat(anystr_temp[i+8]);
  127.         }
  128. }

  129. void OLED_DataDisplay_H(unsigned char x, y,unsigned int display_temp[])//定制的數據顯示函數
  130. //x:選定行第幾個像素點;y:選定的行數(以16個列像素為單位);待顯示的數字字符串
  131. {
  132.         unsigned char i=0,j=0;
  133.         for(j=0;j<2;j++)//寫整數數據
  134.         {
  135.                 OLED_Set_Pos(x,y);//置寫入位
  136.                 for(i=0;i<8;i++)
  137.                 {
  138.                         OLED_WrDat(NumberFont[display_temp[j]*16+i]);//在字模表中查找相應位置的字模,并寫入到指定位置
  139.                 }
  140.                 OLED_Set_Pos(x,y+1);//寫入位下移半個單位
  141.                 for(i=0;i<8;i++)
  142.                 {
  143.                         OLED_WrDat(NumberFont[display_temp[j]*16+i+8]);
  144.                 }
  145.                 x+=8;
  146.         }
  147. }

  148. void OLED_DataDisplay_T(unsigned char x, y,unsigned int display_temp[])//定制的數據顯示函數
  149. //x:選定行第幾個像素點;y:選定的行數(以16個列像素為單位);待顯示的數字字符串
  150. {
  151.         unsigned char i=0,j=0;
  152.         for(j=0;j<2;j++)//寫整數數據
  153.         {
  154.                 OLED_Set_Pos(x,y);//置寫入位
  155.                 for(i=0;i<8;i++)
  156.                 {
  157.                         OLED_WrDat(NumberFont[display_temp[j]*16+i]);//在字模表中查找相應位置的字模,并寫入到指定位置
  158.                 }
  159.                 OLED_Set_Pos(x,y+1);//寫入位下移半個單位
  160.                 for(i=0;i<8;i++)
  161.                 {
  162.                         OLED_WrDat(NumberFont[display_temp[j]*16+i+8]);
  163.                 }
  164.                 x+=8;
  165.         }
  166.         x+=8;
  167.                 OLED_Set_Pos(x,y);//置寫入位
  168.                 for(i=0;i<8;i++)
  169.                 {
  170.                         OLED_WrDat(NumberFont[display_temp[j]*16+i]);//在字模表中查找相應位置的字模,并寫入到指定位置
  171.                 }
  172.                 OLED_Set_Pos(x,y+1);//寫入位下移半個單位
  173.                 for(i=0;i<8;i++)
  174.                 {
  175.                         OLED_WrDat(NumberFont[display_temp[j]*16+i+8]);
  176.                 }
  177. }
復制代碼


595數碼顯STC15F104E18B20溫度OK.zip

59.03 KB, 下載次數: 35, 下載積分: 黑幣 -5

OLED128顯STC15F104EHT11溫濕計OK2.zip

54.69 KB, 下載次數: 38, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:358930 發表于 2018-11-20 23:07 | 只看該作者
樣子不錯,沒科技感,主要沒源代碼不受控制,只能升級了。

15427262601830.33752576610976504.jpg (311.14 KB, 下載次數: 159)

15427262601830.33752576610976504.jpg

15427262601830.33752576610976504.jpg (311.14 KB, 下載次數: 154)

15427262601830.33752576610976504.jpg
回復

使用道具 舉報

板凳
ID:442950 發表于 2018-12-25 18:13 | 只看該作者
這傳感器用的什么的
回復

使用道具 舉報

地板
ID:358930 發表于 2018-12-27 04:43 | 只看該作者
三種,18B20和DHT12和LM35A
原裝的是LM35A論壇我發過原裝LM35A測溫度的,很好用。
回復

使用道具 舉報

5#
ID:412814 發表于 2019-1-25 14:40 | 只看該作者
厲害了,研究下。謝謝樓主
回復

使用道具 舉報

6#
ID:1030595 發表于 2023-12-26 10:38 | 只看該作者
如何接顯示屏?
回復

使用道具 舉報

7#
ID:1030595 發表于 2023-12-26 11:15 | 只看該作者
厲害了我的果,8個腳mcu,玩出了最多的功能!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 三级网站在线播放 | av中文天堂| 99精品视频在线观看 | 超碰国产在线 | 国产精品久久久久久久免费看 | 特黄av| 欧美日韩国产三级 | 亚洲一区影院 | www..com黄 | 国产一级黄色大片 | 国产伦理一区 | 日日干av | 久久午夜视频 | 午夜激情福利视频 | 精品国产一区二区三区久久久蜜月 | 中文字幕99 | 欧美色综合网 | 国产日韩一区二区 | 亚洲精品免费在线观看 | 欧美激情亚洲 | 国产伦精品一区二区三区免费视频 | 日韩国产在线播放 | 国产一区在线看 | 老女人性生活视频 | 国产美女自拍视频 | 国产亚洲视频在线观看 | 日本中文在线观看 | 亚洲精品在线免费 | 日韩国产中文字幕 | 婷婷综合五月天 | 操碰在线视频 | 黄色av一区 | 色综合久久天天综合网 | 久草视频免费在线观看 | 欧美一级做性受免费大片免费 | 国产一区二区三区视频在线 | 一级黄色片免费看 | 色爽视频 | 国产日韩欧美在线 | 免费在线成人网 | 午夜伦理视频 |