久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4186|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)任意2個(gè)IO口(2線(xiàn)制)驅(qū)動(dòng)LCD1602(包含4線(xiàn)制編程提供參考)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
只需要2根線(xiàn)就能驅(qū)動(dòng)1602的方法
1、單片機(jī)通過(guò)IICPCF8574進(jìn)行通信。
寫(xiě)好IIC通信程序可以查找
2、單片機(jī)4線(xiàn)制驅(qū)動(dòng)1602
其中P0口的高四位接到LCD1602的DB7-DB4,P3.0-P3.1分別接RS,R/W,E;
下面給出驅(qū)動(dòng)源程序(2個(gè)程序僅供參考有些許沒(méi)完善請(qǐng)自行修改)
兩個(gè)4線(xiàn)制程序(不完美).zip (2.38 KB, 下載次數(shù): 29)
4線(xiàn)制驅(qū)動(dòng)方式需要7個(gè)IO口(RSRWE4條數(shù)據(jù)線(xiàn)),而PCF8574提供了8位準(zhǔn)雙向口,所以管腳還有剩余。
2線(xiàn)驅(qū)動(dòng)電路圖

效果圖

實(shí)物圖

Proteus仿真

程序
#include <reg52.h>
#include <intrins.h>
sbit SCL = P3^0;
sbit SDA = P3^1;
bit ack;
unsigned char LCD_data;
unsigned char code digit[ ]={"0123456789"}; //定義字符數(shù)組顯示數(shù)字
//*****************延時(shí)************************
void delay_nus(unsigned int n) //N us延時(shí)函數(shù)
{
        unsigned int i=0;
                for (i=0;i<n;i++)
                        _nop_();
}
void delay_nms(unsigned int n) //N ms延時(shí)函數(shù)
{
        unsigned int i,j;
                for (i=0;i<n;i++)
                        for (j=0;j<1140;j++);
}
void nop4()
{
         _nop_();     //等待一個(gè)機(jī)器周期
         _nop_();     //等待一個(gè)機(jī)器周期
         _nop_();     //等待一個(gè)機(jī)器周期
         _nop_();     //等待一個(gè)機(jī)器周期
}
//***************************************
void Start()
{
        SDA=1;
    _nop_();
    SCL=1;
        nop4();
    SDA=0;
        nop4();
    SCL=0;
    _nop_();
        _nop_();
}
void Stop()
{
        SDA=0;
    _nop_();       
        SCL=0;
        nop4();//>4usSCL跳變
        SCL=1;
        nop4();
        SDA=1;
    _nop_();
    _nop_();
}
//******************************************
void  Write_A_Byte(unsigned char c)
{
unsigned char BitCnt;
  for(BitCnt=0;BitCnt<8;BitCnt++)  //要傳送的數(shù)據(jù)長(zhǎng)度為8
    {
     if((c<<BitCnt)&0x80)  SDA=1;   //判斷發(fā)送位
     else  SDA=0;               
     _nop_();
     SCL=1;               //置時(shí)鐘線(xiàn)為高,通知被控器開(kāi)始接收數(shù)據(jù)位
     nop4();
     _nop_();      
     SCL=0;
    }  
    _nop_();
    _nop_();
    SDA=1;               //8位發(fā)送完后釋放數(shù)據(jù)線(xiàn),準(zhǔn)備接收應(yīng)答位
    _nop_();
    _nop_();  
    SCL=1;
    _nop_();
    _nop_();
    _nop_();
    if(SDA==1)ack=0;     
       else ack=1;        //判斷是否接收到應(yīng)答信號(hào)
    SCL=0;
    _nop_();
    _nop_();
}
bit Write_Random_Address_Byte(unsigned char add,unsigned char dat)
{
        Start();    //啟動(dòng)總線(xiàn)
        Write_A_Byte(add); //發(fā)送器件地址
    if(ack==0)return(0);
        Write_A_Byte(dat);   //發(fā)送數(shù)據(jù)
    if(ack==0)return(0);
        Stop(); //結(jié)束總線(xiàn)
    return(1);
}
//********************液晶屏使能*********************
void Enable_LCD_write()
{
    LCD_data|=(1<<(3-1));//E=1;
    Write_Random_Address_Byte(0x40,LCD_data);
    delay_nus(2);
    LCD_data&=~(1<<(3-1));//E=0;
    Write_Random_Address_Byte(0x40,LCD_data);
}
//*************寫(xiě)命令****************************
void LCD_write_command(unsigned char command)
{
        delay_nus(16);
        LCD_data&=~(1<<(1-1));//RS=0;
        LCD_data&=~(1<<(2-1));//RW=0;
    Write_Random_Address_Byte(0x40,LCD_data);
        LCD_data&=0X0f; //清高四位
        LCD_data|=command & 0xf0; //寫(xiě)高四位
    Write_Random_Address_Byte(0x40,LCD_data);
    Enable_LCD_write();
        command=command<<4; //低四位移到高四位
        LCD_data&=0x0f; //清高四位
        LCD_data|=command&0xf0; //寫(xiě)低四位
    Write_Random_Address_Byte(0x40,LCD_data);
    Enable_LCD_write();
}
//*************寫(xiě)數(shù)據(jù)****************************
void LCD_write_data(unsigned char value)
{
        delay_nus(16);
        LCD_data|=(1<<(1-1));//RS=1;
        LCD_data&=~(1<<(2-1));//RW=0;
    Write_Random_Address_Byte(0x40,LCD_data);
        LCD_data&=0X0f; //清高四位
        LCD_data|=value&0xf0; //寫(xiě)高四位
    Write_Random_Address_Byte(0x40,LCD_data);
    Enable_LCD_write();
        value=value<<4; //低四位移到高四位
        LCD_data&=0x0f; //清高四位
        LCD_data|=value&0xf0; //寫(xiě)低四位
    Write_Random_Address_Byte(0x40,LCD_data);
    Enable_LCD_write();
}
//**********************設(shè)置顯示位置*********************************
void set_position(unsigned char x,unsigned char y)
{
        unsigned char position;
        if (y == 0)
        position = 0x80 + x;
        else
                position = 0xc0 + x;
    LCD_write_command(position);
}
//**********************顯示字符串*****************************
void display_string(unsigned char x,unsigned char y,unsigned char *s)
{
    set_position(x,y);
        while (*s)
        {     
                LCD_write_data(*s);     
                s++;     
        }
}
//*************液晶初始化****************************
void LCD_init(void)
{
        LCD_write_command(0x28);
        delay_nus(40);
        LCD_write_command(0x28);
        delay_nus(40);
    Enable_LCD_write();
        delay_nus(40);
        LCD_write_command(0x28); //4位顯示!!!!!!!!!!!!!!!!!!
        LCD_write_command(0x0c); //顯示開(kāi)
        LCD_write_command(0x01); //清屏
        delay_nms(2);
}
void main(void)
{
        LCD_init();
        display_string(4,0,"imxuheng"); //顯示一段文字
        display_string(2,1,"Hello Today!"); //顯示一段文字
        while(1);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:198286 發(fā)表于 2019-8-13 15:26 | 只看該作者
請(qǐng)教地址是0x40嗎?我的好像是3f,還有就是1602都可以4為傳輸吧?
回復(fù)

使用道具 舉報(bào)

板凳
ID:78137 發(fā)表于 2019-8-13 20:55 | 只看該作者
很好,看了收益很深
回復(fù)

使用道具 舉報(bào)

地板
ID:198286 發(fā)表于 2019-8-14 21:22 | 只看該作者
搞不定,樓主還忙著那?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 男女羞羞视频网站 | 91精品观看| 亚洲日本视频 | 亚洲一区在线日韩在线深爱 | av在线播放网 | 中文字幕精品一区二区三区精品 | 亚洲一区三区在线观看 | 中文字幕乱码一区二区三区 | 精品九九九 | 日韩成人影院 | 欧美在线观看免费观看视频 | 人人干人人艹 | 日韩在线一区二区三区 | 一级片在线观看 | 拍拍无遮挡人做人爱视频免费观看 | 99视频精品 | 范冰冰一级做a爰片久久毛片 | 国产黄色精品在线观看 | 亚洲1区 | 国产福利免费视频 | 午夜免费福利电影 | 亚洲精品99 | 91视频在线观看 | 91亚洲国产| 欧美v免费| 欧美激情视频一区二区三区在线播放 | 成人在线视频一区 | 美女黄频 | 久久久不卡网国产精品一区 | 午夜a√| av中文字幕在线观看 | 国产成人精品综合 | 国产精品久久久久久久久久免费看 | 一区二区三区亚洲 | 亚洲aⅴ| 久久久精彩视频 | 欧美日韩久久精品 | www.亚洲一区二区 | 久久久精品一区二区三区 | 久久久久久中文字幕 | 亚洲网站在线播放 |