×
接口总线驱动 > 总线 > 详情

LCD显示接口模块的程序设计

发布时间:2020-05-26 发布时间:
|
  低功耗方式Sleep,通过执行一条睡眠指令就进入低功耗方式。如果使能,MDT将被清0,但仍保持运行。TO(STUATUS<4>)位被置1,PD位(STUATUS<3>)被清0,振荡器驱动器被停止。所有I/O端口保持Sleep指令执行前它们所有的状态(驱动高、驱动低或高阻)。

  在这种方式时为使电流消耗最低,把所有的I/O引脚放在VDD或VSS电平上,以保证外部电路从I/O引脚、低功耗的A/D、不使能的外部时钟中拉出电流。为使电流消耗最低,TOCK1输入电平应该在VDD或VSS上。

  1.睡眠唤醒

  单片机通过下列事件之一唤醒睡眠:

  · 在MCLR引脚上的外部复位输入;

  · 监视定时器唤醒(如果WDT使能);

  · INT引脚中断、RB端口变化中断和一些外部中断。

  以下是能将单片机从睡眠中唤醒的外部中断:

  · PSP读或写;

  · TMR1中断,TIMERI必须作为一个异步计数器运行;

  · cap捕捉方式中断;

  · 特别事件触发器(TIMERI使用外部时钟异步方式,CCPI是用比较器模式);

  · SSP(START/STOP)位探测中断;

  · SSP用主从模式(SP2/12C)发送和接收;

  · USARTRX或TX(同步从模式);

  · A/D转换(当A/D时钟源是RC时);

  · E2PROM写操作完成。

  因为在睡眠期间,无片内时针出现,所以其他外部事件不能产生中断。当执行Sleep指令时,下一个指令(PC+1)被预取,对于通过中断事件唤醒的单片机,相应的中断使能位置1(使能),唤醒是不管GIE位的状态的。

  如果GIE位清0(不使能),单片机在Sleep指令之后连续执行指令。如果GIE位是置1的使能,单片机在Sleep指令之后执行指令,然后分支到中断地址(0004h)。如不期望执行紧跟在Sleep指令之后的指令,用户应该在Sleep指令之后加一个NOP指令。

  当全体中断不能维护任何中断或者已包括它的中断使能位和中断标志位是置1的时候,将发生下面之一。

  ①如果在Sleep指令执行之前发生中断,Sleep指令将作为一个NOP完成,因此WDT和WDT后分频器将不被清0,TD位将不会置1,PD位将不会清0。

  ②如果在Sleep指令执行期间或之后发生中断,单片机将立即唤醒睡眠,在唤醒之前Sleep指令将完全执行。因此,WDT和WDT后分频器将被清0,TD位将被置1,PD位将被清0。

  即使在执行Sleep指令之前标志位被检查,在Sleep指令完成之前标志位变成1也是可能的。为了决定Sleep指令是否执行,应该检测PD位,如果PD位置1,Sleep指令将作为NOP执行。为保证WDT清0,在Sleep指令之前应该执行CLRWDT指令。

  内部电路调试器:当设置字里的DEBUG位被编程为0时,内部电路调试器功能使能。当使用MPLAB时,这种功能允许简单的功能调试,当微处理机有这种使能功能时,其中一些资源通常是不可使用的。

  为了使用单片机的内部电路调试器功能,设计必须实现内部电路串行编程以连接MCLR/VPP、VDD、GND、R87和RB6。这样将内部电路调试器和微芯片或其他公司的开发工具连接。

  程序验证/代码保护:如果代码保护位不被编程,片内程序存储器可以被读出以便验证。

  识别码D存储单元:4个存储器单元被设定为ID存储单元,在这里用户可以储存检查其他代码识别数。这些存储单元在正常执行中是不可访问的,但在编程/修改期间是可读写的,推荐使用ID存储单元的低4位。

  内部电路串行编程:PlC16P877微处理器在应用电路结束时能够被串行编程。可用两根线作为时钟线和数据线,其他线用作电源、接地和编程电压线来简单地完成。

  当使用ICSP时,如果执行一个大量的擦除,部件必须用4.5~5.5V电压供电。这包括从一个打开状态到关闭状态两个的代码保护的重新编程。对于ICSP的所有其他情况,部件可以在通常操作电压下编程。这意味着振荡器值,独一无二的用户代码或用户码可以被重新编程或增加12。

  IS:低电压ICSP编程.

  设置LVP位使能低电压ICSP编程。这种模式允许微处理机在操作电压范围内使用一个vDD通过ICSP编程实现。这意味着Vpp不必带到VIHH,但在标准操作电压时能够替换。在这种模式里,RB3rPGM引脚被制定为编程功能和停止 个普通的I/O引脚。在编程期间,VDD应用到MCLR引脚。为了进入编程模式,必须应用RB3/PGM使LVP位置1。出厂时,LVP位的缺省值是1。

  如果低电压编程模式不能使,那么LVP位不能编程到0,RB3/PGM变成一个数字I/O引脚,然而,当在MCLP上用VIHH进入编程时,LVP位只可以被编程,当MCLR上使用高电压时,LVP位只可以被置1。

  应该注意,一旦LVP位编程到0,只有高电压编程模式可用于对单片机编程,

  当使用低电压ICSP时,如果执行一个大量的擦除,部件必须用4.5~5.5V电压供电。这包括从一个打开状态到关闭状态的两个代码保护的重新编程。对于ICSP的所有其他情况,部件可以在通常操作电压下被编程,这意味着振荡器值不变。用户代码或用户码叮以被重新编程或增加,

  SED152OFOA液晶显示驱动器有13条指令,下面以M680O系列MPU按口为例(RES=1),总结这些指令,如表所示。

  表  SED1520F0A的指令集

  下面以图所示的接口电路为例说明液晶显示分区情况.E1、E2是液晶显示的控制引脚,分别控制不同区域,下面只对E1控制区域的程序进行分析.

  图 液晶与PIC l6F877的接口

  2 程序设计

  在系统程序的初始化部分,应对程序中用到的寄存器和临时变量作如下说明。

  (1)定义程序中需要的全局变量。

  (2)系统各个口的输入输出状态初始化子程序。

  (3)读液晶显示器状态子程序。

  (4)对液晶显示器发送指令子程序(指令保存在TRANS寄存器中)。

  (5)对液晶显示器写数据了程序,其中数据保存在WRIte寄存器中。

  (6)开E1显示子程序

  (7)E1边清屏子程序。

  (8)关E1显示子程序

  有了以上的通用子程序,就可以构造出各种显示程序,如字符、汉宇、曲线等。执行这些程序前,必须对液晶显; J动进行初始化。初始化的顺序为:关显示→正常显示驱动设置→占空比设置→复位→ADC选择→清屏-开显示,程序如下。 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
详解DSP和FPGA在汽车电子中的广泛应用