當前位置:首頁 » 編程軟體 » 1602編程

1602編程

發布時間: 2022-06-02 21:54:31

㈠ 寫出編程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;}

}

㈡ 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);
}

㈢ 用51系統控制LCD1602顯示屏顯示時間的編程怎麼打啊哪位大神有模擬

不要說角度不同,每天都一樣,給他們比較相信吃的相對應的做。

㈣ 用單片機對1602液晶編程,寫程序時寫1顯示5,寫a顯示e,但是寫m時就顯示正確,求高手指點

下面的可以參考一下
/**********************lcd.h 頭文件**********************/#ifndef _LCD_H_
#define _LCD_H_
#include <reg51.h>extern void lcd_init();
extern void lcd_busy();
extern void lcd_write_dat(unsigned char dat);
extern void lcd_write_com(unsigned char dat);
extern void lcd_xy(unsigned char x,unsigned char y);#endif/****************************************** main.c 主文件******************************************/#include<reg51.h>
#include"lcd.h"
main()
{
lcd_init();
lcd_busy();
lcd_xy(6,0);
lcd_write_dat('b');

while(1);
}/********************** lcd.c 文件**********************/#include "lcd.h"
//#define uchar unsigned char
//#define uint unsigend int
#define port P0
unsigned char table[]="0123456789";
unsigned char table1[]="abcdefABCDEF";
sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;/***********************************
***00000 5*7 -> 0xff
*****0** /5*8 0x40
*****0** 0x40 ----> I
*****0** 0x40 ---->
*****0** 0x40
*****0** 0x40
***00000 0x1f
添加自己的自定義字元
***********************************/
code unsigned char ziku[]=
{
0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00, //漢字「日」
0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00, //漢字「月」
0x01,0x02,0x03,0x05,0x09,0x03,0x00,0x00, //漢字「年」左半部
0x00,0x00,0x1e,0x08,0x08,0x1e,0x08,0x08 //漢字「年」右半部
};/***************** 讀取lcd1602狀態
*****************/
unsigned char lcd_read()
{
unsigned char temp;
e=0;
port=0xff;
rs=0;
rw=1;
e=1;
temp=port;
e=0;
return temp;
}
/***************************************
檢測 lcd 是否忙碌
***************************************/
void lcd_busy()
{
unsigned char temp;
do{
temp=lcd_read();
}while((temp&0x80)==0x80);
}
/*****************************************
向lcd里寫命令
*****************************************/
void lcd_write_com(unsigned char dat)
{
lcd_busy();
e=0;
port=dat;
rs=0;
rw=0;
e=1;
e=0;
}
/***************************************
讀取lcd對應地址數據
*****************************************/
unsigned char lcd_read_dat()
{
unsigned char temp;
lcd_busy();
e=0;
port=0xff;
rs=1;
rw=1;
e=1;
temp=port;
e=0;
return temp;
}
/****************************************
向lcd里寫數據
****************************************/
void lcd_write_dat(unsigned char dat)
{
lcd_busy();
e=0;
port=dat;
rs=1;
rw=0;
e=1;
e=0;
}
/****************************************
向lcd寫字元串
*****************************************/
void lcd_gets(char *dat)
{
while(*dat!=0)
{

lcd_write_dat(*dat);
dat++;
}
}
/*****************************************
確定要寫的位子即x y 坐標
******************************************/
void lcd_xy(unsigned char x,unsigned char y)
{
switch(y)
{
case 0:lcd_write_com(0x80+x);break;//第一行第X個位置
case 1:lcd_write_com(0xc0+x);break;//0xc0==0x80+0x50 第二行第X個位置
case 2:lcd_write_com(0x94+x);break;//
case 3:lcd_write_com(0xd4+x);break;//4*20
}
}
/****************************************************
單行顯示才有5*10 其他5*8 MODE=1 5*8 MODE=0 5*10
****************************************************/
add_custom_word(unsigned char *dat,unsigned char len,unsigned char mode)
{
unsigned char n,m;
for(n=0;n<len;n++)
{
if(mode)
{
lcd_write_com(0x40+8*n);
for(m=0;m<8;m++)
{
lcd_write_dat(*dat);
dat++;
}
}
else
{
lcd_write_com(0x40+10*n);
for(m=0;m<10;m++)
{
lcd_write_dat(*dat);
dat++;
}
}
}
}
/********************************************
初始化lcd
********************************************/
void lcd_init()
{
lcd_write_com(0x01) ;//清屏
lcd_write_com(0x03) ;
lcd_write_com(0x3c) ;
lcd_write_com(0x40) ;
lcd_write_com(0x0c) ;
add_custom_word(ziku,4,1); //初始化自定義字元
}
/********************************************
1ms 為基本單位的延時函數
********************************************/
void delay(unsigned char z)
{
unsigned char x,y,a;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
for(a=1;a>0;a--) ;
}

㈤ 用單片機做lcd1602編程,i^2c匯流排,以及AD轉換子程序和比較上下限怎麼編啊,最好有程序和註解

我發給你了,注意查收,但是比較上下限,其實你可以
if(a>b);//如果b是上限值
a=b;
if(c
評論
0
13
載入更多

㈥ 最近學習在學習單片機1602液晶的編程,只用4位數據線傳送還是不熟悉,求高手指導,十分感謝……

某非是串列,不過很少用這個

㈦ 1602編程

我看過的程序里,有人用這個做函數名,表示向1602寫指令的函數
我猜是「使游標左移」,同

RS=0,R/W=0

0001 1000B

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:705
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:968
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:676
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:828
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:737
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1076
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:308
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:188
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:875
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:829