新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機驅動LCD1602液晶顯示字符串程序

        PIC單片機驅動LCD1602液晶顯示字符串程序

        作者: 時間:2016-12-02 來源:網絡 收藏
        /***************************************************************************

        *** 功能:LCD1602的使用
        *** 實驗內容:LCD顯示本站網址和電話
        ***開發板連接方法: 調節1602電位器,使LCD對比度最好,裝1602時不要裝錯了,否測會燒掉。
        ***************************************************************************/
        #include

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

        __CONFIG(0xFF32);
        //芯片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩

        //LCD控制線宏定義
        #define rs RA5
        #define rw RA4
        #define e RA3

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

        //顯示公司電話號碼
        char tel[ ] = {" 110 " };

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

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

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

        /****************************************************************************
        * 名 稱:lcd_init()
        * 功 能:LCD初始化
        * 入口參數:
        * 出口參數:
        * 說 明:
        * 備 注:
        ****************************************************************************/
        void lcd_init()
        {
        PORTD = 0X1; //清除顯示
        lcd_enable();
        PORTD = 0X38; //8位2行5*7點陣
        lcd_enable();
        PORTD = 0X0e; //顯示開,光標開,閃爍
        lcd_enable();
        PORTD = 0X06; //文字不動,光標右移
        lcd_enable();
        PORTD = 0X80; //公司web顯示地址
        lcd_enable();
        }

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

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

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

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



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 延寿县| 崇礼县| 册亨县| 上高县| 哈巴河县| 长寿区| 聂荣县| 宜章县| 合作市| 永修县| 安顺市| 三穗县| 林州市| 宜章县| 得荣县| 常德市| 普格县| 扶绥县| 河池市| 海宁市| 南和县| 泗洪县| 辽阳市| 马关县| 甘洛县| 拜泉县| 千阳县| 上高县| 通州区| 犍为县| 尚义县| 高密市| 山阴县| 清远市| 靖远县| 惠安县| 扶沟县| 大邑县| 咸阳市| 高台县| 伊吾县|