lcd1602的編程
A. 想做一個基於51單片機按鍵計數用LCD1602顯示的編程0-99
加上這些東西,將顯示語句換成1602_display(i)即可,
當然你可以將其改為只顯示2個數字
sbit rw=P1^4;
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 1602_display(uchar temp) //液晶顯示一個8 位二進制數
{
uchar A1,A2,A3;
A1=temp/100;//分離百位、十位、個位
A2=temp/10%10;
A3=A2t%10;
write_com(0x80);//第1行,第1字
write_date(A1+0x30);
Delay1ms(1);
write_date( A2+0x30);
Delay1ms(1);
write_date(A3+0x30);
Delay1ms(1);
}
B. LCD1602用C語言編程如何顯示字元
1、需要修改引腳設置,就到LCD1602.h中修改
2、主函數頭寫上#include「LCD1602.h」,將「LCD1602.c」添加到項目中
3、使用的時候先調用LCD1602_initialise();對1602初始化;其中游標移動方式已經設定好了
4、根據需要開關函數開關(注釋掉定義就是關閉相應函數,取消注釋則是打開),調用相關函數。關於函數功能,庫文件注釋得很詳細,請自行查看;
提供一段main()函數代碼,供參考:
#include<REG52.h>
#include"LCD1602.h"
voidmain(void)
{
LCD1602_initialise();
LCD1602_displayStr(0,0,"HelloWorld!");
LCD1602_displayInt(1,0,2015);
while(1);
}
C. 1602與單片機的編程介面設置
設置步驟如下
1、先插接好LCD1602液晶,插接到LCD1602排針上(位於數碼管上方16個孔的排母)
插接方向:插接完成後液晶屏幕處於開發板內(蓋住數碼管)
一定要把排針全部插入16P排母,插接是注意不能錯位。
如果排針有歪斜,用戶可以用手慢慢的掰正即可,不會斷掉或影響使用,因為排針受外力很容易歪斜,但韌性好。
2、打開開發板電源,燒入配套LCD1602顯示的程序。
3、如果沒有顯示字元,或者出現全黑的方格和字跡不清晰,可以找一個合適的工具,有螺絲刀最好,調節16P排母左邊的「液晶對比度電位器」順時針慢慢調節,直到顯示清楚,順時針調節增加對比度,逆時針減小對比度。
D. lcd1602的C語言編程 p++和*p的意思是
你好:
lcd1602的響應速度相對於單片機的速度來說是偏慢的。
舉個簡單的例子,把一桶油通過漏斗向一個瓶子里倒,倒油的速度,即流量必須維持在一定范圍之內,倒得太快油會從漏斗頂部溢出來,這樣就浪費掉了。我們通過眼睛可以判斷並使油麵保持在頂面以下,以漏斗的額定流量來倒油,這樣效率最高。
而對於單片機來說,1602好比那個瓶子漏斗,寫入1602中要顯示的數據好比油,如果以單片機的高運行速度向1602寫數據就很可能造成上面所說的溢出,比如連續寫入abc,結果只顯示出了a,這是因為1602的顯示晶元每次都要花時間來處理輸入的ascii碼數據,並把它顯示出來。而我們卻不容易主動地去控制寫入數據的速度,所以1602使用忙信號就有必要了,每次單片機只有檢測到忙信號為0,即不忙時,才向1602發數據。比如要顯示abc,則這樣操作,寫a---判忙---寫b---判忙---寫c---判忙。這樣就不會出錯了。
這幾年推出的lcd,像手機的屏響應速度就比較快,而1602這個古董我用示波器測過,大約40us左右的忙處理時間,而很多速度快的單片機的指令周期都是ns級的。也就是說單片機相當一段時間都在『等』lcd。#include
#defineucharunsignedchar
#defineuintunsignedint
voidbusy(void)
{uchartemp=0x80;//初始化temp最高位為1,使得能夠進入下面
//的while循環
p0=0xff;(p0就是8個數據口)
rs=0;//設置命令操作
rw=1;//設置讀操作
en=1;//使能
delay(100);(這是設的延時函數,不用解釋)
while(temp&0x80)//判忙,一旦表達式為假,即temp最高位為0,
//則表示1602不忙,跳出while.
{temp=p0;delay(20);}//把p0的的高位讀入temp,延時
en=0;//關閉使能信號
}每次讀寫操作都要調用這個busy函數
E. 用單片機做lcd1602編程,i^2c匯流排,以及AD轉換子程序和比較上下限怎麼編啊,最好有程序和註解
我發給你了,注意查收,但是比較上下限,其實你可以
if(a>b);//如果b是上限值
a=b;
if(c
評論
0
13
載入更多
F. 寫出編程LCD1602液晶的初始化程序
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define lcd_ports P1
sbit lcdrs=P3^5;
sbit lcdrw=P3^3;
sbit lcde=P3^4;
void delay(uint z) //延遲子程序
{
uchar i,j;
for(i=z;i>0;i--)
for(j=256;j>0;j--);
}
void write_com(uchar com) //1602寫指令
{
lcdrs=0;
P1=com;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void write_data(uchar date) //1602寫數據,寫的是你要顯示數據的ASCLL碼值
{
lcdrs=1;
P1=date;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void init() //初始化
{
lcdrw=0;
lcde=0;
write_com(0x38); //使液晶顯示點陣
write_com(0x0e); //初始設置
write_com(0x06); //初始設置
write_com(0x01); //清零
write_com(0x80+0x00); //使指針指向第一行第一列
}
void main()
{
init();
while(1){
write_com(0x80);//從第一行第一列開始寫數據。
write_data(0x73); //顯示s字元
write_data(0x69);//第一行第二列顯示字元i
write_data(0x6e);//第一行第三列顯示字元n
write_data(0x65);//第一行第四列顯示字元e;}
}