標題: 第13章-1602液晶 [打印本頁]
作者: wul 時間: 2016-3-28 21:32
標題: 第13章-1602液晶
13章 1602液晶
1 1602液晶電路圖
2 LCD1602顯示字符串與整數
3 1602液晶顯示漢字與特殊符號
1 1602液晶電路圖
1602液晶可顯示2行英文字符,每行最多16個字符,市面上買來的1602液晶一般是可以
直接互換使用的,與數碼管顯示最大的區別在于1602液晶顯示字符更多,但亮度比不上 數碼管顯示
1號單片機與D/A輸出芯片TLC5615連接電路如圖所示 。
0.png (210.66 KB, 下載次數: 172)
下載附件
2016-3-28 21:17 上傳
背光耗電大,一般不接
2 LCD1602顯示字符串與整數
例13.1 LCD1602顯示字符串與整數,要求1602上電立即在第一行顯示字符串"LCD1602- TEST-OK",在第二行顯示一個字符串與一個固定不變的整數“Data = 123456789”。 說明:本例是最簡單的字符串與整數顯示程序,程序移植時只需要根據實際硬件連接調整 LCD1602.H中定義的引腳即可。
//************************* LCD1602.H ***************************
#include "STC15W4K.H"
#include "intrins.h" // _nop_()函數需要
sbit | RS | = | P1^3; | // | 根據實際硬件連接修改 |
sbit | RW | = | P1^2; | // | 根據實際硬件連接修改 |
sbit | E | = | P4^7; | // | 根據實際硬件連接修改 |
#define | DPORT | P0 |
| // | 根據實際硬件連接修改 |
void | LCD1602_Init(); |
| // | 初始化 |
void | SetCur(unsigned | char Para); | // | 設置光標 |
void WriteString(unsigned char xPos,unsigned char yPos,unsigned char *s);
// 寫字符串
主程序代碼如下:
#include "LCD1602.H"
#include "myfun.H"
void main()
{
unsigned | char | xPos,yPos; | // | X坐標、Y坐標 |
unsigned | char | *s="Data="; |
|
|
unsigned | char | DispBuf[9]; | // | 存放4個待發送ASCII碼 |
unsigned | long | TestDat=123456789; | // | 臨時變量 |
port_mode(); | // | 所有IO口設為準雙向弱上拉方式。 |
delay100ms(); | // | 等待LCD1602上電時內部復位,很重要 |
LCD1602_Init(); |
|
|
SetCur(CurFlash);//開光標顯示、閃爍,NoCur—有顯示無光標,NoDisp—無顯示,
//CurNoFlash—有光標但不閃爍,CurFlash—有光標且閃爍
xPos=0;// xPos表示水平右移字符數(0-15)
yPos=1;// yPos表示垂直下移字符數(0-1)
WriteString(0,0,"LCD1602-TEST-OK");
// X坐標、Y坐標、字符串,屏幕左上角為坐標原點,水平:0-15,垂直:0-1
Long_Str(TestDat,DispBuf); // 同第4章8節“單片機串口向計算機串口發送2進制…” WriteString(xPos,yPos,s); // X坐標、Y坐標、字符串,屏幕左上角為坐標原點 xPos=5;
yPos=1; WriteString(xPos,yPos,DispBuf); while(1);
}
8.jpg (82.24 KB, 下載次數: 174)
下載附件
2016-3-28 23:55 上傳
實驗效果如圖
3 1602液晶顯示漢字與特殊符號
1602液晶顯示漢字與特殊符號需要使用自定義字符的方式實現,實際非常簡單,我們在前面 例子的基礎上添加很少的代碼就可以實現,下面先看一個最簡單的基本實例。
例13.3 1602第1行顯示“一二三四五六日℃”。
//***************************** main.C ********************************
#include "LCD1602.H"
#include "myfun.H" void main()
{
port_mode(); // 所有IO口設為準雙向弱上拉方式。 delay100ms(); // 等待LCD1602上電時內部復位 LCD1602_Init();
WriteROM(); // 將自定義字形碼寫入LCD1602內部存儲器 WriteChar(0,0,0); // 顯示“一”,x坐標、y坐標,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內部存儲器( 固定代碼,不要改動)
void WriteROM()
{
unsigned char i;
LcdWriteCmd(0x40); // 操作CGRAM的命令碼
for(i=0;i<64;i++) // 寫入數組中數據
{
LcdWriteDat(table[ i ]);
}
}
12.jpg (59.89 KB, 下載次數: 166)
下載附件
2016-3-28 23:55 上傳
對于LCD1602.C中字形碼數組的獲取,可以采用手工方式,也可以采用字模軟件實
現,由于1602液晶每個字符顯示位置是一個5×8點陣(5列8行),如圖13-2所示,將 點陣的某一行中要顯示的點用1表示,不顯示的點用0表示,采用一個字節存放一行 的方式,字節高3位是無關的,8個字節表示一個字形碼,允許最多自定義8個字形
碼。
當處理字形碼較多時,可采用字模軟件來操作會更加方便,我們以“字模提取V2.2”
為例,進入軟件后按圖13-3所示步驟操作,雖然我們可以選取寬度5,但等效于8, 所示得到的是8×8點陣。
14.jpg (73.48 KB, 下載次數: 193)
下載附件
2016-3-28 23:55 上傳
我們再點左側的“模擬動畫”菜單,點擊“放大格點”選項,一直放大到最大,然后我們
就可以在8*8 的點陣圖形中用鼠標點擊填充黑點,注意前三列空著不填充,字模軟 件是把黑色取為1,白色取為0,與手工取模方式正好相同,圖形畫好后,點一下 “參數設置”菜單里的“其他選項”,我們選擇“橫向取!, 然后選擇“取模方式”菜單,
點一下“C51 格式”后,在“點陣生成區”自動產生了8 個字節的數據,這8 個字節的數
據就是對應取出來的“!,對于復雜點的漢字,可以使用緊挨著的2個或4個5×8點 陣圖形進行拼接顯示。
例13.4 1602第1行顯示“2014年11月30日”,主程序代碼如下。
#include "LCD1602.H"
#include "myfun.H"
unsigned char str[16]; // 最長字符16字節,
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口設為準雙向弱上拉方式。 delay100ms(); // 等待LCD1602上電時內部復位 LCD1602_Init();
WriteROM(); // 將自定義字形碼寫入LCD1602內部存儲器 WriteStringCN(0,0,str,11);
while(1);
}
17.jpg (75.31 KB, 下載次數: 201)
下載附件
2016-3-28 23:55 上傳
作者: kangbaoi 時間: 2016-8-6 12:03
謝謝分享
作者: kangbaoi 時間: 2016-8-6 14:45
謝謝分享 樓主有《51單片機輕松入門—基于STC15W4K系列》 例子的代碼 求發一份齊全 214704816@qq.com 感激不盡
作者: 祝云章 時間: 2019-1-18 13:59
謝謝分享!
作者: lsg0280 時間: 2021-11-30 17:12
輸入漢字的例子,特精彩。
作者: nanjingcxy2008 時間: 2022-10-26 15:55
這個教程太攢了,剛好要用到,非常感謝!
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
亚洲理论片|
精品一区二区三区免费
|
欧美性猛交一区二区三区精品
|
四虎影
|
精品福利一区
|
国产精品偷乱一区二区三区
|
国产精品99久久久久久久久久久久
|
国产黄色在线
|
欧美日韩黄色片
|
欧美日本国产
|
欧美狠狠操
|
欧美日韩亚洲综合
|
成人黄性视频
|
天天干天天干
|
久久久夜色精品
|
999久久久精品
|
亚洲高清免费视频
|
天天干天天弄
|
超碰97免费
|
精品国产91乱码一区二区三区
|
国产草草影院
|
久久久蜜桃
|
亚洲精品午夜
|
成人在线视频观看
|
黄色小视频在线免费观看
|
国产一级在线
|
国产三级免费观看
|
久久久久久一区二区
|
精品国产一二三
|
日b免费视频
|
一极黄色片
|
极品美女一区二区三区
|
久久a级片
|
亚洲成人黄色
|
欧美大片一区二区
|
91成人在线
|
亚洲精品视频免费
|
亚色在线
|
黄色福利视频
|
五月天视频
|
www.av在线视频|