您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 基于OLED液晶显示器的显示系统
基于OLED液晶显示器的显示系统姓名:唐旭晴学号:110400609班级:11电子2班一、实习目的(1)了解飞思卡尔单片机的基本原理,掌握其基本的工作流程。(2)了解OLED液晶显示屏的基本原理及用法。(3)能够熟练使用CodeWarrior软件编写C语言程序,使用BDM仿真器下载程序。(4)能够熟练焊接电路板。二、实验设备与器件CodeWarrior软件,BDM仿真器,万用电路板,飞思卡尔单片机,OLED液晶显示器三、实验内容内容:利用飞思卡尔单片机制作基于OLED液晶显示器的显示系统要求:用四个按键控制,按下第一个按键显示“北”,按下第二个按键显示“京”,按下第三个按键显示“印刷”,按下第四个按键显示“学院”。(1)OLED,即有机发光二极管(OrganicLight-EmittingDiode),又称为有机电激光显示(OrganicElectroluminesenceDisplay,OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。LCD都需要背光,而OLED不需要,因为它是自发光的。这样同样的显示,OLED效果要来得好一些。以目前的技术,OLED的尺寸还难以大型化,但是分辨率确可以做到很高。我们使用的是ALINETEK的OLED显示模块,该模块有以下特点:1)模块有单色和双色两种可选,单色为纯蓝色,而双色则为黄蓝双色。2)尺寸小,显示尺寸为0.96寸,而模块的尺寸仅为27mm*26mm大小。3)高分辨率,该模块的分辨率为128*64。4)多种接口方式,该模块提供了总共4种接口包括:6800、8080两种并行接口方式、4线SPI接口方式以及IIC接口方式。5)不需要高压,直接接3.3V就可以工作了。这里我们采用的是4线串行(SPI)方式,4先串口模式使用的信号线有如下几条:CS:OLED片选信号。RST(RES):硬复位OLED。DC:命令/数据标志(0,读写命令;1,读写数据)。SCLK:串行时钟线。在4线串行模式下,D0信号线作为串行时钟线SCLK。SDIN:串行数据线。在4线串行模式下,D1信号线作为串行数据线SDIN。模块的D2需要悬空,其他引脚可以接到GND。在4线串行模式下,只能往模块写数据而不能读数据。在4线SPI模式下,每个数据长度均为8位,在SCLK的上升沿,数据从SDIN移入到SSD1306,并且是高位在前的。DC线还是用作命令/数据的标志线。在4线SPI模式下,写操作的时序如图17.1.6所示:4线SPI写操作时序图模块的显存:SSD1306的显存总共为128*64bit大小,SSD1306将这些显存分为了8页,其对应关系如下表所示:SSD1306显存与屏幕对应关系表(2)飞思卡尔单片机的功能及特点:MC9S12XS128是16位单片机,由16位中央处理单元(CPU12X)、128KB程序、Flash(P-lash)、8KBRAM、8KB数据Flash(D-lash)组成片内存储器。主要功能模块包括:内部存储器,内部PLL锁相环模块,2个异步串口通讯SCI,1个串行外设接口SPIMSCAN模块,1个8通道输入/输出比较定时器模块TIM,周期中断定时器模块PIT,16通道A/D转换模块ADC,1个8通道脉冲宽度调制模块PWM,输入/输出数字I/O口。本次设计中主要用到PORTA,PORTB端口:PORTA:PORTA为通用I/O口,共8个,作为通用数字I/O口使用,未集成特殊功能.主要配置寄存器有:数据寄存器PORTA、数据方向寄存DDRA、上拉电阻控制寄存器PUCR和驱动控制寄存器RDR。a.数据寄存器PORTA通过写1/0使单片机对应引脚输出高低电平,或通过读取数据寄存器获得对应引脚的高低电平值。例:PORTA_PB0=1b.数据方向寄存器DDRADDRA寄存器配置引脚为输出口还是输入口,“0”,输入口;“1”,输出口。MCU复位后,DDRA值为0x00,引脚默认为输入口。例:DDRA=0xFF//配置PORTA口为输出PORTB:PORTB为通用数字I/O口,共8个。其使用与PORTA基本一样。主要配置寄存器有:数据寄存器PORTB、数据方向寄存DDRB。上拉电阻控制寄存器PUCR和驱动控制寄存器RDR与PORTA、PORTB、PORTE、PORTK共用。a.数据寄存器PORTBb.数据方向寄存器DDRB四、原理图:器件说明:OLED液晶显示器(8管脚),4个1k电阻,4个按键,飞思卡尔芯片(64管脚)管脚连接:GNDGNDFMQAN07VCCVCCKEYMOSI0D0PB4PA1PA1D1PB3PA2PA2RSTPB1PA3PA3DCPB2PA4PA4五、流程图六、程序设计1.voidpll_set(void):内部锁相环模块,单片机使用PLL功能能够获得更高的总线频率,这对于需要提高单片机运行速度的应用场合非常必要。2.voidOLED_Init(void):初始化OLED液晶显示屏3.voidLCD_WrCmd(bytecmd):写指令函数4.voidLCD_WrDat(bytedata):写数据函数5.voidLCD_PutPixel(bytex,bytey):填充一个点6.voidLCD_P6x8Str(bytex,bytey,bytech[]):显示字符串函数7.voidmain(void):主函数#includemain.h//所有头文件已包含在在include.h里复位SSD1306驱动IC初始代码开启显示清0显存开始显示unsignedcharch_data[]=---Bytangxuqing;//显示数组/**********************************************************************延时函数**********************************************************************/voiddelayms(unsignedlongms){unsignedintii,jj;if(ms1)ms=1;for(ii=0;iims;ii++)for(jj=0;jj3338*2;jj++);//80MHz--1ms}/**********************************************************************时钟设置*通过锁相环(PLL)设置系统时钟为56M**********************************************************************/voidpll_set(void){CLKSEL=0X00;PLLCTL_PLLON=1;SYNR=0xc0|0x06;REFDV=0x80|0x01;POSTDIV=0x00;_asm(nop);_asm(nop);_asm(nop);_asm(nop);while(!(CRGFLG_LOCK==1));CLKSEL_PLLSEL=1;}/**********************************************************************对I/O口的初定义***********************************************************************/voidinit_IO(void){DDRA=0xff;PORTA=0xfb;}/**********************************************************************主函数***********************************************************************/voidmain(void){/*putyourowncodehere*/_DISABLE_COP();//关看门狗DisableInterrupts;//关中断pll_set();//锁相环初始化56MHzuart_init();//串口初始化(中断,9600)OLED_Init();//OLED初始化sound_init();//声音初始化init_IO();//通用I/O口初始化LCD_P6x8Str(1,6,ch_data);//显示开机界面kaiji_fmq();//开机声音DDRA_DDRA1=0;DDRA_DDRA2=0;DDRA_DDRA3=0;DDRA_DDRA4=0;//SETPORTAI/OINPUTPORTAB_PA1=1;PORTAB_PA2=1;PORTAB_PA3=1;PORTAB_PA4=1;EnableInterrupts;for(;;){//_FEED_COP();/*feedsthedog*//*for(i=0;i32;i++){//扫描显示点for(j=0;j128;j++)LCD_PutPixel(j,i);delayms(1);}*///LCD_P6x8Str(0,0,ch_data);if(!PORTA_PA1){LCD_P6x8Str(1,2,1);}if(!PORTA_PA2){LCD_P6x8Str(1,3,2);}if(!PORTA_PA3){LCD_P6x8Str(1,4,3);}if(!PORTA_PA4){LCD_P6x8Str(1,5,4);}}/*loopforever*//*pleasemakesurethatyouneverleavemain*/}OLED.c函数(子程序函数)#defineOLED_GLO#includeoled.h#defineXLevelL0x00#defineXLevelH0x10#defineXLevel((XLevelH&0x0F)*16+XLevelL)#defineMax_Column128#defineMax_Row64#defineBrightness0xCF/*4线SPI使用说明:VBT供内部DC-DC电压,3.3~4.3V,如果使用5V电压,为保险起见串一个100~500欧的电阻VCC供内部逻辑电压1.8~6VGND地BS0低电平BS1低电平BS2低电平CS片选管脚DC命令数据选择管脚RES模块复位管脚D0(SCLK),时钟脚,由MCU控制D1(MOSI),主输出从输入数据脚,由MCU控制D2悬空D3-D7,低电平,也可悬空,但最好设为低电平RD低电平,也可悬空,但最好设为低电平RW低电平,也可悬空,但最好设为低电平RD低电平,也可悬空,但最好设为低电平C7---D0(SCLK)时钟脚,由MCU控制C6---D1(MOSI)主输出从输入数据脚,由MCU控制C0---RST模块复位管脚C4---DC命令数据选择管脚*//****************************引脚定义***********************************PB1RSTPB2DCPB3D1PB4D0*************************************************************************/#defineX_WIDTH128#defineY_WIDTH64//======================================constbyteF6x8[][6]={{0x00,0x00,0x00,0x00,0x00,0x00},//sp{0x00,0x00,0x00,0x2f,0x00,0x00},//!{0x00,0x00,0x07,0x00,0x07,0x00},//{0x00,0x14,0x7f,0x14,0x7f,0x14},//#{0x00,0x24,0x2a,0x7f,0x2a,0x12},//${0x
本文标题:基于OLED液晶显示器的显示系统
链接地址:https://www.777doc.com/doc-5148906 .html