标题:
单片机计数器 0.96SPI OLED显示 Keil c51程序 带AD画的原理图
[打印本页]
作者:
黑黑嘿嘿嘿
时间:
2017-3-21 12:27
标题:
单片机计数器 0.96SPI OLED显示 Keil c51程序 带AD画的原理图
上次比赛做的计数器,采用0.96SPI OLED显示屏幕 2个程序是不同按键情况。
原理图(用ad软件画的)
51hei.png
(57.91 KB, 下载次数: 49)
下载附件
2021-12-21 23:35 上传
接线说明:
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)
2021-12-21 23:43 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
laoda129876
时间:
2017-5-20 19:41
好东西值得分享
作者:
tiny44
时间:
2017-8-6 21:50
OLED_Display_On(void);OLED_Display_On(void);
作者:
EDA12345678
时间:
2021-1-2 12:20
请问为什么我下载程序,只显示主画面菜单,按键只显示英文代码?
作者:
余生尽新欢
时间:
2021-12-21 16:10
楼主这个计数器的触发是什么?看不出来
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1