上次比赛做的计数器,采用0.96SPI OLED显示屏幕 2个程序是不同按键情况。
原理图(用ad软件画的)
接线说明:
GND 地
VCC 3.3V或者5V
D0(SCL) P1^0
D1(SDA) P1^1
RST(RES) P1^2
DC(DC) P1^3
CS 若无需用到CS脚,可以不接,电路已经默认选中
若用到CS脚,低电平有效
单片机源程序:
- #include "reg52.h"
- #include<intrins.h>
- #define high 1
- #define low 0
- /*************Pin Define***************/
- sbit RES=P1^2;
- sbit DC=P1^3;
- sbit SCL=P1^0;
- sbit SDA=P1^1;
- /****************************************************/
- void Initial_LY096BG30();
- void Delay_50ms(unsigned int Del_50ms);
- void Delay_1ms(unsigned int Del_1ms);
- void fill_picture(unsigned char fill_Data);
- void Picture_1();
- void Write_SPI_Command(unsigned char ucCmd);
- void Write_SPI_Data(unsigned char ucData);
- /***********************Initial code*********************/
- void Initial_LY096BG30()
- {
- Write_SPI_Command(0xAE); //display off
- Write_SPI_Command(0x20); //Set Memory Addressing Mode
- Write_SPI_Command(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
- Write_SPI_Command(0xb0); //Set Page Start Address for Page Addressing Mode,0-7
- Write_SPI_Command(0xc8); //Set COM Output Scan Direction
- Write_SPI_Command(0x00);//---set low column address
- Write_SPI_Command(0x10);//---set high column address
- Write_SPI_Command(0x40);//--set start line address
- Write_SPI_Command(0x81);//--set contrast control register
- Write_SPI_Command(0x7f);
- Write_SPI_Command(0xa1);//--set segment re-map 0 to 127
- Write_SPI_Command(0xa6);//--set normal display
- Write_SPI_Command(0xa8);//--set multiplex ratio(1 to 64)
- Write_SPI_Command(0x3F);//
- Write_SPI_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
- Write_SPI_Command(0xd3);//-set display offset
- Write_SPI_Command(0x00);//-not offset
- Write_SPI_Command(0xd5);//--set display clock divide ratio/oscillator frequency
- Write_SPI_Command(0xf0);//--set divide ratio
- Write_SPI_Command(0xd9);//--set pre-charge period
- Write_SPI_Command(0x22); //
- Write_SPI_Command(0xda);//--set com pins hardware configuration
- Write_SPI_Command(0x12);
- Write_SPI_Command(0xdb);//--set vcomh
- Write_SPI_Command(0x20);//0x20,0.77xVcc
- Write_SPI_Command(0x8d);//--set DC-DC enable
- Write_SPI_Command(0x14);//
- Write_SPI_Command(0xaf);//--turn on oled panel
- }
- /***********************Picture Code**************************/
- unsigned char code show1[]=
- {
- 0x00,0x06,0x0A,0xFE,0x0A,0xC6,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xFE,0x7D,0xBB,0xC7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC7,0xBB,0x7D,
- 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x0C,0xFE,0xFE,0x0C,0x08,0x20,0x60,0xFE,0xFE,0x60,0x20,0x00,0x00,0x00,0x78,0x48,
- 0xFE,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xFE,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,
- 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,0x00,0x00,0xFE,0xFF,0x03,
- 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0xC0,0xC0,
- 0xC0,0x00,0x00,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
- 0xFF,0xFE,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,
- 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,
- 0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,0xFF,0x00,0x00,0x00,0x00,0xE1,0xE1,
- 0xE1,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,
- 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,
- 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,
- 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
- 0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,
- 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xE2,0x92,0x8A,0x86,0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,
- 0x00,0xFE,0x00,0x82,0x92,0xAA,0xC6,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
- 0x7C,0x00,0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
- 0x7C,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x24,0xA4,0x2E,0x24,0xE4,0x24,0x2E,0xA4,0x24,0x00,0x00,0x00,0xF8,0x4A,0x4C,
- 0x48,0xF8,0x48,0x4C,0x4A,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,
- 0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,0x20,0x10,0x10,0x10,0x10,0x20,0xC0,0x00,0x00,
- 0x00,0x12,0x0A,0x07,0x02,0x7F,0x02,0x07,0x0A,0x12,0x00,0x00,0x00,0x0B,0x0A,0x0A,
- 0x0A,0x7F,0x0A,0x0A,0x0A,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x40,
- 0x40,0x50,0x20,0x5F,0x80,0x00,0x1F,0x20,0x40,0x40,0x40,0x50,0x20,0x5F,0x80,0x00,
- };
- /*****************************************************************************
- 函 数 名 : LED_WrDat
- 功能描述 : 向OLED写数据
- 输入参数 : UCHAR8 ucData
- 输出参数 : NONE
- 返 回 值 : NONE
- *****************************************************************************/
- void Write_SPI_Data(unsigned char ucData)
- {
- unsigned char i = 8;
- DC = 1;
- SCL = 0;
-
- while (i--)
- {
- if (ucData & 0x80)
- {
- SDA = 1;
- }
- else
- {
- SDA = 0;
- }
-
- SCL = 1;
- _nop_();
- SCL = 0;
- ucData <<= 1;
- }
- return;
- }
- /*****************************************************************************
- 函 数 名 : LED_WrCmd
- 功能描述 : 向OLED写命令
- 输入参数 : UCHAR8 ucCmd
- 输出参数 : NONE
- 返 回 值 : NONE
- *****************************************************************************/
- void Write_SPI_Command(unsigned char ucCmd)
- {
- unsigned char i = 8;
- DC = 0;
- SCL = 0;
- while (i--)
- {
- if (ucCmd & 0x80)
- {
- SDA = 1;
- }
- else
- {
- SDA = 0;
- }
- SCL = 1;
- _nop_();
- SCL = 0;
- ucCmd <<= 1;
- }
- return;
- }
- /********************************************
- // fill_Picture
- ********************************************/
- void fill_picture(unsigned char fill_Data)
- {
- unsigned char m,n;
- for(m=0;m<8;m++)
- {
- Write_SPI_Command(0xb0+m); //page0-page1
- Write_SPI_Command(0x00); //low column start address
- Write_SPI_Command(0x10); //high column start address
- for(n=0;n<128;n++)
- {
- Write_SPI_Data(fill_Data);
- }
- }
- }
- /******************************************
- // picture
- ******************************************/
- void picture_1()
- {
- unsigned char x,y;
- unsigned int i=0;
- for(y=0;y<8;y++)
- {
- Write_SPI_Command(0xb0+y);
- Write_SPI_Command(0x00);
- Write_SPI_Command(0x10);
- for(x=0;x<128;x++)
- {
- Write_SPI_Data(show1[i++]);
- }
- }
- }
- /***********************Delay****************************************/
- void Delay_50ms(unsigned int Del_50ms) //
- {
- unsigned int m;
- for(;Del_50ms>0;Del_50ms--)
- for(m=6245;m>0;m--);
- }
- void Delay_1ms(unsigned int Del_1ms) //
- {
- unsigned char j;
- while(Del_1ms--)
- {
- for(j=0;j<123;j++);
- }
- }
- /*******************************Main*******************************/
- void main(void)
- {
- RES=0;
- Delay_1ms(10);
-
- …………余下代码请下载附件…………
复制代码 下载:
程序.7z
(85.62 KB, 下载次数: 101)
|