PIC单片机综合实例.ppt_第1页
PIC单片机综合实例.ppt_第2页
PIC单片机综合实例.ppt_第3页
PIC单片机综合实例.ppt_第4页
PIC单片机综合实例.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十三章综合实例,2019/12/5,机械工业出版社,Page2,【学习目标】,了解字符式液晶的显示原理;掌握字符式液晶的初始化方法;掌握根据时序图编程程序的方法;掌握LED点阵显示屏电路设计思想;理解汉字显示原理;掌握LED点阵显示屏的编程方法;掌握光耦的用途和控制方法;,2019/12/5,机械工业出版社,Page3,第十三章综合实例,2019/12/5,机械工业出版社,Page4,第十三章综合实例,2019/12/5,机械工业出版社,Page5,液晶分类,笔段式液晶字符式液晶图像式液晶汉字图像式液晶彩屏液晶,2019/12/5,机械工业出版社,Page6,字符式液晶模块,2019/12/5,机械工业出版社,Page7,16字符2行显示的字符液晶显示屏简介,内置HD44780控制器:可直接产生192种常见字符图形;字符编码与ASCII兼容,并且允许用户自编字符用于显示;只需单一的5V供电即可工作;重量轻:100g;体积小:11mm厚;功耗低:10-15mw;指令功能强:可组合成各种输入、显示、移位方式以满足不同的要求;接口简单方便:可与8位微处理器或微控制器相联;工作温度宽:-20-70;可靠性高:寿命为50,000小时(25)。,2019/12/5,机械工业出版社,Page8,硬件连接图,2019/12/5,机械工业出版社,Page9,引脚信号表,2019/12/5,机械工业出版社,Page10,寄存器选择功能表,2019/12/5,机械工业出版社,Page11,信号操作时序图,2019/12/5,机械工业出版社,Page12,关键信号时间宽度,2019/12/5,机械工业出版社,Page13,对于时间要求的说明,对于上表中的数据在用软件编写操作时序时必须遵守,否则可能无法完成正确操作。例如当PIC16F877主频为20MHz时,一条指令周期仅为0.2us,即200ns,这样在用程序实现此操作时序时在使能信号E置1后要延时3个指令周期(用C语言可以加入三个NOP函数),保证高电平持续时间大于使能信号脉冲宽度Tw的最小值450ns的要求。,2019/12/5,机械工业出版社,Page14,例题:求向液晶的数据寄存器写入A,题意分析:题目要求向液晶的数据寄存器写入内容。查前表可知,RS信号为1,R/W信号为0,根据图中的连接方法可知,RC5应输出1,RC6应输出0。当E信号产生一个脉冲后数据被打入到液晶的数据寄存器中。数据由PORTD提供,E信号由RC7提供。根据时序图可得到以上信号的输出顺序。用C语言描述如下。,2019/12/5,机械工业出版社,Page15,LCD_CMD_W_Timing()TRISD=0;/PORTD用于输出数据TRISC5=0;/RC5用于输出RS信号。TRISC6=0;/RC6用于输出R/W信号。TRISC7=0;/RC7用于输出E信号。RC7=1;/E信号初值是0RC5=1;/RS=1RC6=0;/R/W=0PORTD=A;/要打入的数据放到PORTD中RC7=1;/E信号由低变高,由于每条指令时200ns,已经保证了Tas要求。NOP();NOP();NOP();/三个NOP满足Tw最小时间宽度RC7=0;/E信号再由高变低,打入数据。由于数据早已经赋值,所以Tdsw肯定满足NOP();NOP();/满足TcycE最小时间长度要求。E由低变高执行至此已经消耗了1200ns(6条指令),2019/12/5,机械工业出版社,Page16,字符液晶的指令集,对字符液晶的控制命令就是通过的特定信号组合而成,下表列出了某种字符液晶能够识别的几条指令。更多内容请参考教材。,2019/12/5,机械工业出版社,Page17,指令集的实现,/向LCD写指令voidLCD_Write_CMD(unsignedcharLCD_CMD)LCD_DATA=LCD_CMD;LCD_CMD_W_Timing();DelayMS(1);,2019/12/5,机械工业出版社,Page18,向LCD写数据,/向LCD写数据voidLCD_Write_Data(unsignedcharLCD_CMD)LCD_DATA=LCD_CMD;LCD_DAT_W_Timing();DelayMS(1);,2019/12/5,机械工业出版社,Page19,向LCD输出一个字符,/向LCD输出一个字符voidLCD_Put_Char(unsignedcharLCD_Char)LCD_Write_Data(LCD_Char);,2019/12/5,机械工业出版社,Page20,字符液晶的初始化,液晶模块正确初始化后,即可接收命令来显示字符。,2019/12/5,机械工业出版社,Page21,字符显示,字符通过DDRAM(动态显示内存区)来显示,每个字符位都对应一个DDRAM地址。第一行地址:00、01、0F第二行地址:40、41、4F,2019/12/5,机械工业出版社,Page22,字符液晶能显示常见的数字、字母和英文标点,2019/12/5,机械工业出版社,Page23,常用函数的实现:Set_Cursor,/设置显示坐标/Row=(0or1)/Column=(0to15)voidLCD_Set_Cursor(unsignedcharRow,unsignedcharColumn)LCD_Write_CMD(DD_RAM_BASE+Row*0 x40+Column);DelayMS(1);,2019/12/5,机械工业出版社,Page24,向LCD输出字符串,字符串在RAM中,voidLCD_Put_String(char*Str)unsignedcharStr_Temp;while(1)Str_Temp=*Str;if(Str_Temp!=0 x00)LCD_Write_Data(Str_Temp);Str+;elsereturn;,2019/12/5,机械工业出版社,Page25,第十三章综合实例,2019/12/5,机械工业出版社,Page26,2019/12/5,机械工业出版社,Page27,典型LED点阵显示屏电路设计,LED点阵显示屏的基本显示元件是88LED显示块,如图所示。其原理与数码管类似,由64个LED排成8行8列。同一行的LED阴极连在一起;同一列的LED阳极连在一起。,2019/12/5,机械工业出版社,Page28,要在88LED显示屏上显示字母E,2019/12/5,机械工业出版社,Page29,用0代表灭的点,用1代表亮的点,00000000001111000010000000111100001000000010000000111100000000000 x0,0 x3C,0 x20,0 x3C,0 x20,0 x20,0 x3C,0 x0;,2019/12/5,机械工业出版社,Page30,编程控制88显示屏K1显示字母E的字形,2019/12/5,机械工业出版社,Page31,题意分析,H0到H7表示行选信号,用PORTD控制。在实际电路中由于LED显示块耗电量比较大,单片机无法直接驱动太多的显示块。所以在实际电路中应该为每个行选信号上加入驱动电路。L0到L7是用来显示每行的字形数据端口,通过PORTB输出。要想显示E的字形,根据扫描法思想,就是先把表示E字形的第一行二进制数送L0到L7,而后仅点亮第1行;依次再把表示E字形的第二行二进制数送L0到L7,而后仅点亮第2行;.。,2019/12/5,机械工业出版社,Page32,关键代码,constunsignedcharZiXing8=0 x0,0 x3C,0 x20,0 x3C,0 x20,0 x20,0 x3C,0 x0;#defineLIE_DIRTRISB/列端口方向位,#defineLIE_PORTPORTB/列端口#defineHANG_DIRTRISD/行端口方向位,#defineHANG_PORTPORTD/行端口for(Hang=0;Hang8;Hang+)LIE_PORT=ZiXingHang;/字形码送列端口显示HANG_PORT=(unsignedchar)1Hang);/指定行DelayMS(2);/短暂延时造成视觉暂留现象HANG_PORT=0b11111111;/在送新数据前关闭显示,2019/12/5,机械工业出版社,Page33,显示汉字的原理,2019/12/5,机械工业出版社,Page34,“中”的字型码,0 x01,0 x00,0 x01,0 x00,0 x21,0 x08,0 x3F,0 xFC,0 x21,0 x08,0 x21,0 x08,0 x21,0 x08,0 x21,0 x08,0 x21,0 x08,0 x3F,0 xF8,0 x21,0 x08,0 x01,0 x00,0 x01,0 x00,0 x01,0 x00,0 x01,0 x00,0 x01,0 x00;,2019/12/5,机械工业出版社,Page35,行译码电路:4-16译码器,2019/12/5,机械工业出版社,Page36,列电路:串联的移位寄存器,2019/12/5,机械工业出版社,Page37,组合后的电路,2019/12/5,机械工业出版社,Page38,实例:在LED点阵显示屏上显示汉字,题意分析由于PIC单片机具有硬件的移位输出接口SPI,所以本例中列信号L0:L15由DS、SH_CP和ST_CP控制。DS和SH_CP分别连接到PIC硬件SPI模块的SDO和SCK引脚。ST_CP由RC1控制,出现上升沿时74HC595的移位寄存器内容才会输出到其输出引脚上。CS_N由RC0控制。由此可见C口的控制信号都是输出状态即可。行选择信号H0:H15由DB0:DB3和CS_N控制。DB3:DB0用RD3:RD0控制,所以PORTD应为输出状态。,2019/12/5,机械工业出版社,Page39,题意分析续,要想显示汉字“中”的字形,根据扫描法思想,把表示“中”字字形码数组的第一和第二个字节依次输出到L0:L15,这可以通过SPI方式顺序发送字形码数组中的前两个字节来实现;而后仅点亮第1行;再把字形码数组的第三和第四个字节通过SPI方式发送到L0:L15,而后仅点亮第2行;.。,2019/12/5,机械工业出版社,Page40,关键代码,#defineCTRL_DIRTRISC/控制字节方向位,#defineCTRLBYTEPORTC/控制字节#defineSH_CPRC3/shiftclcokpluse移位时钟#defineDSRC5/SerialData串行数据#defineST_CPRC1/storeclockpluse锁存脉冲,下降沿锁存#defineCS_NRC0/74138片选信号,低电平有效#defineLINESELPORTD/行选择,低4位有效#defineLINESEL_DIRTRISD/行选择方向位,2019/12/5,机械工业出版社,Page41,SPIInit(),voidSPIInit()TRISC3=0;/RC3/SCK为输出TRISC5=0;/RC5/SDO为输出TRISC1=0;/RC1用来控制74HC595的锁存信号SSPIF=0;/清空标志位CKE=0;/上升沿发送数据,为了与74HC595时序匹配CKP=1;/空闲为高电平SSPEN=1;/使能MSSP模块SSPM3=0;SSPM2=0;SSPM1=1;SSPM0=0;/SSPM=0010,工作模式为SPI主控,2019/12/5,机械工业出版社,Page42,SPISend,voidSPISend(unsignedchardata)SSPBUF=data;/把要发送的数据放在SSPBUF中while(SSPIF=0)/SSPIF为0说明未发送完成/循环退出说明发送完毕SSPIF=0;/SSPIF必须手动清零,2019/12/5,机械工业出版社,Page43,显示字形的代码,for(Line=0;Line16;Line+)SPISend(ZiXingLine1);/低八位SPISend(ZiXing(Line1)+1);/高八位LINESEL=Line;/选择要显示的行ST_CP=1;/产生上升沿使595芯片输出数据ST_CP=0;/回到低电平,为下次上升沿做准备CS_N=0;/使能74LS138芯片输出DelayMS(2);/延时产生视觉暂留现象CS_N=1;/关闭74LS138芯片输出,2019/12/5,机械工业出版社,Page44,第十三章综合实例,2019/12/5,机械工业出版社,Page45,电子密码锁控制器:需求分析,不需要钥匙,开锁者输入密码即可控制锁打开,锁的关闭是手动或自动的;开锁者有权利修改自己的密码;为了防止开锁者穷举密码,密码输入错误三次后即报警,5分钟后方能继续使用;为了提示开锁者正确操作,应该用显示设备输出相关提示信息;当开锁者有误操作时应该有声音警告;电池供电;,2019/12/5,机械工业出版社,Page46,硬件设备需求,为了输入密码,需要设计按键输入电路,为了提高安全性,又考虑到密码锁的空间,一般的系统都是数字密码,这里可以采用44矩阵键盘来实现。为了防止断电后密码丢失,需要把用户密码记录在非易失性存储器中,例如EEPROM中。由于PIC单片机大都内置EEPROM,可以省略外挂EEPROM。为了实现报警和误操作提示,可以采用简单的声音报警。为了降低成本,一般采用简单的5V压电式蜂鸣器来实现声音的播放,这种蜂鸣器驱动电流在10mA左右,用PIC单片机的I/O引脚可以直接驱动。,2019/12/5,机械工业出版社,Page47,硬件设备需求续,由于提示信息由很多种。为了能让使用者看明白,这里采用字符式液晶来显示,在实际应用中,读者可以购买内置中文字库的液晶来代替字符式液晶。单纯的电子锁的种类很多,但其控制原理都是通过输入信号的导通和断开来实现锁的开关,一般的电子锁都需要10V乃至更高的驱动电压。这样无法用一个I/O引脚直接驱动,需要外加适当的隔离和驱动电路控制。电池供电的系统一般都要求低功耗,本系统对速度要求不高,所以可采用38.768KHz的低主频晶振作为系统主频。,2019/12/5,机械工业出版社,Page48,硬件设备需求续,需要一片单片机来完成各种设备之间的逻辑控制,由于本书以PIC16F877为例讲解,这里就采用PIC16F877,在具体项目,可根据I/O引脚等特殊需求选择其它款PIC单片机。例如本项目中要求有矩阵键盘输入、字符液晶输出,这样所用引脚大约22个左右(不考虑引脚复用情况下)。为了给将来的升级留出余地,建议选择28脚的单片机。为了适应电池供电,建议采用低功耗型号。为了记录密码,最好有内置EEPROM。为了简化电路设计,最好I/O引脚可以直接驱动蜂鸣器。综上所述,可以选择PIC16F886单片机。,2019/12/5,机械工业出版社,Page49,硬件设计,密码键盘部分电路的设计;字符液晶部分电路的设计;锁控制部分电路的设计;发声部分电路的设计,2019/12/5,机械工业出版社,Page50,密码键盘部分电路的设计;,2019/12/5,机械工业出版社,Page51,字符液晶部分电路的设计,2019/12/5,机械工业出版社,Page52,锁控制部分电路的设计;,2019/12/5,机械工业出版社,Page53,发声部分电路的设计,2019/12/5,机械工业出版社,Page54,软件设计,2019/12/5,机械工业出版社,Page55,题意分析,程序的主循环应该是等待用户的按键输入。为了简单起见,设定密码为6位数字。使用前文完成的函数GetKeyValue即可获得输入的键值。而后根据键值来决定下一步的动作。输入的按键有五种情况:第一种是0到9之间的数字,应将其按顺序作为密码的一部分并在液晶上显示“*”号;第二种是退格按键,在密码内容中应删除上次输入的数字,显示上也应退一格并删除一个“*”号;第三种是确定键,表示密码输入完毕,进入密码比较流程;当密码匹配时则发出开锁信号,否则显示错误信息并用声音提示,当连续输入三次密码不对,则长时间发声报警。过一段时间后方能继续重试密码;第四种是修改密码键,只有密码输入正确开锁后才有效,其它状态时无效按键,无效时按下应通过声音提示用户输入错误。修改密码过程与输入密码过程类似;第五种是C、D和E键,本系统中未用到这几个键,应提示用户输入错误;,2019/12/5,机械工业出版社,Page56,题意分析续,为了防止系统掉电,用户的密码应该保存在非易失性存储器中,本例中直接保存在PIC单片机内部的EEPROM中即可,HT-PIC有专用的内部EEPROM读写函数eeprom_read和eeprom_write,很容易实现EEPROM的存取。在系统初始化时需要从EEPROM读取掉电前的用户密码,用于与开锁者输入的密码做比较。密码修改成功后,新密码应该写入EEPROM;,2019/12/5,机械工业出版社,Page57,题意分析续,本设计中采用字符式液晶作为显示界面,应该通过液晶模块显示每一次操作的提示语

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论