制作出来实物图如下:
单片机源程序如下:
- #include "REG51.h"
- #include "oled.h"
- #include "bmp.h"
- # define uchar unsigned char
- # define uint unsigned int
- sbit D0=P3^2;
- int motor=0,t=0,S=0,juli=0;
- u8 shu,bai,shi,ge,distance;
- u8 code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','.','M'};
- u8 disbuff[5] ={ 0,0,0,0,0};
- u8 buff[5] ={0,0,0,0,0} ;
- u8 sbuff[5] ={0,0,0,0,0};
- void delay (uint z)
- { uint x,y;
- for (x=600;x>0;x--)
- for (y=z;y>0;y--);
- }
- void INT_init (void)
- { EA=1;
- EX0=1;
- IT0=1;
- }
- void main(void )
- { OLED_Init(); //初始化OLED
- OLED_Clear();
- INT_init();
-
- while (1)
- {
- OLED_ShowCHinese(0,0,0);
- OLED_ShowCHinese(18,0,1);
- OLED_ShowCHinese(36,0,2);
- OLED_ShowCHinese(54,0,3);
- distance=(motor/20)*22;
- if(motor==256)
- { motor=0;
- t++;
- }
- disbuff[0]=distance/1000;
- disbuff[1]=distance%1000/100;
- disbuff[2]=distance%100/10;
- disbuff[3]=distance%10;
- disbuff[4]=t;
- OLED_ShowChar(0, 3, ASCII[disbuff[0]]);
- OLED_ShowChar(15, 3, ASCII[disbuff[1]]);
- OLED_ShowChar(30, 3, ASCII[12]);
- OLED_ShowChar(45, 3, ASCII[disbuff[2]]);
- OLED_ShowChar(60, 3, ASCII[disbuff[3]]);
- OLED_ShowChar(75, 3, ASCII[13]);
- OLED_ShowChar(120, 0, ASCII[disbuff[4]]);
- S=256*t;
- /* buff[0]=S/1000;
- buff[1]=S/100;
- buff[2]=S%100/10;
- buff[3]=S%10;
-
- OLED_ShowChar(0, 7, ASCII[buff[0]]); 0
- OLED_ShowChar(15, 7, ASCII[buff[1]]);
- OLED_ShowChar(30, 7, ASCII[12]);
- OLED_ShowChar(45, 7, ASCII[buff[2]]);
- OLED_ShowChar(60, 7, ASCII[buff[3]]);
- OLED_ShowChar(75, 7, ASCII[13]);*/
-
- juli=S+distance;
- sbuff[0]=juli/1000;
- sbuff[1]=juli%1000/100;
- sbuff[2]=juli%100/10;
- sbuff[3]=juli%10;
-
- OLED_ShowChar(0, 7, ASCII[sbuff[0]]);
- OLED_ShowChar(15, 7, ASCII[sbuff[1]]);
- OLED_ShowChar(30, 7, ASCII[12]);
- OLED_ShowChar(45, 7, ASCII[sbuff[2]]);
- OLED_ShowChar(60, 7, ASCII[sbuff[3]]);
- OLED_ShowChar(75, 7, ASCII[13]);
- delay(50);
-
- OLED_Clear();
- }
- }
复制代码
所有资料51hei提供下载:
中景园电子0.96OLED显示屏_C51系列_IIC_例程推荐使用.zip
(115.08 KB, 下载次数: 81)
|