找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2354|回復(fù): 0
收起左側(cè)

單片機(jī)8位總線驅(qū)動(dòng)LCD1602

[復(fù)制鏈接]
ID:259435 發(fā)表于 2017-12-9 15:31 | 顯示全部樓層 |閱讀模式
  1. /*8位總線驅(qū)動(dòng)LCD1602*/

  2.     #include<reg52.h>

  3.     #defineuchar unsigned char

  4.     #defineuint unsigned int

  5.     #include<intrins.h>//延時(shí)時(shí)鐘周期時(shí)用到

  6.     sbitweixuan=P2^7;     //將兩個(gè)鎖存器關(guān)閉,防止數(shù)碼管顯示亂碼

  7.     sbitduanxuan=P2^6;

  8.     //sbitLCD_RW=P2^7;  //檢查忙位

  9.     sbitLCD_RS=P3^5;

  10.     sbitLCD_EN=P3^4;

  11.     ucharcode table[]="123456789ABCDEFG";

  12.     ucharcode table1[]="123456789ABCDEFG";

  13.     voiddelayxms(uint xms)    //延時(shí)X毫秒

  14.     {   

  15.         uinti,j;

  16.        for(i=0;i<xms;i++)

  17.            for(j=0;j<114;j++);

  18.     }   

  19. /*  voidread_LCD_busy() //檢查忙函數(shù)

  20.     {

  21.        LCD_RS=0;

  22.        LCD_RW=1;

  23.        IO7=1;  //I/O口寫1

  24.        LCD_EN=1;

  25.        while(IO7);    //等待液晶寫完

  26.        LCD_EN=0;

  27.     }      */

  28.     voiddelayxus(uint xus)  //延時(shí)X微秒

  29.     {   

  30.        uchari;

  31.        for(i=0;i<xus;i++)

  32.        {

  33.            _nop_();

  34.        }

  35.     }

  36.     voidwrite_LCD_CD(uchar cd,uchar CD)  //cd=0寫指令,cd=1寫數(shù)據(jù)

  37.     {

  38.        //read_LCD_busy();//檢查忙函數(shù)

  39.         delayxus(20);//最低延時(shí)(一定要在開頭有個(gè)延時(shí))

  40.        LCD_RS=cd;

  41.        P0=CD;

  42.        LCD_EN=1;            

  43.        LCD_EN=0;

  44.     }

  45.     voidLCD_init()    //initialization,液晶初始化

  46.     {

  47.        write_LCD_CD(0,0x38);    //顯示模式設(shè)置(16*2顯示,5*7點(diǎn)陣,4位數(shù)據(jù)接口)

  48.        write_LCD_CD(0,0x06);   // 寫一個(gè)字符后地址指針加1

  49.        write_LCD_CD(0,0x0c);    //設(shè)置開顯示,不顯示光標(biāo)

  50.        write_LCD_CD(0,0x01);    //顯示清屏,數(shù)據(jù)指針清0(清屏需要一定時(shí)間)

  51.        delayxus(80);//清屏?xí)r間

  52.     }

  53.     voidmain()

  54.     {

  55.        uchari;

  56.        duanxuan=0;

  57.        weixuan=0;

  58.        LCD_EN=0;

  59.        LCD_init();

  60.        write_LCD_CD(0,0x80);//數(shù)據(jù)地址指針,第一行

  61.        do

  62.        {

  63.            write_LCD_CD(1,table[ i]);  //寫數(shù)據(jù),data是編譯器關(guān)鍵詞

  64.            i++;

  65.        }

  66.        while(table[ i]!='\0');

  67.        i=0;

  68.        write_LCD_CD(0,0x80+0x40);//數(shù)據(jù)地址指針,第二行

  69.        do

  70.        {

  71.            write_LCD_CD(1,table1[ i]);  //寫數(shù)據(jù),data是編譯器關(guān)鍵詞   

  72.            i++;

  73.        }

  74.        while(table1[ i]!='\0');     //因?yàn)閠able是字符串

  75.        delayxms(2000);   

  76.        //write_LCD_CD(0,0x01);  //顯示清屏,數(shù)據(jù)指針清0     

  77.        //delayxus(80);

  78.        write_LCD_CD(0,0x0f);

  79.        write_LCD_CD(0,0x01);      

  80.        write_LCD_CD(0,0x80);      

  81.        while(1);  

  82.     }

復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表