當前位置:編程學習大全網 - 源碼下載 - 單片機程序完成了 電路連好了 仿真時候 LCD1602只是亮 但是什麽顯示沒有 怎麽看程序運行沒有啊

單片機程序完成了 電路連好了 仿真時候 LCD1602只是亮 但是什麽顯示沒有 怎麽看程序運行沒有啊

程序問題的,我給妳分享壹個測試可以用的吧!顯示字符串:

#include?<reg52.h>//51單片機相關庫

typedef?unsigned?int?uint;//數據類型重新定義

typedef?unsigned?char?uchar;

sbit?LCD_RS=P2^0;//數據/命令選擇位

sbit?LCD_RW=P2^1;//讀/寫選擇位

sbit?LCD_EN=P2^2;//使能信號

uchar?lcd_tab[]={"89S52"};//第壹行顯示的字符串

uchar?lcd_tab1[]={"I?LOVE?MCU"};//第二行顯示的字符串

/**********************************************************************?

*函數名稱:_delay_ms

*輸?入:uint?x

*輸?出:無?

*功?能:延時函數?

**********************************************************************/?

void?_delay_ms(uint?x)

{

uchar?i;

while(x--)

{

for(i=0;i<120;i++);

}

}

/**********************************************************************?

*函數名稱:LCD_Write_Command

*輸?入:uchar?cmd

*輸?出:無?

*功?能:向LCD1602寫指令?

**********************************************************************/?

void?LCD_Write_Command(uchar?cmd)

{

LCD_RS=0;//根據規定,RS和R/W同時為低電平時,可以寫入指令

LCD_RW=0;

LCD_EN=0;//EN置低電平

P0=cmd;//將數據送入P2口,即寫入指令或地址

LCD_EN=1;//EN置高電平

_delay_ms(1);//稍延時,給硬件反應時間

LCD_EN=0;//當EN由高電平跳變成低電平時,液晶模塊開始執行命令

}

/**********************************************************************?

*函數名稱:LCD_Write_Data

*輸?入:uchar?dat

*輸?出:無?

*功?能:向LCD1602寫數據?

**********************************************************************/?

void?LCD_Write_Data(uchar?dat)

{

LCD_RS=1;//RS為高電平,RW為低電平時,可以寫入數據

LCD_RW=0;

LCD_EN=0;//EN置低電平

P0=dat;//將數據送入P0口,即將數據寫入液晶模塊

LCD_EN=1;//EN置高電平

_delay_ms(1);//稍延時,給硬件反應時間

LCD_EN=0;//當EN由高電平跳變成低電平時,液晶模塊開始執行命令

}

/**********************************************************************?

*函數名稱:Init_LCD?

*輸?入:無?

*輸?出:無?

*功?能:初始化LCD1602?

**********************************************************************/?

void?Init_LCD(void)

{

LCD_Write_Command(0x38);//顯示模式設置:16×2顯示,5×7點陣,8位數據接口

_delay_ms(1);

LCD_Write_Command(0x06);//顯示模式設置:光標右移,字符不移

_delay_ms(1);

LCD_Write_Command(0x0c);//顯示模式設置:顯示開,無光標,光標不閃爍

_delay_ms(1);

LCD_Write_Command(0x01);//清屏幕指令,將以前的顯示內容清除

_delay_ms(1);

}

/**********************************************************************?

*函數名稱:LCD_POS

*輸?入:uchar?pos?

*輸?出:無?

*功?能:字符顯示位置

**********************************************************************/?

void?LCD_POS(uchar?pos)

{

LCD_Write_Command(0x80|pos);//顯示位置的確定方法規定為"80H+地址碼x"

}

/**********************************************************************?

*函數名稱:Show_String

*輸?入:uchar?*str?

*輸?出:無?

*功?能:LCD1602顯示字符串處理函數

**********************************************************************/?

void?Show_String(uchar?*str)

{

while(*str!='\0')//只要沒有寫到結束標誌,就繼續寫

LCD_Write_Data(*str++);//將字符常量寫入LCD,並指向下壹個字符

}

/**********************************************************************?

*函數名稱:main

*輸?入:無?

*輸?出:無?

*功?能:函數主體

**********************************************************************/?

void?main(void)

{

Init_LCD();

while(1)

{

LCD_POS(0);//第壹行第壹列開始顯示

Show_String(lcd_tab);//將lcd_tab數組字符串寫入LCD顯示出

LCD_POS(0x40);//第二行第壹列開始顯示

Show_String(lcd_tab1);//將lcd_tab1數組字符串寫入LCD顯示

}

}

  • 上一篇:亳州源代碼
  • 下一篇:Hi live源代碼
  • copyright 2024編程學習大全網