LOGO通信和Nokia5110液晶的使用SPI,SCI(UART)LOGO2串行口及其应用1、并行通信和串行通信(好比传球)以1个字节的数据为例01001111单片机01001111外部设备单片机RT外部设备并行通信串行通信TXDRXDLOGO异步通信串行通信LOGO2019/9/304异步通信一帧的格式:起始位0+8个数据位+奇偶校验位(可省略)+停止位1“可以将0,1理解为指单片机里串口这一模块的标志位”通信规则:1、波特率:数据传输的速率,定义的是每秒钟传送的二进制位数(好比语速、传球速度)2、字符格式:(可自由规定指对同一种0和1的理解是相同的)如ASCALL码表LOGO串行通信的制式LOGO2019/9/30此处添加公司信息6串行通信的制式单工通信:通信接口只能发送或者接收单向传送方法的叫做单工通信。(如:BB机)双工通信:数据在甲乙两机之间的双向传递,称之为双工通讯。1、全双工通信:两机可以同时收发,接收和发送完全独立(如:手机)2、半双工通信:两机不能同时收发,任一时刻只能收或者发(如:对讲机)LOGOLOGO同步通信串行通信LOGO2019/9/30此处添加公司信息8同步通信同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。连续:不需要起始位和停止位通常含有若干个数据字符:可以一个字符接一个字符的传输大量的数据LOGO2019/9/30此处添加公司信息9同步传输过程SmartArt发送过程中:收发双方还必须一个时钟进行协调,用于确定串行传输中每一位的位置。接收数据时,接收方可利用同步字符使内部时钟与发送方保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,供CPU读取,直至收到结束符为止。LOGOLOGOSPI的简介和Nokia5110的使用同步通信的应用LOGO2019/9/30此处添加公司信息11SPI点击此处添加脚注信息串行外设接口(SPI,SerialPeripheralInterface)是Freescale公司推出的一种同步串行通讯接口,用于微处理器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准,各半导体公司推出了大量带有SPI接口的芯片,如RAM、EEPROM、A/D转换器、D/A转换器、LED/LCD显示驱动器、I/O接口芯片、实时时钟、UART收发器等,为用户的外围扩展提供了灵活而廉价的选择。我们先来了解几个概念:主机-从机(Master-Slave):提供SPI串行时钟的SPI设备称为SPI主机或主设备(Master),其它设备则称为SPI从机或从设备(Slave)从机选择引脚(SlaveSelect):若一个MCU的SPI工作于主机方式,则置该MCU的为高电平。若一个MCU的SPI工作于从机方式,当=0时表示主机选中了该从机,反之则未选中该从机LOGO2019/9/30此处添加公司信息12SPI点击此处添加脚注信息主出从入引脚MOSI(MasterOut/SlaveIn):主出从入引脚MOSI是主机输出、从机输入数据线。主入从出引脚MISO(MasterIn/SlaveOut):主入从出引脚MISO是主机输入、从机输出数据线。SPI串行时钟引脚SPSCK(SPISerialClock):SPI串行时钟引脚SPSCK用于控制主机与从机之间的数据传输。时钟极性:表示时钟信号在空闲时是高电平还是低电平。时钟相位:决定数据是在SPSCK的上升沿采样还是在SPSCK的下降沿采样LOGO2019/9/30此处添加公司信息13Nokia5110液晶的使用点击此处添加脚注信息Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议。4模拟SPI(模拟任何通信方式关键是对时序图的理解)对于不带SPI串行总线接口的MCU来说,可以使用软件来模拟SPI的操作。举例说明,我们可以使用三个普通I/O口,分别定义为pin_SPSCK、pin_MISO、pin_MOSI来模拟SPI器件的SPSCK、MISO、MOSI。SPSCKSCLKMOSISDINSS(片选引脚)CELOGO14Nokia5110液晶的使用之初始化voidLCD_init(void){LCD_RST=0;//产生一个让LCD复位的低电平脉冲delay_us(1);LCD_RST=1;LCD_write_byte(0x21,0);//使用扩展命令设置LCD模式LCD_write_byte(0xcc,0);//设置偏置电压LCD_write_byte(0x06,0);//温度校正LCD_write_byte(0x13,0);//1:48LCD_write_byte(0x20,0);//使用基本命令LCD_clear();//清屏LCD_write_byte(0x0c,0);//设定显示模式,正常显示}接通电源后,内部寄存器和RAM的内容是不确定的,这需要一个RES低电平脉冲复位一下。当VDD(电源)变为高电平,达到VDDmin(或更高)之后,最多100ms,RST输入低电平(电平幅度=0.3VDD)。LOGO2019/9/3015发送一个字节的数据voidLCD_write_byte(unsignedchardat,unsignedcharcommand){unsignedchari;LCD_CE=0;if(command==0)LCD_DC=0;elseLCD_DC=1;for(i=0;i8;i++){if(dat&0x80)SDIN=1;(串行数据输入)elseSDIN=0;SCLK=0;dat=dat1;SCLK=1;}LCD_CE=1;}灰色区域代表可以是高也可以是低时序图的阅读方式液晶各引脚的具体作用请见5110datasheet的P13页LOGO16发送多个字节的数据voidLCD_write_english_string(unsignedcharX,unsignedcharY,char*s){LCD_set_XY(X,Y);//光标定位while(*s){LCD_write_char(*s);s++;}}LOGO2019/9/30此处添加公司信息LOGO2019/9/30此处添加公司信息18指令集的阅读和使用以LCD_set_XY(X,Y)函数为例点击此处添加脚注信息voidLCD_set_XY(unsignedcharX,unsignedcharY){LCD_write_byte(0x40|Y,0);//column列LCD_write_byte(0x80|X,0);//row行}LOGO2019/9/30此处添加公司信息19文字和图片取模----取模软件的使用LOGO2019/9/30此处添加公司信息20点击此处添加脚注信息LOGO2019/9/30此处添加公司信息LOGO2019/9/30此处添加公司信息22点击此处添加脚注信息{0x00,0x7C,0x12,0x11,0x12,0x7C},水平寻址(V=0)NOKIA5110一行可以显示14个字符,可以显示六行。LOGO2019/9/30此处添加公司信息先写上半字节后写下半字节。12X12的汉字LOGO关于课上几点错误的更正CE是低电平有效,低电平使能。LCD_CE=0的本质是因为只有在CE=0的情况下,5110才会在时钟信号的控制下工作。(时序图可以体现这一点)2019/9/30此处添加公司信息LOGO2019/9/3025发送一个字节的数据(改)voidLCD_write_byte(unsignedchardat,unsignedcharcommand){unsignedchari;LCD_CE=0;if(command==0)LCD_DC=0;elseLCD_DC=1;for(i=0;i8;i++){if(dat&0x80)SDIN=1;(串行数据输入)elseSDIN=0;SCLK=0;(总是从低电平开始读取一个数据所以要给低)dat=dat1;SCLK=1;(正边缘读取下一个数据,所以要给高)}LCD_CE=1;}灰色区域代表可以是高也可以是低。时序图的阅读方式正边沿读取下一位数据(datesheet里有写。)液晶各引脚的具体作用请见5110datasheet的P13页LOGO2019/9/30此处添加公司信息设置偏置电压的这一部分我没研究清楚,不过大家需要知道LCD_write_byte(0xcc,0);//设置偏置电压如果写成LCD_write_byte(0xff,0);则整个屏幕都会变黑小一点就淡一点大家可以通过实践去体会Datasheet里有具体的计算公式和详细说明,大家如果想要深入了解的请自习翻阅datasheet