标题: 液晶1602的外接函数-头文件的编写 [打印本页]

作者: 全力    时间: 2017-9-6 17:29
标题: 液晶1602的外接函数-头文件的编写
只需要将要显示的数据进行小处理就可以

单片机源程序如下:
  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)



作者: 520549lhx    时间: 2020-5-18 00:25
很有用,谢谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1