① 怎麼用單片機讓LCD顯示呢
用單片機讓LCD顯示,一要保證電路正確,二是程序必須與電路相符,程序中的LCD的控制腳必須與實物相符。否則,液晶屏只亮並不顯示字元。你主程序中的液晶屏初始化語句應放在第一行。你現在是放在最後了,假如前面語句顯示了,可初始化後就全沒了。
② 51單片機c語言 液晶顯示1602怎麼顯示一個動態的數據
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是52系列的單片機一般不具備自編程能力。
寫一個函數把整型數據每位提取出來,就可以顯示每位數據了。
void display_tem(x,y,int getdata) //getdata就是你採集來的數據吧~~
{
display_char(x,y,getdata/10);//我不知道你的溫度是幾位的整數~ 這里我
//假設是兩位
//display_char用你自己的字元顯示函數替代
display_char(x+1,y,getdata%10);
}
③ 怎麼才能把單片機里的數據在LCD上顯示
常用的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)//液晶屏寫命令,控制液晶屏開關或字元位置的數據是命令
{
db=com;
rs=0;
rw = 0;
lcden=0;
Delay1ms(12);
lcden=1;
Delay1ms(12);
lcden=0;
}
void write_date(uchar date)//液晶屏寫數據,將要顯示的字元是數據
{
db=date;
rs=1;
rw = 0;
lcden=0;
Delay1ms(12);
lcden=1;
Delay1ms(12);
lcden=0;
}
void init2()//液晶屏初始化
{
rw=0;
write_com(0x38);
Delay1ms(12);
write_com(0x0f);
Delay1ms(12);
write_com(0x06);
Delay1ms(12);
write_com(0x01);
Delay1ms(12);
}
void display_1602(uchar temp)//顯示一個字元型變數的子程序
{
uchar A1,A2,A3;
A1=temp/1000;//分離出 個 十 百
A2=temp/100%10;
A3=temp%10;
write_com(0x80);//第1行,第1字
write_date(A1+0x30);送的是ASCI碼,因此如果顯示2,就 要送0x32
Delay1ms(1);
write_date( A2+0x30);
Delay1ms(1);
write_date(A3+0x30);
Delay1ms(12);
}
如果想顯示字元"A" 就 write_date(『A』);
④ 51單片機LCD顯示
你說的是那類液晶!1602?這類基於HD44780液晶晶元,操作上都大同小異
都是通過寫入命令,讀出數據,界面數據變化時通過不斷的刷新變化,忙閑查詢可以用命令,也可以用延時函數5ms就可以了,下面是個簡單的例子
想要復雜點的可以去我網路空間裡面找
#include<AT89X51.H>
sbit lcden=P3^4;
sbit lcdrs=P3^5;
unsigned char code tab[]="libinQQ490251568";
unsigned char code tab1[]="51binyf.com" ;
void delay(unsigned char z);
void into();
void xie_com(unsigned char com);
void xie_date(unsigned char date);
void main()
{ unsigned char num;
into();
for(num=0;num<16;num++)
{
xie_date(tab[num]);
delay(20);
}
xie_com(0x40+0x80+0x03); //使數據指針指到第二行 起始,+1----16可以使它在屏幕的任意位置顯示,
for(num=0;num<11;num++)
{
xie_date(tab1[num]);
delay(20);
}
while(1);
}
void delay(unsigned char z)
{unsigned i,k;
for(i=z;i>0;i--)
for(k=110;k>0;k--);
}
void into()// 此函數中寫入一些顯示前的准備數據
{
lcden=0;//寫指令之前為E為低電平,
xie_com(0x38);//8為數據傳送,顯示2行,5x7點陣顯示字元
xie_com(0x0f);//開顯示,有游標且閃動 0f游標閃爍,0e游標不閃爍
xie_com(0x06);//寫入一個字元後游標+1,指針也+1。字元整屏不移動
xie_com(0x80);//數據指針初始化即在第一行最左邊,後面每個字元地址就加一,第二行首地址是C0
xie_com(0x01);//清屏指令
}
void xie_com(unsigned char com) //寫指令函數
{
lcdrs=0; //RS=0寫指令
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void xie_date(unsigned char date) //寫數據 函數
{
lcdrs=1;//RS=1寫數據
P0=date;
delay(5);
lcden=1;//資料上說E端有一個高脈沖時候執行一次指令,實際應用中他內部
delay(5);//檢測到E端有一個電平跳變就可以執行指令
lcden=0;
}
⑤ 關於單片機的LCD顯示問題
1.LCD1602是並行數據介面,就要D0~D7同時輸入8位數,不可以只送一位數。所以,接單片機的四個並行口P0,P1,P2,P3的任一個都行,只是習慣上都接在P0口上,但不是固定這樣的。
2.必須同時給8位數,如果只給一位,LCD1602也會按8位數接收的,其餘7位就是未知的,也就沒有意了。
3.D0~D7送出的數據分命令字和顯示字元,顯示的字元是ASCll碼形式。要顯示浮點數,需要把每一位數轉換成字元。例,數字1,內部計算是0X01,但要變成字元'1',即0X31。
4.在哪行顯示,先要寫一個命令字確定位置,不會自動換行。
最後,你還是先看看有關1602的一些介紹,有個初步了解,很多基礎的東西看了就明白,否則,提問的都是很低級的東西。
⑥ 單片機 怎麼控制點陣屏和LCD屏
LED點陣屏和LCD屏的顯示原理是不同的,LCD屏是自帶的驅動晶元的,可以和單片機直接連接的。
而LED屏需要加驅動電路的,而且顯示時也要採用動態掃描的方式的。
LCD屏顯示漢字時,有的屏是自帶字型檔的,不帶字型檔的屏,就要用漢字取模軟體取出顯示的數據,即取出漢字的字模。
LED屏顯示漢字,就必須用取模軟體來取模了,不是自己像畫畫那樣,那可畫不起。取模軟體在網上可以下載的。
最後一個問題:LCD的集成電路去了當成點陣屏用嗎?這是不可能的,一則LCD的集成電路是封裝在PCB板上的,即軟封裝的,自己是用不了的,是不可能自己接線的。二則,假如能接線,可是,LCD和LED顯示原理不同,是根本不可能通用的。
舉個例子吧,你能把你家的私家車掛在高鐵的車頭拉著跑嗎?
⑦ 如何用單片機來控制LCD顯示
你不會說的是電腦用的彩色液晶顯示器吧...:)
我這兒有個,320*240的lcd單片機控製程序....
⑧ 單片機結合LCD顯示器的工作原理急急急
單片機一般通過I/O口模擬LCD介面時序,現在用得多的幾種LCD介面為intel 8080 series 時序、Motorola 6800 series 時序,把I/O口和LCD介面上對應的pin連接上,然後對I/O進行位操作來模擬給LCD driver的時序。 時序可做成幾個子程序,分別寫LCD driver的register 及其參數(commad或data),一般建議用C寫,如果需要高效再考慮改用匯編。
除了8080和6800介面,還有spi 3線和4線及IIC介面,都可以用I/O去模擬時序,如果是控制器方式,就需要專門的IC接入作為中間級來驅動(單片機->控制器->LCD dirver)。