壓縮包中代碼
單片機源程序如下:
- /*
- * OLED_IIC.c
- *
- * Created on: 2020年7月15日
- * Author: 13293
- */
- #include "OLED_IIC.h"
- #include "stdlib.h"
- #include "OLED_FONT.h"
- #include <msp430.h>
- //OLED延時功能
- void delayms(uint x)
- {
- uint i,j;
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
- //IIC開始
- void oled_IIC_Start()
- {
- oled_SCL_1;
- oled_SDA_1;
- oled_SDA_0;
- oled_SCL_0;
- }
- //IIC停止
- void oled_IIC_Stop()
- {
- oled_SCL_0;
- oled_SDA_0;
- oled_SCL_1;
- oled_SDA_1;
- }
- //IIC寫字節
- void oled_Write_IIC_Byte(uchar IIC_Byte)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- if(IIC_Byte & 0x80)
- oled_SDA_1;
- else
- oled_SDA_0;
- oled_SCL_1;
- oled_SCL_0;
- IIC_Byte<<=1;
- }
- oled_SDA_1;
- oled_SCL_1;
- oled_SCL_0;
- }
- //IIC寫入數據
- void OLED_12864_Write_data(uint dat)
- {
- oled_IIC_Start();
- oled_Write_IIC_Byte(0x78);
- oled_Write_IIC_Byte(0x40);
- oled_Write_IIC_Byte(dat);
- oled_IIC_Stop();
- }
- //IIC寫入命令
- void OLED_12864_Write_commomand(uint dat)
- {
- oled_IIC_Start();
- oled_Write_IIC_Byte(0x78);
- oled_Write_IIC_Byte(0x00);
- oled_Write_IIC_Byte(dat);
- oled_IIC_Stop();
- }
- //OLED設置起始坐標
- void OLED_SetPos(uchar x, uchar y)
- {
- OLED_12864_Write_commomand(0xb0+y);
- OLED_12864_Write_commomand(((x&0xf0)>>4)|0x10);
- OLED_12864_Write_commomand((x&0x0f)|0x01);
- }
- //IIC OLED屏幕填充
- void OLED_Fill(uchar bmp_dat)
- {
- uchar y,x;
- for(y=0;y<8;y++)
- {
- OLED_12864_Write_commomand(0xb0+y);
- OLED_12864_Write_commomand(0x01);
- OLED_12864_Write_commomand(0x10);
- for(x=0;x<128;x++)
- OLED_12864_Write_data(bmp_dat);
- }
- }
- //OLED12864初始化
- void OLED_12864_Init()
- {
- oled_IO_init;
- delayms(500); //初始化之前的延時很重要!
- OLED_12864_Write_commomand(0xae);
- OLED_12864_Write_commomand(0x00);
- OLED_12864_Write_commomand(0x10);
- OLED_12864_Write_commomand(0x40);
- OLED_12864_Write_commomand(0x81);
- OLED_12864_Write_commomand(0xFF);//設置OLED亮度
- OLED_12864_Write_commomand(0xa1);
- OLED_12864_Write_commomand(0xc8);
- OLED_12864_Write_commomand(0xa6);
- OLED_12864_Write_commomand(0xa8);
- OLED_12864_Write_commomand(0x3f);
- OLED_12864_Write_commomand(0xd3);
- OLED_12864_Write_commomand(0x00);
- OLED_12864_Write_commomand(0xd5);
- OLED_12864_Write_commomand(0x80);
- OLED_12864_Write_commomand(0xd9);
- OLED_12864_Write_commomand(0xf1);
- OLED_12864_Write_commomand(0xda);
- OLED_12864_Write_commomand(0x12);
- OLED_12864_Write_commomand(0xdb);
- OLED_12864_Write_commomand(0x40);
- OLED_12864_Write_commomand(0x20);
- OLED_12864_Write_commomand(0x02);
- OLED_12864_Write_commomand(0x8d);
- OLED_12864_Write_commomand(0x14);
- OLED_12864_Write_commomand(0xa4);
- OLED_12864_Write_commomand(0xa6);
- OLED_12864_Write_commomand(0xaf);
- OLED_Fill(0x00); //清屏
- OLED_SetPos(0,0);
- }
- //IIC OLED顯示單個字符
- void OLED_8x16Str(uchar x, uchar y, uchar ch)
- {
- uchar i=0;
- if(x>120)
- {
- x=0;y++;
- }
- OLED_SetPos(x,y);
- for(i=0;i<8;i++)
- {
- OLED_12864_Write_data(F8X16[ch*16+i]);
- }
- OLED_SetPos(x,y+1);
- for(i=0;i<8;i++)
- {
- OLED_12864_Write_data(F8X16[ch*16+i+8]);
- }
- }
- //IIC OLED顯示字符串
- void OLED_ShowStr(uchar x, uchar y, uchar ch[])
- {
- uchar c = 0,i = 0,j = 0;
- //'\0'位字符串結束標志
- while(ch[j] != '\0')
- {
- c = ch[j] - 32;
- if(x > 120)
- {
- x = 0;
- y++;
- }
- OLED_SetPos(x,y);
- for(i=0;i<8;i++)
- OLED_12864_Write_data(F8X16[c*16+i]);
- OLED_SetPos(x,y+1);
- for(i=0;i<8;i++)
- OLED_12864_Write_data(F8X16[c*16+i+8]);
- x += 8;
- j++;
- }
- }
- //顯示16*32的坐標(x,y),y為頁范圍0~7---分四部分
- void OLED_16x32(uchar x, uchar y, uchar ch)
- {
- uchar i=0;
- if(x>120)
- {
- x=0;y++;
- }
- OLED_SetPos(x,y);
- for(i=0;i<16;i++)
- {
- OLED_12864_Write_data(F16X32[ch*64+i]);
- }
- OLED_SetPos(x,y+1);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
OLED.rar
(4.3 KB, 下載次數: 126)
2020-7-15 17:24 上傳
點擊文件名下載附件
源、頭文件 下載積分: 黑幣 -5
|