導航:首頁 > 操作系統 > 單片機lcd屏顯示字元

單片機lcd屏顯示字元

發布時間:2022-05-13 12:19:59

A. 單片機LCD左移顯示字元顯示不全

#include<reg52.h>

unsigned char code s[]={"Hello everyone! Welcome to Beijing"}; //顯示字元

sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;

void delay(int i)//延時函數
{
while(i--);
}

void w_command(unsigned char w) //寫入指令
{
rs=0;
rw=0;
P3=w;
e=1;
delay(3000);
e=0;
}

void init_lcd() //1602液晶初始化設定
{
w_command(0x38);// 16*2顯示,5*7點陣,8位數據介面
w_command(0x0c);// 開顯示,關游標,不閃爍
w_command(0x06);// 指針加1,顯示不移動
w_command(0x01);// 清屏
}

void w_data(unsigned char num)//寫入字元顯示
{
rs=1;
rw=0;
P3=num;
e=1;
delay(3000);
e=0;
}

void main()
{
int i;

init_lcd();

while(1)
{
w_command(0x80);
i=0;

while(s[i]!='\0')
{
w_data(s[i]);
delay(6000);
w_command(0x1c);
i++;
if(i==16)w_command(0xc0);
}
}
}

B. 單片機如何驅動LCD顯示字元

首先你要確定你的LCD是什麼型號,是否有字型檔 等等, 而後對應找這個型號的datasheet 查看怎麼驅動他。一般都會有例子,多逛逛單片機論壇吧 有用的。別老來網路問些不知道怎麼回答的問題
下面我給一個單片機驅動1602液晶的部分代碼,希望有用。
/*******************************************************************************
1602LCD
*******************************************************************************/
#include <reg51.h>
#include <intrins.h>
#define unit unsigned int
#define char unsigned char

sbit rs = P2^1;
sbit rw = P2^2;
sbit ep = P2^0;
char code ask[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xb0};
/* 0 1 2 3 4 5 6 7 8 9 - */
char code dis1[] = {"welcome!"};
char code dis2[] = {"pzowen love you!"};

//***********************************************//
//***********************************************//
///////////////////////////////////////////////////
///////////////////////////////////////////////////
delay(char ms)
{ // 延時子程序
char i;
while(ms--)
{
for(i = 0; i<250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

lcd_wcmd(char cmd)
{ // 寫入指令數據到LCD
delay(1);
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;

}

lcd_pos(char pos)
{ //pos=0x40; //設定顯示位置
lcd_wcmd(pos|0x80);
//lcd_wcmd(pos);

}

lcd_wdat(char dat)
{ //寫入字元顯示數據到LCD
delay(1);
rs = 1;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;

}

lcd_init()
{
delay(1); //LCD初始化設定
lcd_wcmd(0x38); //顯示模式設置:單行,8字元,5x7點陣
delay(1);
delay(1);
lcd_wcmd(0x0c); //開顯示,關游標,不閃爍
delay(1);
delay(1);
lcd_wcmd(0x06); //設置輸入模式:游標增量移動,顯示不移位
delay(1);
delay(1);
//lcd_wcmd(0x01); //清除LCD顯示的內容
//delay(1);

}

void main()
{
char i;
char k;
lcd_init(); // 初始化LCD
delay(10);
lcd_pos(0x04); // 設置顯示位置為第一行的第5個字元
i = 0;
while(dis1[i]!='\0')
{ // 顯示字元"welcome!"
lcd_wdat(dis1[i]);
//lcd_wdat(ask[xianshi[i]]);
delay(30);
i++;
}
//lcd_wdat(xianshi[1]);
//delay(30);

delay(20);
lcd_init();
delay(10);
lcd_pos(0x40); // 設置顯示位置為第二行第二個字元
delay(10);
i = 0;
while(dis2[i]!='\0')
{
lcd_wdat(dis2[i]); // 顯示字元" "
//lcd_wdat(ask[xianshi[i]]);
delay(30);
i++;
}

C. 單片機做1602液晶顯示,顯示字元錯誤,代碼如下:

你好,只要說你的單片機能工作起來,就沒有問題,如果單片機都沒有工作起來,那就談不上驅動了!在單片機能動作的前提下,要是保證程序沒有錯的情況下,應該是液晶屏的那個調壓電阻沒有調好的原因,使液晶的顯示對比度不好,看不見字元的原因。驅動1602的程序網上很多的,下一個就可以用的,主要是硬體的那個液晶的顯示對比調節要調節好才能看到!希望能幫上你!這個鏈接是程序:
http://download.csdn.net/source/1580412

D. 單片機怎麼把整型數據轉化成字元型由LCD屏顯示

將整形數據轉換為字元型很簡單,就是將數字變成ASCII形態就可以了。如果是匯編的話,方法是:
1、將數據轉換為BCD碼。
2、將每一個BCD碼加30H。
3、將結果送顯示
如果是C語言的話,更簡單,直接分離每一位數,然後加0x30就可以了。
舉例如下。
比如無符號整型量送顯。
disp(unsigned
int
x)
{
unsigned
char
a,b,c,d,e;
a=x/10000+0x30;
b=(x/1000)%10+0x30;
c=(x/100)%10+0x30;
d=(x/10)%10+0x30;
e=x%10+0x30;
......................
}

E. 上位機給51單片機傳送ASCII碼,單片機如何在液晶中顯示出來對應的字元呀

如果液晶能直接顯示ASCII碼的啊,比如上位機向單片機傳送『HELLO』字元串,這就是ASCII碼組成的,即直接送到液晶上顯示即可。
但是有的液晶不能直接顯示,那就把ASCII碼對應的字模送到屏幕上顯示了。

F. 51單片機如何在1602液晶屏上顯示一個字母

/*-----------------------------------------------
名稱:LCD1602
內容:通過標准程序靜態顯示字元
引腳定義如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include<intrins.h>

sbit RS = P2^4; //定義埠
sbit RW = P2^5;
sbit EN = P2^6;

#define RS_CLR RS=0
#define RS_SET RS=1

#define RW_CLR RW=0
#define RW_SET RW=1

#define EN_CLR EN=0
#define EN_SET EN=1

#define DataPort P0
/*------------------------------------------------
uS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字元變數,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字元變數,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
判忙函數
------------------------------------------------*/
bit LCD_Check_Busy(void)
{
DataPort= 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit)(DataPort & 0x80);
}
/*------------------------------------------------
寫入命令函數
------------------------------------------------*/
void LCD_Write_Com(unsigned char com)
{
while(LCD_Check_Busy()); //忙則等待
RS_CLR;
RW_CLR;
EN_SET;
DataPort= com;
_nop_();
EN_CLR;
}
/*------------------------------------------------
寫入數據函數
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
{
while(LCD_Check_Busy()); //忙則等待
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
}

/*------------------------------------------------
清屏函數
------------------------------------------------*/
void LCD_Clear(void)
{
LCD_Write_Com(0x01);
DelayMs(5);
}

/*------------------------------------------------
寫入字元函數
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xC0 + x);
}
LCD_Write_Data( Data);
}
/*------------------------------------------------
初始化函數
------------------------------------------------*/
void LCD_Init(void)
{
LCD_Write_Com(0x38); /*顯示模式設置*/
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08); /*顯示關閉*/
LCD_Write_Com(0x01); /*顯示清屏*/
LCD_Write_Com(0x06); /*顯示游標移動設置*/
DelayMs(5);
LCD_Write_Com(0x0C); /*顯示開及游標設置*/
}

/*------------------------------------------------
主函數
------------------------------------------------*/
void main(void)
{
LCD_Init();
LCD_Clear();//清屏
while (1)
{
LCD_Write_Char(7,0,'o');
LCD_Write_Char(8,0,'k');
while(1);
}
}

G. 單片機中 LCD1602不能顯示字元



#include<reg52.h>//51單片機相關庫
typedefunsignedintuint;//數據類型重新定義
typedefunsignedcharuchar;
sbitLCD_RS=P2^0;//數據/命令選擇位
sbitLCD_RW=P2^1;//讀/寫選擇位
sbitLCD_EN=P2^2;//使能信號
ucharlcd_tab[]={"www.mcuc.com.cn"};//第一行顯示的字元串
ucharlcd_tab1[]={"ILOVEMCU"};//第二行顯示的字元串
/**********************************************************************
*函數名稱:_delay_ms
*輸入:uintx
*輸出:無
*功能:延時函數
**********************************************************************/
void_delay_ms(uintx)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
/**********************************************************************
*函數名稱:LCD_Write_Command
*輸入:ucharcmd
*輸出:無
*功能:向LCD1602寫指令
**********************************************************************/
voidLCD_Write_Command(ucharcmd)
{
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
*輸入:uchardat
*輸出:無
*功能:向LCD1602寫數據
**********************************************************************/
voidLCD_Write_Data(uchardat)
{
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
**********************************************************************/
voidInit_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
*輸入:ucharpos
*輸出:無
*功能:字元顯示位置
**********************************************************************/
voidLCD_POS(ucharpos)
{
LCD_Write_Command(0x80|pos);//顯示位置的確定方法規定為"80H+地址碼x"
}
/**********************************************************************
*函數名稱:Show_String
*輸入:uchar*str
*輸出:無
*功能:LCD1602顯示字元串處理函數
**********************************************************************/
voidShow_String(uchar*str)
{
while(*str!='')//只要沒有寫到結束標志,就繼續寫
LCD_Write_Data(*str++);//將字元常量寫入LCD,並指向下一個字元
}
/**********************************************************************
*函數名稱:main
*輸入:無
*輸出:無
*功能:函數主體
**********************************************************************/
voidmain(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顯示
}
}
/*
代碼講解:本程序是以51單片機的LCD1602液晶屏顯示字元串,第一行將顯示

,第二行將顯示ILOVEMCU,本程序主要是掌握LCD1602液晶屏的時序操作,
*/

H. 51單片機如何一邊用蜂鳴器播放音樂,一邊用LCD顯示字元啊

看你的這個設計意圖,好像是要設計一個能顯示歌詞的音頻播放器。這樣的東西,你可以這樣考慮,每播放一個小節的譜子,然後給LCD送這一個段的歌詞。順便讓整個屏幕的歌詞移動一定的距離。這樣要看具體的歌曲,你要仔細規劃下歌詞的顯示次序。
對於51系列的單片機屬於單cpu的器件。要實現這樣的多任務,就是變播放變顯示,只有一個辦法,那就是分時復用。簡單來說就是主要時間播放音樂,每一個小節的間隙給LCD送顯示內容,然後立即又返回去播放音樂。。。如此循環。
如果是2個人合作的,那要不就弄2個51單片機。一個用來播放音樂,一個用來顯示。2個之間可以通過串口共享數據資源。這樣就相當於現在的雙核的桌面PC/

I. 單片機是怎樣在液晶上顯示字元

常用的LCD有1602,可以查找其硬體電路,其程序也很容易找到,這是其常用的子程序:
sbit
rw=P1^4;//定義管腳,3個控制引腳
1個8位數據口
sbit
rs=P1^3;
sbit
lcden=P1^5;
#define
db
P2
void
write_com(uchar
com)//液晶屏寫命令

J. 怎麼用單片機讓LCD顯示呢

用單片機讓LCD顯示,一要保證電路正確,二是程序必須與電路相符,程序中的LCD的控制腳必須與實物相符。否則,液晶屏只亮並不顯示字元。你主程序中的液晶屏初始化語句應放在第一行。你現在是放在最後了,假如前面語句顯示了,可初始化後就全沒了。

閱讀全文

與單片機lcd屏顯示字元相關的資料

熱點內容
命令與征服修改器怎麼用 瀏覽:483
什麼app比較費錢 瀏覽:830
為什麼同一個app的功能不一樣 瀏覽:230
小型工作室用什麼伺服器好 瀏覽:995
程序員的興趣 瀏覽:413
華為伺服器有什麼好 瀏覽:701
程序員和測試之間的關系 瀏覽:945
加密蚊帳什麼意思 瀏覽:151
javalistclear 瀏覽:607
哪個app上民宿多靠譜 瀏覽:827
重慶伺服器租用哪裡有雲伺服器 瀏覽:453
土星模擬器文件夾 瀏覽:902
文件夾文件袋文件盒 瀏覽:695
雲伺服器打開f8指令 瀏覽:243
盈透證券加密幣 瀏覽:72
阿里雲伺服器初始密碼怎麼修改 瀏覽:266
伺服器怎麼設定公用網路 瀏覽:99
程序員自己嘗尿檢測出糖尿病 瀏覽:593
列印添加pdf 瀏覽:932
蘋果解壓專家賬號 瀏覽:844