《ic单片机综合实例》由会员分享,可在线阅读,更多相关《ic单片机综合实例(62页珍藏版)》请在金锄头文库上搜索。
1、第十三章 综合实例,2019/1/15,机械工业出版社,Page 2,【学习目标】,了解字符式液晶的显示原理; 掌握字符式液晶的初始化方法; 掌握根据时序图编程程序的方法; 掌握LED点阵显示屏电路设计思想; 理解汉字显示原理; 掌握LED点阵显示屏的编程方法; 掌握光耦的用途和控制方法;,2019/1/15,机械工业出版社,Page 3,第十三章 综合实例,2019/1/15,机械工业出版社,Page 4,第十三章 综合实例,2019/1/15,机械工业出版社,Page 5,液晶分类,笔段式液晶 字符式液晶 图像式液晶 汉字图像式液晶 彩屏液晶,2019/1/15,机械工业出版社,Page
2、6,字符式液晶模块,2019/1/15,机械工业出版社,Page 7,16字符2行显示的字符液晶显示屏简介,内置HD44780控制器:可直接产生192种常见字符图形; 字符编码与ASCII兼容,并且允许用户自编字符用于显示; 只需单一的5V供电即可工作; 重量轻:100g; 体积小:11mm厚; 功耗低:10 - 15 mw; 指令功能强:可组合成各种输入、显示、移位方式以满足不同的要求; 接口简单方便:可与8位微处理器或微控制器相联; 工作温度宽:-20 - 70; 可靠性高:寿命为50,000小时(25)。,2019/1/15,机械工业出版社,Page 8,硬件连接图,2019/1/15,
3、机械工业出版社,Page 9,引脚信号表,2019/1/15,机械工业出版社,Page 10,寄存器选择功能表,2019/1/15,机械工业出版社,Page 11,信号操作时序图,2019/1/15,机械工业出版社,Page 12,关键信号时间宽度,2019/1/15,机械工业出版社,Page 13,对于时间要求的说明,对于上表中的数据在用软件编写操作时序时必须遵守,否则可能无法完成正确操作。例如当PIC16F877主频为20MHz时,一条指令周期仅为0.2us,即200ns,这样在用程序实现此操作时序时在使能信号E置1后要延时3个指令周期(用C语言可以加入三个NOP函数),保证高电平持续时间
4、大于使能信号脉冲宽度Tw的最小值450ns的要求。,2019/1/15,机械工业出版社,Page 14,例题:求向液晶的数据寄存器写入A,题意分析: 题目要求向液晶的数据寄存器写入内容。查前表 可知,RS信号为1,R/W信号为0,根据图中的连接方法可知,RC5应输出1,RC6应输出0。当E信号产生一个脉冲后数据被打入到液晶的数据寄存器中。数据由PORTD提供,E信号由RC7提供。 根据时序图可得到以上信号的输出顺序。用C语言描述如下。,2019/1/15,机械工业出版社,Page 15,LCD_CMD_W_Timing () TRISD=0; /PORTD用于输出数据 TRISC5=0; /R
5、C5用于输出RS信号。 TRISC6=0; /RC6用于输出R/W信号。 TRISC7=0; /RC7用于输出E信号。 RC7 = 1 ; / E信号初值是0 RC5 = 1 ; / RS=1 RC6 = 0 ; / R/W=0 PORTD = A ; / 要打入的数据放到PORTD中 RC7 = 1 ; / E信号由低变高,由于每条指令时200ns,已经保证了Tas要求。 NOP(); NOP(); NOP(); / 三个NOP满足Tw最小时间宽度 RC7 = 0 ; / E信号再由高变低,打入数据。由于数据早已经赋值,所以Tdsw肯定满足 NOP(); NOP(); / 满足TcycE最小
6、时间长度要求。E由低变高执行至此已经消耗了1200ns(6条指令) ,2019/1/15,机械工业出版社,Page 16,字符液晶的指令集,对字符液晶的控制命令就是通过的特定信号组合而成,下表列出了某种字符液晶能够识别的几条指令。更多内容请参考教材。,2019/1/15,机械工业出版社,Page 17,指令集的实现,/向LCD写指令 void LCD_Write_CMD( unsigned char LCD_CMD) LCD_DATA= LCD_CMD; LCD_CMD_W_Timing () ; DelayMS(1) ; ,2019/1/15,机械工业出版社,Page 18,向LCD写数据,
7、/向LCD写数据 void LCD_Write_Data( unsigned char LCD_CMD) LCD_DATA= LCD_CMD; LCD_DAT_W_Timing() ; DelayMS(1) ; ,2019/1/15,机械工业出版社,Page 19,向LCD输出一个字符,/向LCD输出一个字符 void LCD_Put_Char(unsigned char LCD_Char) LCD_Write_Data(LCD_Char) ; ,2019/1/15,机械工业出版社,Page 20,字符液晶的初始化,液晶模块正确初始化后,即可接收命令来显示字符。,2019/1/15,机械工业出
8、版社,Page 21,字符显示,字符通过DDRAM(动态显示内存区)来显示,每个字符位都对应一个DDRAM地址。 第一行地址:00、01、0F 第二行地址:40、41、4F,2019/1/15,机械工业出版社,Page 22,字符液晶能显示常见的数字、字母和英文标点,2019/1/15,机械工业出版社,Page 23,常用函数的实现:Set_Cursor,/设置显示坐标 /Row = (0 or 1) /Column = ( 0 to 15) void LCD_Set_Cursor(unsigned char Row, unsigned char Column) LCD_Write_CMD(D
9、D_RAM_BASE + Row * 0x40 + Column); DelayMS(1); ,2019/1/15,机械工业出版社,Page 24,向LCD输出字符串,字符串在RAM中,void LCD_Put_String( char *Str) unsigned char Str_Temp; while (1) Str_Temp = *Str ; if (Str_Temp != 0x00 ) LCD_Write_Data(Str_Temp) ; Str + ; else return ; ,2019/1/15,机械工业出版社,Page 25,第十三章 综合实例,2019/1/15,机械工业
10、出版社,Page 26,2019/1/15,机械工业出版社,Page 27,典型LED点阵显示屏电路设计,LED点阵显示屏的基本显示元件是88LED显示块,如图所示。其原理与数码管类似,由64个LED排成8行8列。同一行的LED阴极连在一起;同一列的LED阳极连在一起。,2019/1/15,机械工业出版社,Page 28,要在88LED显示屏上显示字母E,2019/1/15,机械工业出版社,Page 29,用0代表灭的点,用1代表亮的点,00000000 00111100 00100000 00111100 00100000 00100000 00111100 00000000 0x0,0x3
11、C,0x20,0x3C,0x20,0x20,0x3C,0x0;,2019/1/15,机械工业出版社,Page 30,编程控制88显示屏K1显示字母E的字形,2019/1/15,机械工业出版社,Page 31,题意分析,H0到H7表示行选信号,用PORTD控制。在实际电路中由于LED显示块耗电量比较大,单片机无法直接驱动太多的显示块。所以在实际电路中应该为每个行选信号上加入驱动电路。 L0到L7是用来显示每行的字形数据端口,通过PORTB输出。 要想显示E的字形,根据扫描法思想,就是先把表示E字形的第一行二进制数送L0到L7,而后仅点亮第1行;依次再把表示E字形的第二行二进制数送L0到L7,而后
12、仅点亮第2行; 。,2019/1/15,机械工业出版社,Page 32,关键代码,const unsigned char ZiXing8= 0x0,0x3C,0x20,0x3C,0x20,0x20,0x3C,0x0 ; #define LIE_DIR TRISB / 列端口方向位, #define LIE_PORT PORTB / 列端口 #define HANG_DIR TRISD / 行端口方向位, #define HANG_PORT PORTD / 行端口 for(Hang=0;Hang8;Hang+) LIE_PORT=ZiXingHang; /字形码送列端口显示 HANG_PORT=
13、(unsigned char)1Hang); /指定行 DelayMS(2); /短暂延时造成视觉暂留现象 HANG_PORT=0b11111111; /在送新数据前关闭显示 ,2019/1/15,机械工业出版社,Page 33,显示汉字的原理,2019/1/15,机械工业出版社,Page 34,“中”的字型码,0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08, 0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x
14、01,0x00,0x01,0x00;,2019/1/15,机械工业出版社,Page 35,行译码电路:4-16译码器,2019/1/15,机械工业出版社,Page 36,列电路:串联的移位寄存器,2019/1/15,机械工业出版社,Page 37,组合后的电路,2019/1/15,机械工业出版社,Page 38,实例:在LED点阵显示屏上显示汉字,题意分析 由于PIC单片机具有硬件的移位输出接口SPI,所以本例中列信号L0:L15由DS、SH_CP和ST_CP控制。DS和SH_CP分别连接到PIC硬件SPI模块的SDO和SCK引脚。ST_CP由RC1控制,出现上升沿时74HC595的移位寄存器
15、内容才会输出到其输出引脚上。CS_N由RC0控制。由此可见C口的控制信号都是输出状态即可。 行选择信号H0:H15由DB0:DB3和CS_N控制。DB3:DB0用RD3:RD0控制,所以PORTD应为输出状态。,2019/1/15,机械工业出版社,Page 39,题意分析续,要想显示汉字“中”的字形,根据扫描法思想,把表示“中”字字形码数组的第一和第二个字节依次输出到L0:L15,这可以通过SPI方式顺序发送字形码数组中的前两个字节来实现;而后仅点亮第1行;再把字形码数组的第三和第四个字节通过SPI方式发送到L0:L15,而后仅点亮第2行; 。,2019/1/15,机械工业出版社,Page 4
16、0,关键代码,#define CTRL_DIR TRISC / 控制字节方向位, #define CTRLBYTE PORTC / 控制字节 #define SH_CP RC3 /shift clcok pluse 移位时钟 #define DS RC5 /Serial Data 串行数据 #define ST_CP RC1 /store clock pluse 锁存脉冲, 下降沿锁存 #define CS_N RC0 / 74138片选信号,低电平有效 #define LINESEL PORTD /行选择,低4位有效 #define LINESEL_DIR TRISD /行选择方向位,2019/1/15,机械工业出版社,Page 41,SPIInit(),void SPIInit() TRISC3=0; / RC3/SCK为输出 TR