這篇文章主要來寫一下12864液晶顯示的程式,至於一些暫存器的設定,和12864液晶的資料介紹,大家可以參考附件中的12864液晶的datesheet。我在這裡不做詳細介紹了.
我在這裡直接貼出程式,程式注釋比較清楚,相信大家對照dateshee可以看明白。
/***********************************
程式功能:無字型檔12864液晶的顯示
編譯環境:keil4
執行環境:proteus7.7
取模軟體使用的是:zm201
***********************************/
#include
#define uchar unsigned char
#define uint unsigned int
#define port p0 //db0~db7資料口
sbit e=p2^0;//使能
sbit rw=p2^1;//讀寫
sbit rs=p2^2;//資料/命令
sbit cs2=p2^3;//片選
sbit cs1=p2^4;
sbit busy=p0^7;//檢測忙
uchar code hz[32]=,
/*-- 文字: 山 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 有 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 路 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 勤 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 為 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 徑 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: , --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 學 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 海 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 無 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 涯 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 苦 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 作 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 舟 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/
,/*-- 文字: 。 --*/
/*-- 仿宋_gb231212; 此字型下對應的點陣為:寬x高=16x16 --*/,,
//"聯",14
,//"系",15
,//"方",16
,//"式",17
};uchar code num[16]=,
//"0",0
,//"1",1
,//"2",2
,//"3",3
,//"4",4
,//"5",5
,//"6",6
,//"7",7
,//"8",8
//"9",9
};uchar code sign[16]=,
//"!",0
,//":",1
//"q",2
}; //延時
void delay(uint n)
//判斷是否忙
void check()
//寫指令
void sendcommand(uchar command)
//寫資料
void writedata(uchar dat)
//選螢幕 0--全屏,1--左屏,2--右屏;
void select(uint n) }
//頁void setpage(uchar page)
//列void setcolumn(uchar column)
//起始行
void setline(uchar line)
//螢幕開關顯示 0--關,1--開;
void seton(uint n)
//清屏 0--全屏,1--左屏,2--右屏;
void clear(uint n)
}//初始化
void init(uchar i)
//顯示漢字 16*16顯示
void show16(uchar page,uchar column,uchar screen,uchar method,uchar *str) //頁,列,
setpage(page+1);
setcolumn(column);
for(i=0;i<16;i++)
} //顯示數字 8*16顯示
void show8(uchar page,uchar column,uchar screen,uchar method,uchar *str)
setpage(page+1);
setcolumn(column);
for(i=0;i<8;i++) }
void welcome()
// show8(2,32,2,0,sign[0]); //!
for(i=0;i<4;i++)
show8(4,0,2,0,sign[1]); //:
show8(6,0,1,0,sign[2]); //q
show8(6,8,1,0,sign[2]); //q
show8(6,16,1,0,sign[1]); //:
//以下數字均為反白顯示。
show8(6,32,1,1,num[4]); //4
show8(6,40,1,1,num[3]); //3
show8(6,48,1,1,num[5]); //5
show8(6,56,1,1,num[8]); //8
show8(6,0,2,1,num[3]); //3
show8(6,8,2,1,num[5]); //5
show8(6,16,2,1,num[1]); //1
show8(6,24,2,1,num[8]); //8
show8(6,32,2,1,num[1]); //1
}void main()
}}
12232液晶顯示
終於把這個程式調好啦,此程式可以按乙個數字鍵,同時顯示在液晶螢幕上拉!剛開始用寫乙個位址命令到液晶,再寫乙個資料到液晶,調不通,老是出現乙個鍵按下去,顯示多個一樣的數字鍵值!最後用下面的程式,將按鍵寫乙個顯示乙個,就ok啦!if keyscan 1 keyscan 9 數字鍵0 9 include ...
液晶顯示模組分類
1.液晶顯示模組,按照顯示的內容可以分為段式液晶顯示模組 字元型液晶顯示模組及圖形點陣液晶顯示模組 19264 三大類。1.1 段式液晶顯示模組主要顯示7段碼的8字及固定的圖示顯示,優點是所用液晶顯示控制驅動器與微控制器介面簡單 便宜,可廣泛應用於煤氣表 水表 電表 空調 熱水器 電冰箱,電壓表 電...
液晶顯示模組的分類
液晶顯示模組即 liquid crystal module 簡稱 lcm 是一種將液晶顯示器件 lcd 連線件 積體電路 pcb線路板 背光源 結構件裝配在一起的元件。主要完成液晶顯示器的連線與顯示功能,將電訊號轉變為光訊號的元件。液晶顯示模組按照不同的方法有不同的分類 1.按照顯示的內容可以分為段...