新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LCD1602驅動顯示實驗STM32

        LCD1602驅動顯示實驗STM32

        作者: 時間:2016-12-01 來源:網絡 收藏

        /*********************************************************************
        *名 稱:LCD_Setpos_DispDecimal()
        *功 能:在指定位置顯示一個有效位不超過8位的浮點數
        *入口參數:row:待顯示的行 1,2
        * col:待顯示的列 0~15
        * num:待顯示的浮點數放大10的整數倍后得到的整數,不超過8位
        * dot:小數點的位數
        *出口參數:無
        *********************************************************************/
        void LCD_Setpos_DispDecimal(uchar row,uchar col,uint32_t num,uchar dot)
        {
        LCD_Setpos(row,col);
        LCD_DispDecimal(num,dot);
        }
        /*********************************************************************
        *名 稱:LCD_DispDateTime()
        *功 能:顯示日歷,顯示日期與時間
        *入口參數:year:年,可以是任意值
        * month:月,1~12
        * day:日,1~31
        * hour:時,1~24 或 1~12
        * min:分,0~59
        * sec:秒,0~59
        *出口參數:無
        *說 明:使用前必須先宏定義USE_LCD_DISP_DATE,在包含文件之前定義有效
        *顯示格式:Date:yyyy-mm-dd *
        * Time:hh:mm:ss *
        *********************************************************************/
        void LCD_DispDateTime(uint32_t year,uchar month,uchar day,uchar hour,uchar min,uchar sec)
        {
        LCD_Setpos(1,0);
        LCD_DispString("Date:");
        LCD_Dispnum((uint32_t)year);
        LCD_DispChar(-);
        LCD_Dispnum((uint32_t)month);
        LCD_DispChar(-);
        LCD_Dispnum((uint32_t)day);
        LCD_Setpos(1,15);
        LCD_DispChar(*); //第一行結束符顯示
        LCD_Setpos(2,0);
        LCD_DispString("Time:");
        LCD_Dispnum((uint32_t)hour);
        LCD_DispChar(:);
        LCD_Dispnum((uint32_t)min);
        LCD_DispChar(:);
        LCD_Dispnum((uint32_t)sec);
        LCD_Setpos(2,15);
        LCD_DispChar(*); //第二行結束符顯示
        }
        /*********************************************************************
        *名 稱:LCD_DispStopWatch()
        *功 能:顯示秒表,顯示時,分,秒,10毫秒,精確到10ms
        *入口參數:hour:時,1~24 或 1~12
        * min:分,0~59
        * sec:秒,0~59
        * tenms:10ms計數值,如3表示30ms
        *出口參數:無
        *顯示格式:Current Time: *
        * hh:mm:ss:tt *
        *********************************************************************/
        void LCD_DispStopWatch(uchar hour,uchar min,uchar sec,uchar tenms)
        {
        LCD_Setpos(1,0);
        LCD_DispString("Current Time:");
        LCD_Setpos(1,15);
        LCD_DispChar(*); //第一行結束符顯示
        LCD_Setpos(2,2);
        LCD_Dispnum((uint32_t)hour);
        LCD_DispChar(:);
        LCD_Dispnum((uint32_t)min);
        LCD_DispChar(:);
        LCD_Dispnum((uint32_t)sec);
        LCD_DispChar(:);
        LCD_Dispnum((uint32_t)tenms);
        LCD_Setpos(2,15);
        LCD_DispChar(*); //第二行結束符顯示
        }
        /*********************************************************************
        *名 稱:LCD_DispFreq()
        *功 能:顯示頻率計,動態自動調整頻率顯示
        *入口參數:freq:可以顯示8位整數表示的頻率值,頻率范圍1Hz~99MHz
        *出口參數:無
        *說 明:入口的頻率值單位是Hz,顯示函數自動選擇合適的顯示方式
        * freq>=1000000顯示成6位小數的MHz
        * else freq>=1000 顯示成3位小數的KHz
        * else freq>=0 默認顯示單位是Hz (三個區間互斥)
        *********************************************************************/
        void LCD_DispFreq(uint32_t freq)
        {
        LCD_Setpos(1,0);
        LCD_DispString("Current Freq:");
        LCD_Setpos(2,1); //顯示位置
        if(freq>=1000000)
        {
        LCD_DispDecimal(freq,6);
        LCD_DispString("MHz");
        }
        else if(freq>=1000)
        {
        LCD_DispDecimal(freq,3);
        LCD_DispString("KHz");
        }
        else { LCD_Dispnum(freq);
        LCD_DispString("Hz");
        }
        LCD_Setpos(2,14);
        LCD_DispString("OK");
        }
        //屏幕整體左移一格,用于滾動顯示
        void LCD_ShiftLeft()
        {
        LCD_Writecmd(0x18);
        }
        //屏幕整體右移一格,用于滾動顯示
        void LCD_ShiftRight(void)
        {
        LCD_Writecmd(0x1C);
        }
        //清屏,清除顯示
        void LCD_Clear(void)
        {
        LCD_Writecmd(0x01);
        }
        //使光標還回原點位置
        void LCD_Return(void)
        {
        LCD_Writecmd(0x02);
        }
        //關顯示
        void LCD_Close(void)
        {
        LCD_Writecmd(0x08);
        }
        //開顯示
        void LCD_Open(void)
        {
        LCD_Writecmd(0x0C);
        }
        /*********************************************************************
        *名 稱:LCD_FlickerChar()
        *功 能:使指定位置字符閃爍,不顯示光標
        *入口參數:row:行 1,2
        * col:列 0~15
        *出口參數:無
        *說 明:寫命令0x0D不顯示光標的閃爍,寫命令0x0F是顯示光標的閃爍
        * 一旦設定閃爍后,會根據位置變化閃爍,關閃爍寫命令0x0C
        *********************************************************************/
        void LCD_FlickerChar(uchar row,uchar col)
        {
        LCD_Writecmd(0x0D);
        LCD_Setpos(row,col);
        }
        //關閉字符閃爍
        void LCD_CloseFlicker(void)
        {
        LCD_Writecmd(0x0C);
        }
        //屏幕秒閃爍一次
        void LCD_FlickerScreen(void)
        {
        LCD_Writecmd(0x08);//關顯示
        delay_nms(500);
        LCD_Writecmd(0x0C);//開顯示
        delay_nms(500);
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 北宁市| 维西| 手游| 勃利县| 柘城县| 双鸭山市| 罗田县| 平陆县| 荥阳市| 囊谦县| 海宁市| 合川市| 繁昌县| 田阳县| 新晃| 武乡县| 微山县| 万安县| 宣恩县| 永善县| 芦山县| 天气| 佛学| 龙门县| 盐亭县| 霍邱县| 龙泉市| 海原县| 灵山县| 富裕县| 黄大仙区| 定西市| 宜黄县| 朝阳区| 新余市| 怀柔区| 松江区| 望城县| 盐池县| 扎鲁特旗| 泗水县|