我是个单片机新手,我想问一下如何在lcd1602上显示中文, 51单片机编写lcd1602显示程序,第一行显示自己的姓名,...
\u7ed9\u4e2a\u5355\u7247\u673a\u6db2\u66761602\u663e\u793a\u6c49\u5b57\u7684\u7a0b\u5e8f,\u8c22\u8c2251\u5355\u7247\u673a\u5bf9lcd1602\u4e00\u4e9b\u57fa\u7840\u7a0b\u5e8f
#include
#define dataport P1
sbit RS=P2^ 6;
sbit RW=P2^5;
sbit EN=P2^4;
//========================
//=========================
void waitfor() //\u68c0\u6d4b\u5fd9\u4fe1\u53f7\u51fd\u6570
{
dataport=0xff;
RS=0;RW=1;_nop_(); //\u9009\u62e9\u6307\u4ee4\u5bc4\u5b58\u5668 \u8bfb\u64cd\u4f5c
EN=1;_nop_(); //\u4f7f\u80fd\u64cd\u4f5c
while(dataport&0x80); //\u5982\u679c\u6700\u9ad8\u4f4d\u662f1 \u8868\u793a1602\u6b63\u5fd9 \u539f\u5730\u8e0f\u6b65 \u5fd9\u5b8c\u540e\u82af\u7247\u4f1a\u5c06\u9ad8\u4f4d\u62c9\u4f4e
EN=0;
}
//======================
void writedata(unsigned char dataw) //\u5199\u6570\u636e\u5230lcm
{
waitfor(); //\u6d4b\u5fd9
RS=1;RW=0;_nop_(); //\u9009\u62e9\u6570\u636e\u5bc4\u5b58\u5668 \u5199\u64cd\u4f5c
dataport=dataw;_nop_(); //\u5c06\u6570\u636e\u9001\u5230\u6570\u636e\u53e3
EN=1;_nop_();_nop_();EN=0; //\u4f7f\u80fd
}
//==========================
void writecmd(unsigned char cmd) //\u5199\u547d\u4ee4\u5230lcm
{
waitfor();
RS=0;RW=0;_nop_();
dataport=cmd;_nop_();
EN=1;_nop_();_nop_();EN=0;
}
//===========================
void init(void) // \u521d\u59cb\u5316\u51fd\u6570
{
writecmd(0x38); //\u529f\u80fd\u8bbe\u5b9a 8\u4f4d\u6570\u636e\u4f20\u8f93 \u53cc\u884c\u663e\u793a
writecmd(0x0c);//\u663e\u793a\u5668\u5f00\u5173
writecmd(0x01);//\u6e05\u5c4f
writecmd(0x06);//\u5b57\u7b26\u8fdb\u5165\u6a21\u5f0f \u6bcf\u8fdb\u5165\u4e00\u4e2a\u5b57\u7b26\u5149\u6807\u5411\u53f3\u79fb\u52a8\u4e00\u683c \u539f\u6709\u5b57\u7b26\u4e0d\u52a8
//\u6211\u5728\u521a\u5f00\u59cb\u5b66\u7684\u65f6\u5019\u4e0d\u77e5\u9053\u4e0b\u4e00\u4e2a\u5b57\u7b26\u663e\u793a\u5728\u54ea \u662f\u548cAC\u503c\u6709\u5173\u8fd8\u662f\u548c\u5149\u6807\u4f4d\u7f6e\u6709\u5173?
//\u6700\u540e\u6478\u7d22\u51fa\u6765\u662f\u53ea\u548c\u5149\u6807\u5b9a\u4f4d\u6709\u5173 \u73b0\u5728\u8fd8\u662f\u4e0d\u77e5\u9053Ac\u503c\u6709\u4ec0\u4e48\u7528
}
//=========================
void location(unsigned char x,unsigned char y) //\u786e\u5b9e\u5750\u6807\u51fd\u6570
{
unsigned char temp;
temp=x&0x0f; //\u53ea\u8981x\u6570\u636e\u7684\u540e\u56db\u4f4d
if(y){temp=temp|0x40;} //\u7b2c\u4e00\u884c\u4e3a0 \u7b2c\u4e8c\u884c\u4e3a1 \u5982\u679cy=1\u5219\u5730\u5740\u52a00x40
temp|=0x80; //DDRAM\u5730\u5740\u7684\u547d\u4ee4DB7\u4e3a\u4e00
writecmd(temp);
}
//==============================
void displyonechar(unsigned char x,unsigned char y,unsigned char dataw) //\u663e\u793a\u4e00\u4e2a\u5b57\u7b26\u51fd\u6570
{
location(x,y);
writedata(dataw);
}
//=======================================
void displylistchar(unsigned char x,unsigned char y,unsigned char *p) //\u663e\u793a\u5b57\u7b26\u4e32
{
while(*p) //\u5f53\u4e00\u4e2a\u5b57\u7b26\u578b\u6570\u7ec4\u8bfb\u5b8c\u65f6*P\u6307\u7684\u4e3a\u96f6
{
displyonechar(x,y,*(p++));
x++;
}
}
//=====================================================
void writecgram(unsigned char address,unsigned char *p) //\u5199CGRAM\u7684\u6570\u636e
{
unsigned char i=8;
writecmd(address); //CGRAM\u91cc\u7684\u5730\u5740 \u521d\u59cb\u503c0x40 \u6bcf\u6b21\u52a00x80
while(i--)
{
writedata(*p);
p++;
}
}
//=====================================================
void displyonecharacter(unsigned char x,unsigned char y,unsigned char address,unsigned char *p) //\u663e\u793a\u4e00\u4e2a\u81ea\u5b9a\u4e49\u5b57\u7b26
{
unsigned char i=8;
writecmd(address); //CGRAM\u91cc\u7684\u5730\u5740 \u521d\u59cb\u503c0x40 \u6bcf\u6b21\u52a00x08
while(i--)
{
writedata(*p);
p++;
}
//============================================================
location(x,y); //\u8bbe\u5b9a\u8981\u663e\u793a\u7684\u4f4d\u7f6e
writedata((address&=0x3f)/0x08); //\u8981\u4eceCGRAM\u4e2d\u8bfb\u51fa\u6570\u636e\u57281602\u4e0a\u663e\u793a \u641e\u4e86\u534a\u5929\u53d1\u73b0CGRAM\u91cc\u7684\u5730\u5740
} //\u548cDDRAM\u91cc\u7684\u5730\u5740\u6709\u4e0a\u9762\u7684\u8f6c\u6362\u5173\u7cfb
//========================================================
void displynumber(unsigned char x,unsigned char y,unsigned long num) //\u663e\u793a\u4e00\u4e2a\u6574\u6570
{
unsigned int number[8];
int k,gh;
for(k=0;;k++)
{
*(number+k)=(unsigned int)(num%10);//\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362
num=num/10;
if(num==0)break;
}
for(gh=k;gh>=0;gh--)
{
displyonechar(x,y,(*(number+gh)+48));
x++;
}
}
//\u5b57\u578b\u7801
uchar code nin[]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02};// "\u5e74"
uchar code yue[]={0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11};// "\u6708"
uchar code ri[]={0x1f,0x11,0x11,0x1f,0x11,0x11,0x11,0x1f};// "\u65e5"
\u663e\u793a\u6c49\u5b57
displyonecharacter(0,0,0x40,nin);
displyonecharacter(1,0,0x80,yue);
displyonecharacter(1,0,0xc0,ri);
1\u3001\u9996\u5148\u6211\u4eec\u6253\u5f00Keil \u03bcVision\u7f16\u8bd1\u5668\uff0c\u65b0\u5efa\u4e00\u4e2a\u5de5\u7a0b\uff0c\u7136\u540e\u4fdd\u5b58\u5728\u786c\u76d8\u4e0a\u7684\u4f4d\u7f6e\uff0c\u7136\u540e\u9009\u62e9Atmel-AT89C51\u5355\u7247\u673a\u4e3a\u6a21\u578b\uff0c\u5e76\u542f\u52a8\u5668\u6dfb\u52a0STARTUP.A51\u6587\u4ef6\uff0c\u7136\u540e\u5728\u5f53\u524d\u76ee\u5f55\u4e0b\u65b0\u5efa\u4e00\u4e2aC\u6587\u4ef6\uff0c\u5e76\u5c06\u5176\u6dfb\u52a0\u5165\u5de5\u4f5c\u8def\u5f84\u3002
2\u3001\u5bfc\u516551\u5355\u7247\u673a\u7684\u5934\u6587\u4ef6\u4ee5\u53caLCD1602\u7684\u5934\u6587\u4ef6\u3002
3\u3001\u521b\u5efa\u4e00\u4e2a\u5ef6\u65f6\u51fd\u6570\uff0c\u53ef\u4ee5\u4f20\u5165\u60f3\u8981\u5177\u4f53\u5ef6\u65f6\u7684\u65f6\u957f\uff0c\u5176\u5185\u90e8\u5b9e\u73b0\u662f\u7531\u4e00\u4e2a\u4e8c\u91cd\u5faa\u73af\uff0c\u4e24\u4e2a\u5faa\u73af\u7684\u6b21\u6570\u76f8\u4e58\u79ef\u3002
4\u3001\u7136\u540e\u521b\u5efa\u5199\u547d\u4ee4\u7684\u51fd\u6570\uff0c\u6307\u5b9aRS\u548cE\u540c\u65f6\u4e3a0\u65f6\uff0c\u624d\u53ef\u4ee5\u5199\u5165\u547d\u4ee4\uff0c\u8bbe\u5b9a\u5b8c\u6210\u540e\uff0c\u5c06com\u5199\u5165\u8f93\u51fa\u7aef\u53e3\uff0c\u89c4\u5b9a\u5199\u547d\u4ee4\u65f6\uff0cE\u4e3a\u6b63\u8109\u51b2\uff0c\u7136\u540e\u7a7a\u64cd\u4f5c\u4e00\u4e2a\u673a\u5668\u5468\u671f\u7b49\u5f85\u673a\u5668\u53cd\u5e94\u3002
5\u3001\u7136\u540e\u521b\u5efa\u5199\u6570\u636e\u7684\u51fd\u6570\uff0c\u89c4\u5b9a\u5199\u6570\u636e\u65f6\uff0cE\u4e3a\u6b63\u8109\u51b2\uff0c\u89c4\u5b9a\u5f53RS=1\u548cRW=0\u65f6\u624d\u53ef\u4ee5\u5199\u5165\u6570\u636e\uff0c\u7136\u540e\u5c06\u6570\u636e\u4ece\u8f93\u51fa\u7aef\u53e3\u8f93\u51fa\uff0c\u6700\u540e\u8ba9E\u4ea7\u751f\u6b63\u8df3\u53d8\u3002
6\u3001\u7136\u540e\u521b\u5efa\u521d\u59cb\u5316LCD1602\u7684\u51fd\u6570\uff0c\u6307\u5b9a\u663e\u793a\u6a21\u5f0f\u4f4d\u4e24\u884c\u663e\u793a\uff0c5*7\uff0c8\u4f4d\u6570\u636e\u3001\u6574\u4f53\u663e\u793a\uff0c\u65e0\u5149\u6807\uff0c\u65e0\u95ea\u70c1\u3001\u5199\u5165\u4e00\u4e2a\u5b57\u7b26\u540e\u5730\u5740\u6307\u9488\u52a01\uff0c\u6700\u540e\u8fdb\u884c\u6e05\u5c4f\u64cd\u4f5c\u3002
7\u3001\u6700\u540e\u5728\u4e3b\u51fd\u6570\u4e2d\u9996\u5148\u6267\u884cLCD1602\u7684\u521d\u59cb\u5316\u51fd\u6570\uff0c\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u65e0\u9650\u5faa\u73af\uff0c\u7136\u540e\u6dfb\u52a0\u4e24\u4e2a\u5b57\u7b26\u4e32\uff0c\u8fd9\u91cc\u4ee5\u4e24\u884c\u663e\u793a\u767e\u5ea6\u7ecf\u9a8c\u7684\u7f51\u5740\u4e3a\u4f8b\uff0c\u518d\u8fdb\u884c\u5ef6\u65f6\u4ee5\u53ca\u4f7f\u7528\u6e05\u5c4f\u51fd\u6570\u8fdb\u884c\u5237\u65b0\u3002
每个字符有效的可显示字体是5*8点阵字体。
所以通常无法显示中文。中文的显示必须选择图形点阵型液晶。
【2】特别地:你是指,显示“年月日”,之类的简单的汉字吧?
最多支持8个CGRAM字符。你可以自己做。调用字模代码0-7。
如:“年”的CGRAM单元数据为:
0FH,09H,0FH,09H,0FH,09H,13H,00H。这8个字节写入CGRAM单元00H-07H。
调用字符代码0。可以看到中文“年”。
【3】具体代码,下载相关液晶点阵模块的资料,附带程序能看到一些例程。
LCD1602是字符型LCD 不能显示汉字 只能显示数字 英文字母 一些日本字
绛旓細棣栧厛鎴戜滑瑕佺煡杩51鍗曠墖鏈鐨勮鏁板櫒鏄竴涓姞娉曡鏁板櫒锛屼篃灏辨槸璇村畠鏄粠0寮濮嬩竴鐩村姞鍒65535鏃跺啀鍔犱竴灏变細婧㈠嚭锛屽杩欐椂涓柇鎵撳紑鐨勫氨浼氫骇鐢熶竴涓腑鏂傜浜屽湪瀹冪殑宸ヤ綔鍦1鏂瑰紡鏃跺畠鏄竴涓16浣嶉暱搴︾殑锛屼篃灏辨槸鍏卞彲璁℃暟鏄2鐨16娆℃柟銆傜涓夎繖涓鏁板垵鍊兼槸浠涔堬紒锛熻繖灏辨槸杩16浣嶈鏁板櫒鍙暟鐨勬渶澶у煎拰鎴戜滑瑕佽鐨勪釜鏁...
绛旓細1銆鏂版墜瀛︿範鍗曠墖鏈烘渶濂介夋嫨51绯诲垪鐨鍗曠墖鏈猴紝杩欎釜绯诲垪鐨勫崟鐗囨満鏈夊叧鐨勫涔犺祫鏂欐瘮杈冨锛岀綉涓婁篃姣旇緝濂芥壘锛屼篃姣旇緝瀹规槗涓婃墜锛屽彧瑕佸浼氫簡51鍗曠墖鏈猴紝鍏跺畠鐨鍗曠墖鏈哄AVR銆丄RM绛夊氨濂藉浜嗐2銆51鍗曠墖鏈烘槸瀵规墍鏈夊吋瀹笽ntel 8031鎸囦护绯荤粺鐨勫崟鐗囨満鐨勭粺绉般傝绯诲垪鍗曠墖鏈虹殑濮嬬鏄疘ntel鐨8031鍗曠墖鏈猴紝鍚庢潵闅忕潃Flash rom鎶鏈殑鍙戝睍...
绛旓細鎺ヤ覆鍙e嚭鏉ヨ窡trace鏌ュ惂銆傚厛鐪媡imer鏄笉鏄甯革紝鍐嶇湅鍑犱釜鍙橀噺鍊煎涓嶅銆
绛旓細I/O绔彛鍒欐湁鍥涗釜8浣嶅苟琛屾帴鍙o紝濡侾0-P3锛屽畠浠悇鑷嫭绔嬶紝浣哖0.0~P0.7闇澶栭儴涓婃媺鐢甸樆浠ョ‘淇濅綆8浣嶅湴鍧/鏁版嵁鎬荤嚎鐨勬纭伐浣溿傛瀯寤轰竴涓渶灏忓伐浣滅郴缁燂紝浣犻渶瑕5V鎴3.3V鐢垫簮銆11.0592MHz鏅舵尟銆佸浣嶇數璺紝瀹冧滑鍏卞悓椹卞姩鍗曠墖鏈杩愯锛岀‘淇濈▼搴忎粠绋冲畾鐘舵佸紑濮嬨傚璁惧LED銆佹暟鐮佺鎴栨恫鏅跺睆鐨勮繛鎺ヤ篃鑷冲叧閲嶈锛屾瘡涓...
绛旓細MOVX 鐩爣鎿嶄綔鏁帮紝婧愭搷浣滄暟 鏈夋椂鍊欏崟鐗囨満闇瑕佸閮ㄧ鍙f垨璁惧鐨勬墿灞曪紝鍥犳涔熶細鏈夌浉搴旂殑鎺у埗鍙o紝鍥犳浣犺鐨勮瑷涔熷彲鑳鏄崟鐗囨満鍜屽閮ㄨ澶囪仈绯荤殑鎺у埗瀛椼傜涓鏉″氨鏄悜澶栭儴RAM浼犻侊紝浼犻佸墠锛孉 鍜 DPTR 閮借璧嬪硷紝鎵浠ヨ鐢ㄧ瓟妗堜腑鐨勭涓鍜岀浜屾潯銆傜浜屾潯鐨勬纭啓娉曪細MOV DPTR,#0FFFH ...
绛旓細9锛屽綋鐒讹紝浣犲緱鎵撲竴浠藉伐浣滐紝鍏充簬鎴戜笂鎵璇寸殑锛屽紑濮嬪伐璧勪笉瑕佽姹傚お楂橈紝绛変綘鍋氬畬鍑犱釜椤圭洰鍚庯紝浣犵湡姝e浼氫簡锛屾墠璺熻佹澘鎴栦笂鍙告彁锛岃繖鏍风户缁垨鎴栧彟瀵婚珮灏辨墠鏈夎祫鏈10锛屼綘涔熸娊鐐规椂闂寸湅鐪嬨婇儹澶╃ゥ鍗佸ぉ瀛︿細鍗曠墖鏈鍜宑璇█缂栥嬩竴涔︼紝宸╁浐涓涓嬬悊璁虹煡璇嗐傛荤粨锛氬鍋氬紑鍙戞澘涓婄殑瀹為獙锛屼綘瑕佸鍙備笌杩欐牱鐨勯」鐩紑鍙戯紝...
绛旓細鏈绠鍗曠殑鍔炴硶鍋氬欢鏃讹紝寤舵椂涓娆℃敼鍙樹竴娆ED鐨勭姸鎬侊紝鍏锛堜笁浜笁鐏級鍚庤繘鍏ヤ竴涓獁hile锛1锛夊惊鐜
绛旓細璨屼技浠栦滑涓や釜鐨勯兘姣旇緝璐碉紝涓夌櫨澶氾紝鍧戠埞锛佹垜鏈夐儹澶╃ゥ鐨勪豢鐪熸澘锛屽氨鏄敤杞欢浠跨湡鐨勯偅绉嶏紝鑷繁涔熶拱浜嗕竴鍧楋紝鎰熻浠跨湡鏉垮拰鐪熷疄鐨勪篃娌′粈涔堬紒濡傛灉浠ュ墠娌$帺杩囷紝鍙互鍏堢敤鐢靛瓙鐨勭帺鐜╋紝瑕佺殑璇濈暀涓猀Q锛屾垜鍙戠粰浣犮傝繖涓滆タ鎼炰笉濂界殑璇濇湁鍙兘鐑у潖鐢佃剳鐨勶紝鍛靛懙锛屽厛鐢ㄤ豢鐪熺殑閫傚簲涓涓嬶紝涓汉璁や负姣旇緝濂界偣锛
绛旓細绔彛浣滀负杈撳叆鍙f槸锛屾渶濂藉皢绔彛鍒濆鍖涓涓嬩笅 濡 P0=0xff.
绛旓細http://baike.baidu.com/view/5881209.htm RS BIT P3.0 //閲嶅懡鍚嶅洓涓狪O鍙 RW BIT P3.1 E BIT P3.2 BF BIT P2.7 //D0~D7鎺ュ湪P2鍙 ACALL CSH //璋冪敤鍒濆鍖栧嚱鏁 MOV DPTR,#YH //璋冪敤鏁扮粍YH ACALL XS //璋冪敤鏄剧ず鍑芥暟 MOV A,#0C0H //瀹氫箟鍏夋爣涓虹浜岃绗竴浣 ACALL...