找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3006|回复: 1
打印 上一主题 下一主题
收起左侧

液晶1602的外接函数-头文件的编写

[复制链接]
跳转到指定楼层
楼主
ID:197531 发表于 2017-9-6 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
只需要将要显示的数据进行小处理就可以

单片机源程序如下:
  1.         //亲测可用
  2.         #include <reg52.h>
  3.         #define uchar unsigned char
  4.         #define uint unsigned int
  5.         sbit lcden = P2^7;
  6.         sbit lcdrs = P2^6;           //数据命令选择端 为高时选择“数据” 为低时选择“命令”
  7.         sbit lcdrw = P2^5;           //读写选择端 通常给低电平,将数据写入,再显示
  8.         uchar code table1[]="   2017-7-29";          //12位
  9.         uchar code table2[]="      :  :";        //10位
  10.         uchar num;
  11.         uchar miao,fen,shi;          //定义三个变量:秒、分钟、小时
  12.         
  13.         void LCD_init();
  14.         void write_com(uchar);                //命令子函数(写指令)
  15.         void write_data(uchar);                //数据子函数
  16.         void write_sfm(uchar,uchar);
  17.         void delay(uint);

  18.         void main()
  19.         {
  20.                 LCD_init();

  21.                 while(1)
  22.                 {
  23. //                        miao = TIME[0];                 //将从1302寄存器中读到的时间赋给三个变量
  24. //                        fen  = TIME[1];                 //假设是35秒,则通过write_sfm函数将3和5拆开,分别显示
  25. //                        shi  = TIME[2];

  26. //实验
  27.                         miao = 25;          //少个分号,这咋整
  28.                         fen = 19;
  29.                         shi = 16;
  30.                         write_sfm(10,miao);          //以下三行就是对外的接口
  31.                         write_sfm(7,fen);
  32.                         write_sfm(4,shi);
  33.                 }
  34.                
  35.         }
  36.         /*******************************************************************************
  37.         * 函数名         : void delay(uint);
  38.         * 函数功能                 : 延时x ms
  39.         * 输入           : x
  40.         * 输出                  : 无
  41.         * 备注           : 无
  42.         *******************************************************************************/
  43.         void delay(uint x)                                              //延时xms
  44.         {
  45.             uint i,j;
  46.             for (i = x;i > 0;i--)
  47.                         for (j = 110;j > 0;j--);        
  48.         }

  49.         /*******************************************************************************
  50.         * 函数名         : void LCD_init();
  51.         * 函数功能                 : LCD的初始化设置
  52.         * 输入           : 无
  53.         * 输出                  : 无
  54.         * 备注           : 无
  55.         *******************************************************************************/
  56.         void LCD_init()
  57.         {
  58.                 lcden = 0;
  59.                 lcdrw = 0;
  60.                 write_com(0x38);
  61.                 write_com(0x0e);
  62.                 write_com(0x06);        //光标加一,为啥要加1呢
  63.                 write_com(0x01);
  64.                 write_com(0x80);
  65.                
  66.                 //效果:在第一行显示出2017-7-29字样,在第二行显示出16:19:25字样(实验结果成功)
  67.                 for (num = 0;num < 12;num++)   //首先输出
  68.                 {
  69.                         write_data(table1[num]);
  70.                         delay(20);
  71.                 }
  72.                 write_com(0x80+0x40);
  73.                 for (num = 0;num < 10;num++)   //首先输出
  74.                 {
  75.                         write_data(table2[num]);
  76.                         delay(20);
  77.                 }        
  78.         }        

  79.         /*******************************************************************************
  80.         * 函数名         : void write_com(uchar);
  81.         * 函数功能                 : 命令子函数(写指令)
  82.         * 输入           : com
  83.         * 输出                  : 无
  84.         * 备注           : 无
  85.         *******************************************************************************/
  86.         void write_com(uchar com)
  87.         {
  88.                 lcdrs = 0;
  89.                 P0 = com;        
  90.                 delay(5);
  91.                 lcden = 1;
  92.                 delay(5);
  93.                 lcden = 0;
  94.         }

  95.         /*******************************************************************************
  96.         * 函数名         : void write_data(uchar);
  97.         * 函数功能                 : 将数据写入LCD1602
  98.         * 输入           : date
  99.         * 输出                  : 无
  100.         * 备注           : 无
  101.         *******************************************************************************/
  102.         void write_data(uchar date)
  103.         {
  104.                 lcdrs = 1;
  105.                 P0 = date;           
  106.                 delay(5);                //延时5ms
  107.                 lcden = 1;                //一个高脉冲把数据读走
  108.                 delay (5);
  109.                 lcden = 0;
  110.         }

  111. ……………………

  112. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
液晶1602对外的接口函数.zip (34.36 KB, 下载次数: 18)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:754419 发表于 2020-5-18 00:25 | 只看该作者
很有用,谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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