基于单片机oled源代码及仿真软件IIC

一、系统方案
1、单片机采用51单片机作为主控器。
2、显示采用OLED显示。
3、按键切换显示内容。
基于单片机oled源代码及仿真软件IIC_第1张图片

二、硬件设计
原理图如下:
基于单片机oled源代码及仿真软件IIC_第2张图片

三、单片机软件设计
1、首先是系统初始化
void timer0_init()
{
TMOD = 0x01; //16-bit
TL0 = TL0_X; TH0 = TH0_X; //定时器初值
EA = 1; ET0 = 1; //启用T0中断
TR0 = 1; //启动定时器
}
2、液晶显示程序
void showSchoolName()
{
unsigned char i;
OLED_CLS();//清屏
//显示校名
for(i=0;i<8;i++) { OLED_P16x16Ch(i16,1,i); }
//显示校训
for(i=0;i<4;i++)
{ OLED_P16x16Ch(i
16+16,4,i+8);}
//显示校训
for(i=0;i<4;i++)
{ OLED_P16x16Ch(i16+48,6,i+12); }
}
void showWelcome()
{
unsigned char i;
OLED_CLS();//清屏
for(i=0;i<7;i++) //显示欢迎三班同学
{
OLED_P16x16Ch(i
16+8,3,i+16);
}
OLED_P8x16Str(12,5,“Welcome you!”);
}
void showAD()
{
unsigned char i;
OLED_CLS();
for(i=0;i<4;i++) //显示“欢迎关注”
{
OLED_P16x16Ch(i*16+32,2,i+23);
}

for(i=0;i<6;i++) //显示 “轻松学单片机”
   {
   		OLED_P16x16Ch(i*16+16,5,i+27);
   }

}
3、按键程序
void keyScan()
{
if(KEY_S1 ==0)
{
delay(10); //软件延时去抖
if(KEY_S1 == 0)
{
showAD(); //S1按下,显示订阅号
}

}

}
4、核心算法程序
void main()
{
OLED_Init(); //OLED初始化
timer0_init();//定时器T0初始化
update_flag = 1; //刷新OLED
while(1)
{
keyScan();//按键扫描
if(update_flag ==0) continue;
switch (mode)
{
case 0: showSchoolName(); break;
case 1: showWelcome(); break;
case 2: showAD();break;
}
update_flag = 0;
}
}
四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
基于单片机oled源代码及仿真软件IIC_第3张图片

你可能感兴趣的:(单片机,嵌入式硬件)