久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7933|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

第13章-1602液晶

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111078 發(fā)表于 2016-3-28 21:32 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機(jī)輕松入門—基于STC15W4K系列(C語言版)
李友全
編著:http://www.zg4o1577.cn/bbs/dpj-37954-1.html
13章 1602液晶

1 1602液晶電路圖

2 LCD1602顯示字符串與整數(shù)
3 1602液晶顯示漢字與特殊符號
1 1602液晶電路圖
1602液晶可顯示2行英文字符,每行最多16個字符,市面上買來的1602液晶一般是可以
直接互換使用的,與數(shù)碼管顯示最大的區(qū)別在于1602液晶顯示字符更多,但亮度比不上 數(shù)碼管顯示

1號單片機(jī)與D/A輸出芯片TLC5615連接電路如圖所示 。


背光耗電大,一般不接

2 LCD1602顯示字符串與整數(shù)

例13.1 LCD1602顯示字符串與整數(shù),要求1602上電立即在第一行顯示字符串"LCD1602- TEST-OK",在第二行顯示一個字符串與一個固定不變的整數(shù)“Data = 123456789”。 說明:本例是最簡單的字符串與整數(shù)顯示程序,程序移植時只需要根據(jù)實(shí)際硬件連接調(diào)整 LCD1602.H中定義的引腳即可。

//************************* LCD1602.H ***************************

#include "STC15W4K.H"
#include "intrins.h" // _nop_()函數(shù)需要
sbit
RS
=
P1^3;
//
根據(jù)實(shí)際硬件連接修改
sbit
RW
=
P1^2;
//
根據(jù)實(shí)際硬件連接修改
sbit
E
=
P4^7;
//
根據(jù)實(shí)際硬件連接修改
#define
DPORT
P0


//
根據(jù)實(shí)際硬件連接修改
void
LCD1602_Init();


//
初始化
void
SetCur(unsigned
char Para);
//
設(shè)置光標(biāo)
void WriteString(unsigned char xPos,unsigned char yPos,unsigned char *s);
// 寫字符串
主程序代碼如下:

#include "LCD1602.H"

#include "myfun.H"

void main()
{
unsigned
char
xPos,yPos;
//
X坐標(biāo)、Y坐標(biāo)
unsigned
char
*s="Data=";



unsigned
char
DispBuf[9];
//
存放4個待發(fā)送ASCII碼
unsigned
long
TestDat=123456789;
//
臨時變量
port_mode();
//
所有IO口設(shè)為準(zhǔn)雙向弱上拉方式。
delay100ms();
//
等待LCD1602上電時內(nèi)部復(fù)位,很重要
LCD1602_Init();






SetCur(CurFlash);//開光標(biāo)顯示、閃爍,NoCur—有顯示無光標(biāo),NoDisp—無顯示,
//CurNoFlash—有光標(biāo)但不閃爍,CurFlash—有光標(biāo)且閃爍
xPos=0;// xPos表示水平右移字符數(shù)(0-15)
yPos=1;// yPos表示垂直下移字符數(shù)(0-1)
WriteString(0,0,"LCD1602-TEST-OK");
// X坐標(biāo)、Y坐標(biāo)、字符串,屏幕左上角為坐標(biāo)原點(diǎn),水平:0-15,垂直:0-1

Long_Str(TestDat,DispBuf); // 同第4章8節(jié)“單片機(jī)串口向計算機(jī)串口發(fā)送2進(jìn)制…” WriteString(xPos,yPos,s); // X坐標(biāo)、Y坐標(biāo)、字符串,屏幕左上角為坐標(biāo)原點(diǎn) xPos=5;

yPos=1; WriteString(xPos,yPos,DispBuf); while(1);

}
實(shí)驗效果如圖

3 1602液晶顯示漢字與特殊符號
1602液晶顯示漢字與特殊符號需要使用自定義字符的方式實(shí)現(xiàn),實(shí)際非常簡單,我們在前面 例子的基礎(chǔ)上添加很少的代碼就可以實(shí)現(xiàn),下面先看一個最簡單的基本實(shí)例。
例13.3 1602第1行顯示“一二三四五六日℃”。
//***************************** main.C ********************************
#include "LCD1602.H"
#include "myfun.H" void main()
{
port_mode(); // 所有IO口設(shè)為準(zhǔn)雙向弱上拉方式。 delay100ms(); // 等待LCD1602上電時內(nèi)部復(fù)位 LCD1602_Init();
WriteROM(); // 將自定義字形碼寫入LCD1602內(nèi)部存儲器 WriteChar(0,0,0); // 顯示“一”,x坐標(biāo)、y坐標(biāo),ASCII碼
WriteChar(1,0,1); // 顯示“二” WriteChar(2,0,2); // 顯示“三” WriteChar(3,0,3); // 顯示“四”
WriteChar(4,0,4); // 顯示“五” WriteChar(5,0,5); // 顯示“六”
WriteChar(6,0,6); // 顯示“日” WriteChar(7,0,7); // 顯示“°C”
while(1);
}

//***************************** LCD1602.C ********************************
unsigned char code table[]=
{
0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00, // 一,顯示時的ASCII碼 0x00
0x00,0x00,0x00,0x0e,0x00,0xff,0x00,0x00, // 二,顯示時的ASCII碼 0x01
0x00,0x00,0xff,0x00,0x0e,0x00,0xff,0x00, // 三,顯示時的ASCII碼 0x02
0x00,0x00,0xff,0xf5,0xfb,0xf1,0xff,0x00, // 四,顯示時的ASCII碼 0x03
0x00,0xfe,0x08,0xfe,0x0a,0x0a,0xff,0x00, // 五,顯示時的ASCII碼 0x04
0x00,0x04,0x00,0xff,0x00,0x0a,0x11,0x00, // 六,顯示時的ASCII碼 0x05
0x00,0x1f,0x11,0x1f,0x11,0x11,0x1f,0x00, // 日,顯示時的ASCII碼 0x06
0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00, // ℃,顯示時的ASCII碼 0x07
};
// 將自定義字形碼寫入1602內(nèi)部存儲器( 固定代碼,不要改動)
void WriteROM()
{
unsigned char i;
LcdWriteCmd(0x40); // 操作CGRAM的命令碼
for(i=0;i<64;i++) // 寫入數(shù)組中數(shù)據(jù)
{
LcdWriteDat(table[ i ]);
}
}
對于LCD1602.C中字形碼數(shù)組的獲取,可以采用手工方式,也可以采用字模軟件實(shí)

現(xiàn),由于1602液晶每個字符顯示位置是一個5×8點(diǎn)陣(5列8行),如圖13-2所示,將 點(diǎn)陣的某一行中要顯示的點(diǎn)用1表示,不顯示的點(diǎn)用0表示,采用一個字節(jié)存放一行 的方式,字節(jié)高3位是無關(guān)的,8個字節(jié)表示一個字形碼,允許最多自定義8個字形

碼。
當(dāng)處理字形碼較多時,可采用字模軟件來操作會更加方便,我們以“字模提取V2.2”
為例,進(jìn)入軟件后按圖13-3所示步驟操作,雖然我們可以選取寬度5,但等效于8, 所示得到的是8×8點(diǎn)陣。
我們再點(diǎn)左側(cè)的“模擬動畫”菜單,點(diǎn)擊“放大格點(diǎn)”選項,一直放大到最大,然后我們
就可以在8*8 的點(diǎn)陣圖形中用鼠標(biāo)點(diǎn)擊填充黑點(diǎn),注意前三列空著不填充,字模軟 件是把黑色取為1,白色取為0,與手工取模方式正好相同,圖形畫好后,點(diǎn)一下 “參數(shù)設(shè)置”菜單里的“其他選項”,我們選擇“橫向取!, 然后選擇“取模方式”菜單,
點(diǎn)一下“C51 格式”后,在“點(diǎn)陣生成區(qū)”自動產(chǎn)生了8 個字節(jié)的數(shù)據(jù),這8 個字節(jié)的數(shù)
據(jù)就是對應(yīng)取出來的“!,對于復(fù)雜點(diǎn)的漢字,可以使用緊挨著的2個或4個5×8點(diǎn) 陣圖形進(jìn)行拼接顯示。

例13.4 1602第1行顯示“2014年11月30日”,主程序代碼如下。
#include "LCD1602.H"
#include "myfun.H"
unsigned char str[16]; // 最長字符16字節(jié),
void main()
{
unsigned char str[]={'2','0','1','4',0x00,'1','1',0x01,'3','0',0x02};
// 顯示“2014年11月30日”, 0x00=年, 0x01=月, 0x02=日。

port_mode(); // 所有IO口設(shè)為準(zhǔn)雙向弱上拉方式。 delay100ms(); // 等待LCD1602上電時內(nèi)部復(fù)位 LCD1602_Init();

WriteROM(); // 將自定義字形碼寫入LCD1602內(nèi)部存儲器 WriteStringCN(0,0,str,11);
while(1);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:108355 發(fā)表于 2016-8-6 12:03 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

板凳
ID:108355 發(fā)表于 2016-8-6 14:45 | 只看該作者
謝謝分享  樓主有《51單片機(jī)輕松入門—基于STC15W4K系列》   例子的代碼 求發(fā)一份齊全    214704816@qq.com  感激不盡
回復(fù)

使用道具 舉報

地板
ID:288930 發(fā)表于 2019-1-18 13:59 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報

5#
ID:928284 發(fā)表于 2021-11-30 17:12 | 只看該作者
輸入漢字的例子,特精彩。
回復(fù)

使用道具 舉報

6#
ID:1032507 發(fā)表于 2022-10-26 15:55 | 只看該作者
這個教程太攢了,剛好要用到,非常感謝!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 特一级毛片 | 久久久久久999 | 国产一区二区三区在线 | 久久精品91久久久久久再现 | 国内自拍第一页 | 一区二区三区四区av | 羞羞的视频免费在线观看 | 欧美激情一区二区三级高清视频 | 有码一区| 成人日批视频 | 亚洲中午字幕 | 人人看人人射 | 久久国产高清 | 午夜av一区二区 | 成人精品一区二区三区 | 亚洲 中文 欧美 日韩 在线观看 | 国产精品美女久久久久久免费 | 男人天堂网址 | 国产精品成人一区 | 精品99久久久久久 | 91精品国产自产在线老师啪 | 国产精品视频专区 | 成人免费观看男女羞羞视频 | 日韩福利在线 | 国产激情一区二区三区 | 国产精品视频999 | 久久精品一区 | 青青操av| 国产精品久久久久久av公交车 | 青春草国产 | 日本欧美大片 | 欧美午夜精品理论片a级按摩 | 久久免费视频1 | 中文字幕在线观看一区二区 | 亚洲成人一区 | 久久精品屋 | 亚洲欧美一区二区三区在线 | 亚洲成人免费网址 | 99国产精品99久久久久久 | 天天操天天操 | 羞羞视频免费观看 |