娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月05日(星期三)

正在發(fā)生

2020年02月05日 | 單片機(jī)通過(guò)PCF8574T模塊驅(qū)動(dòng)程序 1602/2004LCD

發(fā)布者:anluran 來(lái)源: 51hei關(guān)鍵字:單片機(jī)  PCF8574T模塊  驅(qū)動(dòng)程序 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

單片機(jī)通過(guò) PCF8574T 模塊驅(qū)動(dòng) 1602/2004 LCD,有需要的朋友看看。//-------------------------------------------------------------------------------------------------------------------------------------------------------

#include
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int 


//#define                        L1                0x80            // 第一行寫(xiě)入地址
//#define                        L2                0xc0            // 第二行寫(xiě)入地址
        
sbit SCL = P2^0;
sbit SDA = P2^1;


//char ADDR = 0x4E;    // PCF8574  T  模塊的地址碼
  char ADDR = 0x7e;    // PCF8574   AT  模塊的地址碼


//***************************** 延時(shí) y  ms ***********************************************


void delay1(int y)   // 
{
         ;
        while(y--)
        {
        unsigned char a,b,c;
        for(c=1;c>0;c--)
        for(b=142;b>0;b--)
        for(a=2;a>0;a--);
        }
}


//******************************** IIC 串口開(kāi)始 ********************************************


void IIC_start(void)
{
        SDA=1;
        _nop_();
        SCL=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        SDA=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        SCL=0;
}




//********************************** IIC 串口寫(xiě)1個(gè)字節(jié) ******************************************


void IIC_writeByte(char temp)
{
        char i;
        for(i=0;i<8;i++)
        {
                SDA=(bit)(temp & 0x80) ;   // 根據(jù)規(guī)定1602的數(shù)據(jù)最高位必須為  1  
                temp <<=1;
                _nop_();
                _nop_();
                SCL=1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                SCL=0;
        }
        _nop_(); 
        _nop_();
        _nop_();
        _nop_();
        SDA=1;
        _nop_(); 
        _nop_(); 
        _nop_();
        _nop_();
        SCL=1; 
        _nop_();
        _nop_();
        _nop_();
        while(SDA);
        _nop_();
        SCL=0;
}




//******************************** 1602寫(xiě)命令 ********************************************


void LCD_write_command(char comm)
{
        char tmp;
        IIC_start();          // 串口開(kāi)始
        IIC_writeByte(ADDR);  // 先選PCF 8574T 的地址  (應(yīng)該是相當(dāng)于選中的意思吧)
        
        tmp = comm & 0xF0;    // 與0xf0 應(yīng)該是取第四位的意思吧
        tmp |= 0x0C;         //保留高4位為指令的高四位,低四位為   RS = 0, RW = 0, EN = 1  
        IIC_writeByte(tmp);  //從串口送出
        delay1(20);
        tmp &= 0xFB;        //Make EN = 0
        IIC_writeByte(tmp); 
        
        tmp = (comm & 0x0F) << 4 ;  //將指令的低四位 送到高位置保存
        tmp |= 0x0C;        //RS = 0, RW = 0, EN = 1
        IIC_writeByte(tmp);
        delay1(20);
        tmp &= 0xFB; // Make EN = 0
        IIC_writeByte(tmp);
        
}
//******************************** 1602寫(xiě)數(shù)據(jù) ********************************************


void LCD_write_data(char data1)
{
        char tmp;
        IIC_start();
        IIC_writeByte(ADDR);   // 先選PCF 8574T 的地址  (應(yīng)該是相當(dāng)于選中的意思吧)
        
        tmp = data1 & 0xF0;
        tmp |= 0x0D; //RS = 0, RW = 0, EN = 1
        IIC_writeByte(tmp);
        delay1(20);
        tmp &= 0xFB; //Make EN = 0
        IIC_writeByte(tmp); 
        
        tmp = (data1 & 0x0F) << 4 ;
        tmp |= 0x0D; //RS = 0, RW = 0, EN = 1
        IIC_writeByte(tmp);
        delay1(20);
        tmp &= 0xFB ; // Make EN = 0
        IIC_writeByte(tmp);
}


//******************************** 1602初始化 ********************************************


void Init_Lcd(void)
{
        LCD_write_command(0x33); //將8位總線轉(zhuǎn)為4位總線
        delay1(50) ;
        LCD_write_command(0x32); //
        delay1(50) ; 
        LCD_write_command(0x28); // 4位數(shù)據(jù)線,顯示2行,5*7點(diǎn)陣字符  !如果是0x38  則為8位數(shù)據(jù)線,顯示2行,5*7點(diǎn)陣字符
        delay1(50) ; 
        LCD_write_command(0x0C); // 開(kāi)顯示,關(guān)閉光標(biāo),不閃爍
        delay1(50) ;  
        LCD_write_command(0x06); // 設(shè)定輸入方式,增量不位移
        delay1(50) ; 
        LCD_write_command(0x01); // 清屏
        delay1(50) ;
}








//*************************************** 在指定位置顯示字符串 *************************************


void Write_LCD(int x, int y, char *str)
{
        char addr;
        if( x < 0)
        {
                x = 0;
        }
        if(x > 15)
        {
                x = 15;
        }
        if(y<0)
        {
                y = 0;
        }
        if(y > 1)
        {
                y = 1;
        }
        
        addr = 0x80 + 0x40 * y + x;   // Move cursor  移動(dòng)光標(biāo)
        LCD_write_command(addr);
        while (*str) 
        {
                LCD_write_data(*str++); 
        }
}


//-------------------------------------------- 顯示字符串的函數(shù) ----------------------------------------------------


void LCD_write_word(unsigned char *s)                  //顯示字符串的函數(shù)
{
        while(*s>0)
        {
                LCD_write_data(*s);
                s++;
        }
}




//********************************* 指定位置顯示一個(gè)字符*******************************************


/*
void Print_Char (unsigned char line,unsigned char num,unsigned char date)
{
                LCD_write_command(line+num);
                LCD_write_data(date);
}


*/


//按指定位置顯示一個(gè)字符(針對(duì)1602液晶)-用在溫度顯示


void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF;                 //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40;        //當(dāng)要顯示第二行時(shí)地址碼+0x40;
X |= 0x80;               // 算出指令碼
LCD_write_command(X);    //這里不檢測(cè)忙信號(hào),發(fā)送地址碼
LCD_write_data(DData);
}

[1] [1]
關(guān)鍵字:單片機(jī)  PCF8574T模塊  驅(qū)動(dòng)程序 引用地址:單片機(jī)通過(guò)PCF8574T模塊驅(qū)動(dòng)程序 1602/2004LCD

上一篇:基于51單片機(jī)的DHT11溫濕度檢測(cè)控制系統(tǒng)設(shè)計(jì)
下一篇:MCS-51單片機(jī)寄存器TMOD的工作選擇方式解析

推薦閱讀

最近,一則消息引起了筆者對(duì)一個(gè)快要消失于我們視野的產(chǎn)品的重新關(guān)注,那就是電視盒子,近日,小米發(fā)布小米盒子4,雖然搭載了時(shí)下最火熱的人工智能系統(tǒng),但似乎生量并不算很高,相關(guān)的新聞也不算很多,相比前幾年幾乎所有的廠商都在扎堆做盒子的盛況,確實(shí)冷清不少,要知道當(dāng)時(shí)小米、樂(lè)視盒子可真的是一“盒”難求。  毫無(wú)疑問(wèn),OTT盒子的最大敵人就是智...
力技資訊:生產(chǎn)流水線又稱為裝配線,是一種工業(yè)上的生產(chǎn)方式,指每一個(gè)生產(chǎn)單位只專注處理某一個(gè)片段的工作,以提高工作效率及產(chǎn)量;中間是輸送帶,完成手中的工序,就放在輸送帶上,送往下工序。所以每個(gè)人每天都在重復(fù)性的做同一個(gè)動(dòng)作,既枯燥又無(wú)奈。 此時(shí)聰明的企業(yè)用上了工業(yè)機(jī)器人,在裝配生產(chǎn)中的工業(yè)機(jī)器人即可為自動(dòng)裝配機(jī)服務(wù),又可直接用...
  水準(zhǔn)儀是建筑工地上經(jīng)常會(huì)用用到的工具,主要功能為測(cè)量標(biāo)高,如何正確快速的使用,是每一個(gè)施工員必須掌握的必備技能,下面就讓我們一起來(lái)學(xué)習(xí)一下如何操作吧!  電子讀數(shù)方法當(dāng)前電子水準(zhǔn)儀采用了原理上相差較大的三種自動(dòng)電子讀數(shù)方法:  1)相關(guān)法(徠卡NA3002/3003);  2) 幾何法(蔡司DiNi10/20);  3) 相位法(拓普康DL101C/102C...
一、跑馬燈硬件連接 二、庫(kù)函數(shù)版--程序編寫(xiě)1、庫(kù)函數(shù)//頭文件:stm32f4xx_gpio.h源文件:stm32f4xx_gpio.c//2、初始化函數(shù)3、GPIO_Init函數(shù)初始化樣例//GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF時(shí)鐘 //GPIOF9,F10初始化設(shè)置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10...

史海拾趣

問(wèn)答坊 | AI 解惑

單字節(jié)BIN轉(zhuǎn)BCD一法

這幾天折騰一個(gè)AD結(jié)果換算成某比值數(shù)的問(wèn)題,終于有了結(jié)果,結(jié)果存放在一個(gè)字節(jié)內(nèi),不超過(guò)0X64(100d). 要將其轉(zhuǎn)化為2位BCD碼在七段LED上顯示,搜了一些現(xiàn)成程序,發(fā)現(xiàn)計(jì)算時(shí)間消耗較多,于是想用查表法解決。以下是子程序,二進(jìn)制數(shù)存在DATAA1里, ...…

查看全部問(wèn)答∨

車身控制模塊設(shè)計(jì)選擇方案

隨著人們對(duì)汽車的操控性及舒適性需求不斷升高,汽車車身中的電子設(shè)備越來(lái)越多,如電動(dòng)后視鏡、中控門(mén)鎖、玻璃升降器、車燈乃至其它更多的高級(jí)功能等。     電源要求及方案選擇 (BCM)設(shè)計(jì)重要 車身控制模塊的一步是確定電源要求,以及選 ...…

查看全部問(wèn)答∨

VC++串口上位機(jī)簡(jiǎn)單例程(源碼及詳細(xì)步驟)

VC++編寫(xiě)簡(jiǎn)單串口上位機(jī)程序 2010年4月13日10:23:40 串口通信,MCU跟PC通信經(jīng)常用到的一種通信方式,做界面、寫(xiě)上位機(jī)程序的編程語(yǔ)言、編譯環(huán)境等不少,VB、C#、LABVIEW等等,我會(huì)的語(yǔ)言很少,C語(yǔ)言用得比較多,但是還沒(méi)有找到如何用C語(yǔ)言來(lái) ...…

查看全部問(wèn)答∨

4X32M的SDRAM,大小是16MByte嗎

RT啊,小白問(wèn)題,希望高手不吝回答…

查看全部問(wèn)答∨

視頻子窗體與置頂窗體的沖突問(wèn)題,急!

步驟如下: 俺先啟動(dòng)了一個(gè)小懸浮窗體,永遠(yuǎn)置頂 SetWindowPos(&(wndTopMost),10,10,25,25,SWP_DRAWFRAME); 然后啟動(dòng)我的視頻程序(MFC對(duì)話框) 在OnInitDialog中 1.設(shè)定窗體位置 SetWindowPos(NULL, 0, 0, 800, 480, SWP_NOZORDER); 2. ...…

查看全部問(wèn)答∨

請(qǐng)問(wèn)tornado2.02有l(wèi)ong long 這種類型么?

請(qǐng)問(wèn)tornado2.02有l(wèi)ong long 這種類型么? 即8個(gè)字節(jié)的整形數(shù)據(jù)? 我在c文件中定義了,對(duì)這個(gè)8字節(jié)整形變量做了除法,編譯可以生成.o,但是鏈接時(shí)報(bào)錯(cuò)。 partialImage.o(.text+0x173510): undefined reference to `__divdi3\' partialImage.o(. ...…

查看全部問(wèn)答∨

《電子設(shè)計(jì)從零開(kāi)始》

誰(shuí)有《電子設(shè)計(jì)從零開(kāi)始》Word或txt格式的電子書(shū) 各位大哥大姐幫幫忙,要急用啊 拜托了…

查看全部問(wèn)答∨

Linux下LCD驅(qū)動(dòng)的開(kāi)發(fā)

        有沒(méi)有人能提供LCD驅(qū)動(dòng)的例子程序作為參考。在s3c2440上,linux的移植,驅(qū)動(dòng)是靜態(tài)捆綁好還是動(dòng)態(tài)加載好? 還有驅(qū)動(dòng)開(kāi)發(fā)方面要注意些什么?…

查看全部問(wèn)答∨

請(qǐng)教有關(guān)atmel的at91sam7的串口程序問(wèn)題。

void Usart_init ( void ) {     COM0= AT91C_BASE_US1;     //* Define RXD and TXD as peripheral     // Configure PIO controllers to periph mode      AT91F_PIO_CfgPeriph(   ...…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 左云县| 新乡市| 舒城县| 钟祥市| 岳池县| 姜堰市| 都江堰市| 高清| 科技| 东丽区| 木兰县| 凤翔县| 阿巴嘎旗| 安阳县| 大渡口区| 凌海市| 陕西省| 集安市| 新乐市| 抚州市| 义马市| 桂东县| 隆德县| 扎鲁特旗| 博野县| 兴仁县| 元朗区| 怀柔区| 金坛市| 延长县| 平遥县| 巢湖市| 墨玉县| 巩义市| 伊宁市| 鄱阳县| 穆棱市| 芒康县| 通州市| 五家渠市| 钦州市|