導航:首頁 > 操作系統 > 51單片機如何顯示lcd

51單片機如何顯示lcd

發布時間:2023-04-26 19:48:11

1. 51單片機編寫lcd1602顯示程序,第一行顯示自己的姓名,第二行顯示學號

1、首先我們打開Keil μVision編譯器,新建一個工程,然後保存在硬碟上的位置,然後選擇Atmel-AT89C51單片機為模型,並啟動器添加STARTUP.A51文件,然後在當前目禪昌錄下新建一個C文件,並將其添加入工作路徑。

2. 如何用51單片機在LCD12864上顯示數字

利用51單片機控制lcd12864顯示一串數字比如:123456789可...
際上很簡單,刷新而已,你讓他按一下就在程序里去一個數字,然後刷新lcd的顯示不就得了。

3. 51單片機lcd按鍵顯示不對應怎麼辦

1、首先是要先抬起51單片機或卸下控制主板的橋寬芹防塵罩,用螺絲刀松開控制主板上的兩個螺絲。
2、其次稍稍向後拉動一下控制主板,敏畢將lcd按鍵按刻度調整到要求的角巧昌度,或者將控制主板前推。
3、最後使lcd按鍵其鎖定在45度角處,重新按照對應位置進行布置即可。

4. 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;
}

5. 老師你好,我是學電子的,遇到一個用51單片機完成的LCD顯示問題。希望能得到你的幫助。

按一就只顯示一,按二就只顯示二,這是只能顯示一個字元啊,也不叫顯示一串字元嗎?
其實,很簡單,在給LCD1602送字元時,在帶上顯示的位置坐標參數吧,這個參數,你用一個變數,每送一個字元變數加1,下次,再顯示就在下一個位置了,依次顯示就行了。注意每一行只能顯示16個字元啊,一行顯示滿了,要麼換下一行,要麼像字幕一樣向左滾動顯示。
你這程序發圖片,誰能看清楚啊,太累了,就沒心看了,誰也不會看的。這么點程序,完全可以發上來的。

6. 51單片機lcd如何顯示數組

按K1鍵。51單片機lcd按K1鍵顯示數組,51單片衫猜機是對兼容英特爾8051指令系統的單片機的統稱。51單片機廣泛應用於家用電器租塌吵、汽車弊侍、工業測控、通信設備中。

7. 用51單片機控制TH12864-15LCD顯示文字程序

/***12864並行介面參考程序,控制器st7920*/
#include <reg51.h>
#include <intrins.h>
sbit RS = P3^0;
sbit RW = P3^3;
sbit E = P3^4;
sbit PSB = P3^1; //串並口選擇
sbit RES = P3^5;
#define FIRST_ADDR 0 //定義字元/漢字顯示起始位置
//延時子程序
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++);
for(j=0;j<10;j++);
}
//測忙
void chk_busy()
{ RS=0;
RW=1;
E=1;
while((P1&0x80)==0x80);
E=0;
}
//讀數據
unsigned char lcdrd()
{ unsigned char i;
P3=0xFB;
_nop_();
E=1;
delay(5);
i=P1;
_nop_();
E=0;
return i;
}
//寫數據
void lcdwd(unsigned char dispdata)
{ chk_busy();
_nop_();
RS=1;
RW=0;
E=1;
P1=dispdata;
delay(5);
_nop_();
E=0;
_nop_();
P1=0xff;
}
//寫指令代碼
void lcdwc(unsigned char cmdcode)
{ chk_busy();
_nop_();
RS=0;
RW=0;
E=1;
P1=cmdcode;
delay(5);
_nop_();
E=0;
_nop_();
P1=0xff;
}
//初始化
void lcdreset()
{ delay(2000);
lcdwc(0x30); //選擇基本指令集
lcdwc(0x30); //選擇8bit數據流
delay(5);
lcdwc(0x0c); //開顯示(無游標、不反白)
delay(5);
lcdwc(0x01); //清除顯示,並且設定地址指針為00H
delay(5);
lcdwc(0x06); //指定在資料的讀取及寫入時,設定游標的移動方向及指定顯示的移位
}
void hzkdis(unsigned char code *s)
{ while(*s>0)
{ lcdwd(*s);
s++;
delay(500);
}
}
void hzklib()
{ lcdwc(0x80+FIRST_ADDR);
hzkdis("少小離家老大回,");
lcdwc(0x90+FIRST_ADDR);
hzkdis("鄉音無改鬢毛衰。");
lcdwc(0x88+FIRST_ADDR);
hzkdis("兒童相見不相識,");
lcdwc(0x98+FIRST_ADDR);
hzkdis("笑問客從何處來。");
}
//整屏顯示
//當ii=0時顯示上面128×32
//當ii=8時顯示下面128×32
void lcdfill(unsigned char disdata)
{ unsigned char x,y,ii;
for(ii=0;ii<9;ii+=8)
for(y=0;y<0x20;y++)
for(x=0;x<8;x++)
{ lcdwc(0x36);
lcdwc(y+0x80); //行地址
lcdwc(x+0x80+ii); //列地址
lcdwc(0x30);
lcdwd(disdata);
lcdwd(disdata);
}
}
//當ii=0時顯示上面128×32
//當ii=8時顯示下面128×32
void lcdfill_upright(unsigned char disdata)
{ unsigned char x,y,ii;
unsigned char i,f,k;
for(ii=0;ii<9;ii+=8)
for(y=0;y<4;y++)
{ f=disdata;
for(i=0;i<8;i++)
{ if((f&1)==1)
k=0xff;
else
k=0;
for(x=0;x<8;x++)
{ lcdwc(0x36);
lcdwc(y*8+i+0x80);
lcdwc(x+0x80+ii);
lcdwc(0x30);
lcdwd(k);
lcdwd(k);
}
f>>=1;
}
}
}
main()
{ unsigned char i;
i=0x55;
RES=0;
_nop_();
RES=1;
while(1)
{ PSB=1;
RW=0;
lcdreset(); //初始化LCD屏
lcdwc(0x01);
delay(1000);
lcdfill(0xff);
delay(6000);
lcdfill(i); //顯示豎條
delay(6000);
lcdfill_upright(i); //顯示橫條
delay(6000);
lcdfill(0);
lcdwc(0x01);
delay(1000);
hzklib();
delay(4000);
i=~i;
}
}

8. 如何用51單片機實現音頻信號的頻譜顯示(在LCD上顯示)

12864可以作為顯示器件

頻譜分析涉及到FFT,如果你這個不會,那還是再學習學習吧。
簡單原理: 通過快速FFT將音頻分析成多個正弦波的組合,正弦波的頻率就是高音低音,振幅就是音量的大小。
FFT運算量比較大,普通51難以接受,要選用1T的高速51,
聲音信號要通過ad進行采樣,然後將其進行分析,所以要選用一個精度高速度快的ad,一般高檔51中ad可以勝任這個工作
聲音信號在ad采樣之前需要調整成合適振幅的信號

9. 51單片機lcd如何開機顯示

1、內核初始化。
2、強制PC指針指向中斷向量表的復位中斷向量執行復位中斷函數。
3、在復位中斷函數中調用SystemInit函數,初始化時鍾,配置中斷向量表等。
4、調用main函數完成全局/靜態變數的初始化和重定位工作,初始化堆棧和庫函數。
5、跳轉到main函數中執行二內核初始化在單片機上電後首先會進行一系列內核的初始化。

10. 最簡單c51單片機液晶顯示程序

光看代碼你是不能了解它的使用歷程的,最好看看使用手冊,下面的代碼是用1602液晶
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LIKE MCU!";
uchar code table1[]="www.TXMCU.COM";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit la=P2^6;
sbit wela=P2^7;
uchar num;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}

void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
la=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x10);
}
void main()
{
init();
for(num=0;num<11;num++)
{
write_data(table[num]);
delay(20);
}
// write_com(1);
write_com(0x80+0x53);
for(num=0;num<13;num++)
{
write_data(table1[num]);
delay(20);
}
for(num=0;num<16;num++)
{
write_com(0x18);
delay(20);
}
while(1);
}

閱讀全文

與51單片機如何顯示lcd相關的資料

熱點內容
javajdbcmysql連接 瀏覽:469
製作linux交叉編譯工具鏈 瀏覽:751
編程負數除以正數 瀏覽:508
app和aso有什麼區別 瀏覽:324
手機vmap是什麼文件夾 瀏覽:34
塔科夫鎖服如何選擇伺服器 瀏覽:286
消費者生產者問題java 瀏覽:57
程序員筱柒顧默結婚的時候 瀏覽:576
安卓截長屏怎麼弄 瀏覽:473
優信辦理解壓手續怎麼那麼慢 瀏覽:603
私有雲伺服器一體機安全嗎 瀏覽:428
python的tk界面禁用滑鼠 瀏覽:184
怎麼看伺服器mac地址 瀏覽:289
安卓如何將圖鏡像翻轉 瀏覽:324
操作系統設計與實現pdf 瀏覽:547
長虹空調遙控什麼app 瀏覽:738
四軸外圓編程教程 瀏覽:947
vb在線編譯環境 瀏覽:884
編譯原理全書知識點總結 瀏覽:908
javaoa開發 瀏覽:883