標(biāo)題: 液晶1602的外接函數(shù)-頭文件的編寫 [打印本頁]

作者: 全力    時(shí)間: 2017-9-6 17:29
標(biāo)題: 液晶1602的外接函數(shù)-頭文件的編寫
只需要將要顯示的數(shù)據(jù)進(jìn)行小處理就可以

單片機(jī)源程序如下:
  1.         //親測(cè)可用
  2.         #include <reg52.h>
  3.         #define uchar unsigned char
  4.         #define uint unsigned int
  5.         sbit lcden = P2^7;
  6.         sbit lcdrs = P2^6;           //數(shù)據(jù)命令選擇端 為高時(shí)選擇“數(shù)據(jù)” 為低時(shí)選擇“命令”
  7.         sbit lcdrw = P2^5;           //讀寫選擇端 通常給低電平,將數(shù)據(jù)寫入,再顯示
  8.         uchar code table1[]="   2017-7-29";          //12位
  9.         uchar code table2[]="      :  :";        //10位
  10.         uchar num;
  11.         uchar miao,fen,shi;          //定義三個(gè)變量:秒、分鐘、小時(shí)
  12.         
  13.         void LCD_init();
  14.         void write_com(uchar);                //命令子函數(shù)(寫指令)
  15.         void write_data(uchar);                //數(shù)據(jù)子函數(shù)
  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寄存器中讀到的時(shí)間賦給三個(gè)變量
  24. //                        fen  = TIME[1];                 //假設(shè)是35秒,則通過write_sfm函數(shù)將3和5拆開,分別顯示
  25. //                        shi  = TIME[2];

  26. //實(shí)驗(yàn)
  27.                         miao = 25;          //少個(gè)分號(hào),這咋整
  28.                         fen = 19;
  29.                         shi = 16;
  30.                         write_sfm(10,miao);          //以下三行就是對(duì)外的接口
  31.                         write_sfm(7,fen);
  32.                         write_sfm(4,shi);
  33.                 }
  34.                
  35.         }
  36.         /*******************************************************************************
  37.         * 函數(shù)名         : void delay(uint);
  38.         * 函數(shù)功能                 : 延時(shí)x ms
  39.         * 輸入           : x
  40.         * 輸出                  : 無
  41.         * 備注           : 無
  42.         *******************************************************************************/
  43.         void delay(uint x)                                              //延時(shí)xms
  44.         {
  45.             uint i,j;
  46.             for (i = x;i > 0;i--)
  47.                         for (j = 110;j > 0;j--);        
  48.         }

  49.         /*******************************************************************************
  50.         * 函數(shù)名         : void LCD_init();
  51.         * 函數(shù)功能                 : LCD的初始化設(shè)置
  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);        //光標(biāo)加一,為啥要加1呢
  63.                 write_com(0x01);
  64.                 write_com(0x80);
  65.                
  66.                 //效果:在第一行顯示出2017-7-29字樣,在第二行顯示出16:19:25字樣(實(shí)驗(yàn)結(jié)果成功)
  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.         * 函數(shù)名         : void write_com(uchar);
  81.         * 函數(shù)功能                 : 命令子函數(shù)(寫指令)
  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.         * 函數(shù)名         : void write_data(uchar);
  97.         * 函數(shù)功能                 : 將數(shù)據(jù)寫入LCD1602
  98.         * 輸入           : date
  99.         * 輸出                  : 無
  100.         * 備注           : 無
  101.         *******************************************************************************/
  102.         void write_data(uchar date)
  103.         {
  104.                 lcdrs = 1;
  105.                 P0 = date;           
  106.                 delay(5);                //延時(shí)5ms
  107.                 lcden = 1;                //一個(gè)高脈沖把數(shù)據(jù)讀走
  108.                 delay (5);
  109.                 lcden = 0;
  110.         }

  111. ……………………

  112. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
液晶1602對(duì)外的接口函數(shù).zip (34.36 KB, 下載次數(shù): 18)



作者: 520549lhx    時(shí)間: 2020-5-18 00:25
很有用,謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1