您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制PIC16F783A控制1602型LCD的C程序 正文
PIC16F783A控制1602型LCD的C程序

PIC16F783A控制1602型LCD的C程序

点击数:7384 次   录入时间:03-04 11:56:46   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  1.1602液晶屏初始化和C程序流程图
  
  用PIC单片机控制1602型LCD的C程序由两部分组成,前半部分主要完成对1602液晶屏的初始化配置工作.常称对LCD初始化,其程序流程如下左图所示。
  
  后半部分为控制显示(O~99)部分,其程序流程如下右图所示。

  2.PIC16F783A控制1602型LCD的C程序
  
  根据上图所示流程图,利用C语言编辑的源程序,命名为PIC08.e,其清单如下:
  
  #include<PIC.h>∥包含头文件#definePORTAIT(add,bit)((unsigned)(&add)*8+



www.55dianzi.com

  说明:
  
  (1)上述PIC16F837A控制LCD显示C程序是成功的,完全,可以执行。读者只需将PIC08.e源程序在MPLABIDE7.4(或以上版本)环境下利用PICe编译器进行编译,生成目标码(.hex),即可进行0—99的显示。
  
  (2)源程序成功编译后,读者还可以在MPLABIDE环境下对该程序进行模拟仿真调试,通过模拟仿真,可清楚看出程序从主函数main()开始一步一步运行的过程,清楚看出LCD的初始化过程.在初始化全部完成之后.程序才进入0—99的增量秒显示过程。这对初学者学习C语言程序有很大的帮助。
  
  (3)上述C程序中的while(1)语句:

  其Sendlcd(Ox87,j+Ox30);提取十位X增量值中的Ox87.代表LCD第一行(每行16个方块)显示的地址,“8”代表第一行;“7”代表第7个方块的位置;j+Ox30代表LCD字符库即表4地址中的值。例如;当x++;其值为4时,则j=4,j+Ox30=Ox34,表4中的地址Ox34其显示值即为4,这正是要显示的值4。所以Sendlcd的形参数:Ox87,j+Ox30就代表在LCD的第一行第几个方块上应显示值为4。
  
  同理,在Sendlcd(Ox88,j+Ox30);提取个位X增量值中的Ox88,代表LCD第一行(每行16个方块)显示的地址,前一个8代表第一行;另一个8代表第8个方块的位置,j+Ox30代表的意义与上述相同,不过这里是个位值。
  
  此外.如果要求LCD有第2行显示(本例是0—99仅一行显示),则在显示第二行时,应将Ox88改为Oxc8,即C代表LCD的第二行,而8代表是第8个方块的位置。
  
  (4)上述C程序,在主函数VoiDMAin()A、B、C和D;PIC16F873A的PORTC,PORTA的初始化之后的四条代码:

  代表1602液晶屏的内部初始化指令.它们共用一个写指令函数:Void Sendlcd_ Command  (unsignad char co mmand);当程序运行时,首先是分别调用上述A、B、C和D指令,然后分别共同进入写指令函数,以完成初始化功能。初始化指令完成之后,才进入循环语句while(1),以提取十位和个位的X++;增量显示值。
  
  上述过程均可以在MPLAB IDE模拟仿真中观察到。读者可以通过程序中各代码的注释,加上以上说明,基本掌握PIC单片机控制LCD显示器的技术和方法。




本文关键字:程序  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制