找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5782|回复: 0
收起左侧

LCD1602在PIC单片机中的使用程序

[复制链接]
ID:75926 发表于 2015-4-3 01:34 | 显示全部楼层 |阅读模式
  1. #include<pic.h>
  2. __CONFIG(0x1832);        
  3. //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
  4. #define rs RA1
  5. #define rw RA2
  6. #define e  RA3
  7. const char web[ ]={' ','W','W','W','.','P','I','C','1','6','.','C','O','M',' ',' '};
  8. //显示公司web地址
  9. const char tel[ ]={'T','E','L','0','7','5','5','-','2','8','1','8','7','9','7','5'};
  10. //显示公司电话号码
  11. void init();                   //申明I/O口初始化函数
  12. void lcd_init();               //申明LCD初始化函数
  13. void write_web();              //申明显示公司web地址函数
  14. void write_tel();              //申明显示公司tel函数
  15. void write(char x);            //申明显示1字节数据函数
  16. void lcd_enable();             //申明LCD显示设置函数
  17. void delay();                  //申明延时函数
  18. //---------------------------------------
  19. //主函数
  20. void main()
  21. {
  22.     while(1)
  23.       {
  24.         init();                //调用I/O口初始化函数
  25.         lcd_init();            //调用LCD初始化函数
  26.         write_web();           //调用显示公司web地址函数
  27.         PORTD=0XC0;            //设置第2行显示地址
  28.         lcd_enable();          //调用LCD显示设置函数
  29.         write_tel();           //调用显示公司tel函数
  30.       }
  31. }

  32. //---------------------------------------
  33. //I/O口初始化函数
  34. void init()
  35. {
  36.     ADCON1=0X07;               //设置A口为普通I/O口
  37.     TRISA=0X00;                //设置A口为输出
  38.     TRISD=0X00;                //设置D口为输出
  39. }
  40. //---------------------------------------
  41. //LCD初始化函数
  42. void lcd_init()
  43. {
  44.     PORTD=0X1;                 //清除显示
  45.     lcd_enable();
  46.     PORTD=0X38;                //8位2行5*7点阵
  47.     lcd_enable();
  48.     PORTD=0X0e;                //显示开,光标开,闪烁
  49.     lcd_enable();
  50.     PORTD=0X06;                //文字不动,光标右移
  51.     lcd_enable();
  52.     PORTD=0X80;                //公司web显示地址
  53.     lcd_enable();
  54. }

  55. //--------------------------------------
  56. //显示公司web地址
  57. void write_web()
  58. {
  59.     int i;
  60.     for(i=0;i<0x10;i++)        //一共16字节数据
  61.        {
  62.          write(web[i]);        //查表获取数据并调用写一个字节数据函数送LCD显示
  63.        }
  64. }
  65. //--------------------------------------
  66. //显示公司tel函数
  67. void write_tel()
  68. {
  69.     int i;
  70.     for(i=0;i<0x10;i++)       //一共显示16字节数据
  71.        {
  72.          write(tel);       //查表获取数据并调用写一个字节数据函数送LCD显示
  73.        }
  74. }
  75.   
  76. //--------------------------------------
  77. //写一个字节数据函数  
  78. void write(char x)
  79. {
  80.   PORTD=x;                   //待显示数据送PORTD口
  81.   rs=1;                      //该字节数据为数据,而不是命令
  82.   rw=0;                      //此次操作为写,而不是读
  83.   e=0;                       //拉低使能信号
  84.   delay();                   //保持使能信号为低一段时间
  85.   e=1;                       //拉高使能信号,建立LCD操作所需要的上升沿
  86. }
  87. //--------------------------------------
  88. //LCD显示设置函数
  89. void lcd_enable()
  90. {
  91.    rs=0;                     //该字节数据为命令,而不是数据
  92.    rw=0;                     //此次操作为写,而不是读
  93.    e=0;                      //拉低使能信号
  94.    delay();                  //保持使能信号为低一段时间
  95.    e=1;                      //拉高使能信号,建立LCD操作所需要的上升沿
  96. }
  97. //--------------------------------------
  98. //延时函数
  99. void delay()
  100. {
  101.    int i;
  102.    for(i=0;i<5000;i++);
  103. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表