Ⅰ 利用51單片機控制LCD12864顯示一串數字比如:123456789可以通過一個按鍵控制顯示的數字一個一個刪除嗎
可以的,直接定位,和寫數字一樣,只是寫的0x00就可以,
Ⅱ 關於單片機的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的一些介紹,有個初步了解,很多基礎的東西看了就明白,否則,提問的都是很低級的東西。
Ⅲ 單片機怎麼把一個實時的數字顯示到液晶屏12864(帶字型檔)上
可以直接賦值,代碼如下 ,
寫指令顯示那一行 void lcd_wcmd(0x80)第一行 ,
數據void lcd_wcmd(temp )
Ⅳ 做一個單片機液晶顯示數字的程序,程序沒錯,但是就是屏幕就是沒有顯示,麻煩大佬們看一看
程序只是沒有邏輯錯誤和語法錯誤,但液晶的控制貌似有些問題。給你一段1602的驅動程序做參考。
#define LCD1602_FLAG
#define LCD1602_PORT P1
#include<reg52.h>
#include<stddef.h>
#include"dtype.h"
sbit lcd1602_rs=P3^7;
sbit lcd1602_e=P3^5;
sbit lcd1602_rw=P3^6;
sbit lcd1602_busy=P1^7;
/*
************************************
* 函數名稱:lcd1602_CheckBusy()
* 函數功能:狀態查詢
************************************
*/
void lcd1602_CheckBusy()
{
do
{
lcd1602_busy=1;
lcd1602_rs=0;
lcd1602_rw=1;
lcd1602_e=0;
lcd1602_e=1;
}
while(lcd1602_busy);
}
/*
***************************************
* 函數名稱: lcd1602_WriteCmd()
* 函數功能:寫命令
* 入口參數:命令字
* 出口參數:無
***************************************
*/
void lcd1602_WriteCmd(const INT8U cmd)
{
lcd1602_CheckBusy();
lcd1602_rs=0;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=cmd;
lcd1602_e=0;
}
/*
*******************************************
* 函數名稱:lcd1602_WriteData()
* 函數功能:寫數據
* 入口參數:c--待寫數據
* 出口參數:無
*********************************************
*/
void lcd1602_WriteData(const INT8U c)
{
lcd1602_CheckBusy();
lcd1602_rs=1;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=c;
lcd1602_e=0;
}
/*
***********************************************
* 函數名稱:lcd1602_Init()
* 函數功能:初始化LCD
* 入口參數:無
* 出口參數:無
***********************************************
*/
void lcd1602_Init()
{
lcd1602_WriteCmd(0x38); //顯示模式為8位2行5*7點陣
lcd1602_WriteCmd(0x0f); //display enable,flag enable,flash enable,
lcd1602_WriteCmd(0x06); //flag move to right,screen don't move
lcd1602_WriteCmd(0x01); //clear screen
}
/*
************************************************
* 函數名稱:lcd1602_Display()
* 函數功能: 字元顯示
* 入口參數:ptr--字元或字元串指針
* 出口參數:無
* 說 明:用戶可通過以下方式來調用:
* 1)lcd1602_Display("Hello,world!");
* 2) INT8U 存儲類型 txt[]="要顯示的字元串";
* 或者 INT8U 存儲類型 txt[]={'t','x','t',..,'\0'};
* INT8U *ptr;
* ptr=&txt;
* lcd1602_Display(ptr);
* 或 lcd1602_Display(txt);
* 或 lcd1602_Display(&txt);
************************************************
*/
void lcd1602_Display(const INT8U *ptr)
{
INT8U data i=0;
INT8U *data q;
q=ptr;
lcd1602_WriteCmd(0x80);
while(q!=NULL && (*q!='\0') && i<16)
{
lcd1602_WriteData(*q);
q++;
i++;
}
lcd1602_WriteCmd(0xc0);
while(q!=NULL && (*q!='\0') && i>=16 && i<32)
{
lcd1602_WriteData(*q);
q++;
i++;
}
}
Ⅳ c51單片機怎樣讓液晶顯示數字999
這是我的程序,不過 不同的板子程序是不一樣的,具體要看你的I/O口了
#include<reg52.h>
#define uchar unsigned char
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit la=P2^6;
sbit wela=P2^7;
void write_com(uchar);
void write_date(uchar);
void init();
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
init();
write_date('999');
while(1);
}
void init()
{
la=0;
wela=0;
lcdrs=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
Ⅵ 51單片機lcd1602如何顯示數字變數
1602是可以顯示字元的,如'1','2'等,可以設置一個字元串,如char AA[]={'0123456789'}
那麼設置一個變數i, AA[i]就行了,
Ⅶ 關於單片機用液晶屏顯示數字的問題
用液晶顯示數字比起用數碼管來說更方便,採用7段數碼管來顯示,需要定時掃描,打個類似的比方:就猶如動態RAM和靜態RAM一樣,用液晶顯示,只要初始化後,送位置和顯示內容就可以了。總體價格更便宜,比如1602液晶,不到20元錢,但可以顯示兩行共32個字元,而32個數碼管,總的價格要到50元左右,相差還是很大的。