|
某寶淘了個單片機(jī)溫度計,沒顯示,沒代碼,沒參數(shù),沒有圖,除了便宜,再沒優(yōu)點,幾乎就殼子能用,老板按殼子價出的。自用手電透光法畫出了單片機(jī)定意圖,弄了兩程序,成功驅(qū)動。
電路原理圖如下:
20181119_223407.jpg (280.4 KB, 下載次數(shù): 61)
下載附件
2018-11-20 22:55 上傳
20181120_001002.jpg (345.42 KB, 下載次數(shù): 67)
下載附件
2018-11-20 22:55 上傳
20181120_001219.jpg (328.28 KB, 下載次數(shù): 49)
下載附件
2018-11-20 22:55 上傳
- #include "STC15.H"
- #include "codetab_Hygrothermograph.h"//OLED字庫
- #include "OLED_Hygrothermograph.h"//OLED基本驅(qū)動函數(shù)
- void OLED_FormName(unsigned char x, y)//在指定位置顯示HFont字符組
- {
- unsigned char i=0,j=0;
- for(j=0;j<17;j++)
- {
- OLED_Set_Pos(x,y);
- for(i=0;i<6;i++)
- OLED_WrDat(HFont[i+j*6]);
- x+=6;
- }
- }
- void OLED_FormLine(unsigned char x, y)//在指定位置顯示HFont字符組
- {
- unsigned char i=0,j=0;
- for(j=0;j<18;j++)
- {
- OLED_Set_Pos(x,y);
- for(i=0;i<6;i++)
- OLED_WrDat(LineFont[i]);
- x+=6;
- }
- }
- void OLED_FormTitle(unsigned char x,y)//主標(biāo)題
- {
- unsigned char i=0,j=0;
- for(j=0;j<13;j++)
- {
- OLED_Set_Pos(x,y);
- for(i=0;i<8;i++)
- {
- OLED_WrDat(TitleFont[j*16+i]);
- }
- OLED_Set_Pos(x,y+1);
-
- for(i=0;i<8;i++)
- {
- OLED_WrDat(TitleFont[j*16+i+8]);
- }
- x+=8;
- }
- }
- void OLED_FormTemp(unsigned char x,y)//溫度標(biāo)識
- {
- unsigned char i=0,j=0;
- for(j=0;j<5;j++)
- {
- OLED_Set_Pos(x,y);
- for(i=0;i<8;i++)
- {
- OLED_WrDat(TempFont[j*16+i]);
- }
- OLED_Set_Pos(x,y+1);
-
- for(i=0;i<8;i++)
- {
- OLED_WrDat(TempFont[j*16+i+8]);
- }
- x+=8;
- }
- }
- void OLED_FormHumi(unsigned char x,y)//濕度標(biāo)識
- {
- unsigned char i=0,j=0;
- for(j=0;j<4;j++)
- {
- OLED_Set_Pos(x,y);
- for(i=0;i<8;i++)
- {
- OLED_WrDat(HumiFont[j*16+i]);
- }
- OLED_Set_Pos(x,y+1);
-
- for(i=0;i<8;i++)
- {
- OLED_WrDat(HumiFont[j*16+i+8]);
- }
- x+=8;
- }
- }
- void OLED_AnyChar_16X16(unsigned char x, y,unsigned char anystr_temp[])//在指定位置顯示一個指定的16X16字符
- //x:選定行第幾個像素點;y:選定的行數(shù)(以16個列像素為單位);待顯示的字符串
- {
- unsigned char i=0;
- if(x>112)//如果指定的行超界,那么轉(zhuǎn)到下一行第一個位置
- {
- x=0;y++;
- }
-
- OLED_Set_Pos(x,y);//置寫入位
-
- for(i=0;i<16;i++)
- {
- OLED_WrDat(anystr_temp[i]);//在字模表中查找相應(yīng)位置的字模,并寫入到指定位置
- }
-
- OLED_Set_Pos(x,y+1);//寫入位下移半個單位
-
- for(i=0;i<16;i++)
- {
- OLED_WrDat(anystr_temp[i+16]);
- }
- }
- void OLED_AnyChar_8X16(unsigned char x, y,unsigned char anystr_temp[])//在指定位置顯示一個指定的8X16字符
- //x:選定行第幾個像素點;y:選定的行數(shù)(以16個列像素為單位);待顯示的字符串
- {
- unsigned char i=0;
- if(x>112)//如果指定的行超界,那么轉(zhuǎn)到下一行第一個位置
- {
- x=0;y++;
- }
-
- OLED_Set_Pos(x,y);//置寫入位
-
- for(i=0;i<8;i++)
- {
- OLED_WrDat(anystr_temp[i]);//在字模表中查找相應(yīng)位置的字模,并寫入到指定位置
- }
-
- OLED_Set_Pos(x,y+1);//寫入位下移半個單位
-
- for(i=0;i<8;i++)
- {
- OLED_WrDat(anystr_temp[i+8]);
- }
- }
- void OLED_DataDisplay_H(unsigned char x, y,unsigned int display_temp[])//定制的數(shù)據(jù)顯示函數(shù)
- //x:選定行第幾個像素點;y:選定的行數(shù)(以16個列像素為單位);待顯示的數(shù)字字符串
- {
- unsigned char i=0,j=0;
- for(j=0;j<2;j++)//寫整數(shù)數(shù)據(jù)
- {
- OLED_Set_Pos(x,y);//置寫入位
- for(i=0;i<8;i++)
- {
- OLED_WrDat(NumberFont[display_temp[j]*16+i]);//在字模表中查找相應(yīng)位置的字模,并寫入到指定位置
- }
- OLED_Set_Pos(x,y+1);//寫入位下移半個單位
- for(i=0;i<8;i++)
- {
- OLED_WrDat(NumberFont[display_temp[j]*16+i+8]);
- }
- x+=8;
- }
- }
- void OLED_DataDisplay_T(unsigned char x, y,unsigned int display_temp[])//定制的數(shù)據(jù)顯示函數(shù)
- //x:選定行第幾個像素點;y:選定的行數(shù)(以16個列像素為單位);待顯示的數(shù)字字符串
- {
- unsigned char i=0,j=0;
- for(j=0;j<2;j++)//寫整數(shù)數(shù)據(jù)
- {
- OLED_Set_Pos(x,y);//置寫入位
- for(i=0;i<8;i++)
- {
- OLED_WrDat(NumberFont[display_temp[j]*16+i]);//在字模表中查找相應(yīng)位置的字模,并寫入到指定位置
- }
- OLED_Set_Pos(x,y+1);//寫入位下移半個單位
- for(i=0;i<8;i++)
- {
- OLED_WrDat(NumberFont[display_temp[j]*16+i+8]);
- }
- x+=8;
- }
- x+=8;
- OLED_Set_Pos(x,y);//置寫入位
- for(i=0;i<8;i++)
- {
- OLED_WrDat(NumberFont[display_temp[j]*16+i]);//在字模表中查找相應(yīng)位置的字模,并寫入到指定位置
- }
- OLED_Set_Pos(x,y+1);//寫入位下移半個單位
- for(i=0;i<8;i++)
- {
- OLED_WrDat(NumberFont[display_temp[j]*16+i+8]);
- }
- }
復(fù)制代碼
|
評分
-
查看全部評分
|