新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)驅(qū)動(dòng)LCD1602液晶顯示字符串程序

        PIC單片機(jī)驅(qū)動(dòng)LCD1602液晶顯示字符串程序

        作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
        /***************************************************************************

        *** 功能:LCD1602的使用
        *** 實(shí)驗(yàn)內(nèi)容:LCD顯示本站網(wǎng)址和電話(huà)
        ***開(kāi)發(fā)板連接方法: 調(diào)節(jié)1602電位器,使LCD對(duì)比度最好,裝1602時(shí)不要裝錯(cuò)了,否測(cè)會(huì)燒掉。
        ***************************************************************************/
        #include

        本文引用地址:http://www.104case.com/article/201612/324699.htm

        __CONFIG(0xFF32);
        //芯片配置字,看門(mén)狗關(guān),上電延時(shí)開(kāi),掉電檢測(cè)關(guān),低壓編程關(guān),加密,4M晶體HS振蕩

        //LCD控制線(xiàn)宏定義
        #define rs RA5
        #define rw RA4
        #define e RA3

        //顯示公司web地址
        char web[ ] = {"***.*********.***"};

        //顯示公司電話(huà)號(hào)碼
        char tel[ ] = {" 110 " };

        void init(); //申明I/O口初始化函數(shù)
        void lcd_init(); //申明LCD初始化函數(shù)
        void write(char x); //申明顯示1字節(jié)數(shù)據(jù)函數(shù)
        void lcd_enable(); //申明LCD顯示設(shè)置函數(shù)
        void delay(); //申明延時(shí)函數(shù)
        void writelcd(char *pt); //聲明LCD寫(xiě)字符串函數(shù)

        /****************************************************************************
        * 名 稱(chēng):main()
        * 功 能:主函數(shù)
        * 入口參數(shù):
        * 出口參數(shù):
        * 說(shuō) 明:
        * 備 注:
        ****************************************************************************/
        void main()
        {
        init(); //調(diào)用I/O口初始化函數(shù)
        lcd_init(); //調(diào)用LCD初始化函數(shù)
        while (1)
        {
        writelcd(web); //調(diào)用顯示公司web地址函數(shù)
        PORTD = 0XC0; //設(shè)置第2行顯示地址
        lcd_enable(); //調(diào)用LCD顯示設(shè)置函數(shù)
        writelcd(tel); //調(diào)用顯示公司tel函數(shù)
        }
        }

        /****************************************************************************
        * 名 稱(chēng):init()
        * 功 能:I/O口初始化
        * 入口參數(shù):
        * 出口參數(shù):
        * 說(shuō) 明:
        * 備 注:
        ****************************************************************************/
        void init()
        {
        ADCON1 = 0X07; //設(shè)置A口為普通I/O口
        RA1=1;
        TRISA = 0X00; //設(shè)置A口為輸出
        TRISD = 0X00; //設(shè)置D口為輸出
        }

        /****************************************************************************
        * 名 稱(chēng):lcd_init()
        * 功 能:LCD初始化
        * 入口參數(shù):
        * 出口參數(shù):
        * 說(shuō) 明:
        * 備 注:
        ****************************************************************************/
        void lcd_init()
        {
        PORTD = 0X1; //清除顯示
        lcd_enable();
        PORTD = 0X38; //8位2行5*7點(diǎn)陣
        lcd_enable();
        PORTD = 0X0e; //顯示開(kāi),光標(biāo)開(kāi),閃爍
        lcd_enable();
        PORTD = 0X06; //文字不動(dòng),光標(biāo)右移
        lcd_enable();
        PORTD = 0X80; //公司web顯示地址
        lcd_enable();
        }

        /****************************************************************************
        * 名 稱(chēng):write()
        * 功 能:寫(xiě)一個(gè)字節(jié)數(shù)據(jù)到LCD
        * 入口參數(shù):char x 字符
        * 出口參數(shù):
        * 說(shuō) 明:
        * 備 注:
        ****************************************************************************/
        void write(char x)
        {
        PORTD = x; //待顯示數(shù)據(jù)送PORTD口
        rs = 1; //該字節(jié)數(shù)據(jù)為數(shù)據(jù),而不是命令
        rw = 0; //此次操作為寫(xiě),而不是讀
        e = 0; //拉低使能信號(hào)
        delay(); //保持使能信號(hào)為低一段時(shí)間
        e = 1; //拉高使能信號(hào),建立LCD操作所需要的上升沿
        }

        /****************************************************************************
        * 名 稱(chēng):lcd_enable()
        * 功 能:LCD顯示設(shè)置
        * 入口參數(shù):
        * 出口參數(shù):
        * 說(shuō) 明:
        * 備 注:
        ****************************************************************************/
        voidlcd_enable()
        {
        rs = 0; //該字節(jié)數(shù)據(jù)為命令,而不是數(shù)據(jù)
        rw = 0; //此次操作為寫(xiě),而不是讀
        e = 0; //拉低使能信號(hào)
        delay(); //保持使能信號(hào)為低一段時(shí)間
        e = 1; //拉高使能信號(hào),建立LCD操作所需要的上升沿
        }

        /****************************************************************************
        * 名 稱(chēng):delay()
        * 功 能:延時(shí)
        * 入口參數(shù):
        * 出口參數(shù):
        * 說(shuō) 明:
        * 備 注:
        ****************************************************************************/
        void delay()
        {
        int i;
        for (i = 0;i < 5000;i++);
        }

        /****************************************************************************
        * 名 稱(chēng): writelcd()
        * 功 能: 在LCD上顯示字符串
        * 入口參數(shù):char *pt 字符串的首地址
        * 出口參數(shù):
        * 說(shuō) 明:
        * 備 注:
        ****************************************************************************/
        void writelcd(char *pt)
        {
        while(*pt)
        write(*pt++);
        }



        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 尼玛县| 乌鲁木齐县| 广河县| 耿马| 泰来县| 通江县| 来安县| 博乐市| 东宁县| 大渡口区| 澜沧| 江山市| 乐安县| 宜宾县| 蒙自县| 瑞丽市| 金昌市| 松潘县| 富源县| 民县| 孙吴县| 潞城市| 潞西市| 安阳县| 辽源市| 高台县| 石城县| 海兴县| 从化市| 包头市| 安乡县| 滦南县| 合山市| 民乐县| 齐齐哈尔市| 芷江| 宣武区| 灌南县| 镇平县| 驻马店市| 普格县|