⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5_自制单片机之五(1)……lcd1602的驱动_边学边秀单片机.htm

📁 一个1602lcd的开发资料
💻 HTM
📖 第 1 页 / 共 4 页
字号:
      P1------DB0~DB7           
      P2.0------RS<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      P2.1------RW<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      P2.2------E<BR>*****************************************/<BR># define 
      LCD_DB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      P1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      sbit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_RS=P2^0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      sbit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_RW=P2^1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      sbit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LCD_E=P2^2;</P>
      <P>/******定义函数****************/</P>
      <P># define uchar unsigned char<BR># define uint unsigned int<BR>void 
      LCD_init(void);//初始化函数<BR>void LCD_write_command(uchar 
      command);//写指令函数<BR>void LCD_write_data(uchar dat);//写数据函数<BR>void 
      LCD_disp_char(uchar x,uchar y,uchar 
      dat);//在某个屏幕位置上显示一个字符,X(0-16),y(1-2)<BR>//void 
      LCD_check_busy(void);//检查忙函数。我没用到此函数,因为通过率极低。<BR>void delay_n40us(uint 
      n);//延时函数<BR>//********************************<BR>//*******初始化函数***************<BR>void 
      LCD_init(void)<BR>{<BR>LCD_write_command(0x38);//设置8位格式,2行,5x7<BR>LCD_write_command(0x0c);//整体显示,关光标,不闪烁<BR>LCD_write_command(0x06);//设定输入方式,增量不移位<BR>LCD_write_command(0x01);//清除屏幕显示<BR>delay_n40us(100);//实践证明,我的LCD1602上,用for循环200次就能可靠完成清屏指令。<BR>}<BR>//********************************<BR>//********写指令函数************<BR>void 
      LCD_write_command(uchar 
      dat)<BR>{<BR>LCD_DB=dat;<BR>LCD_RS=0;//指令<BR>LCD_RW=0;//写入<BR>LCD_E=1;//允许<BR>LCD_E=0;<BR>delay_n40us(1);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。<BR>}<BR>//*******************************<BR>//********写数据函数*************<BR>void 
      LCD_write_data(uchar 
      dat)<BR>{<BR>LCD_DB=dat;<BR>LCD_RS=1;//数据<BR>LCD_RW=0;//写入<BR>LCD_E=1;//允许<BR>LCD_E=0;<BR>delay_n40us(1);<BR>}<BR>//********************************<BR>//*******显示一个字符函数*********<BR>void 
      LCD_disp_char(uchar x,uchar y,uchar dat)<BR>{<BR>uchar 
      address;<BR>if(y==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      address=0x80+x;<BR>else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      address=0xc0+x;<BR>LCD_write_command(address);<BR>LCD_write_data(dat);<BR>}<BR>//********************************<BR>/*******检查忙函数*************<BR>void 
      LCD_check_busy()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //实践证明,在我的LCD1602上,检查忙指令通过率极低,以<BR>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //至于不能正常使用LCD。因此我没有再用检查忙函数。而使<BR>do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //用了延时的方法,延时还是非常好用的。我试了一下,用<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      { 
      LCD_E=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //for循环作延时,普通指令只要1次循就可完成。清屏指令<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_RS=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //要用200次循环便能完成。&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_RW=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_DB=0xff;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_E=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }while(LCD_DB^7==1);</P>
      <P>}<BR>******************************/<BR>//********延时函数***************<BR>void 
      delay_n40us(uint n)<BR>{ uint i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uchar 
      j;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      for(i=n;i&gt;0;i--)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      for(j=0;j&lt;2;j++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //在这个延时循环函数中我只做了2次循环,<BR>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //实践证明我的LCD1602上普通的指令只需1次循环就能可靠完成。<BR>//*******************************</P>
      <P>//*********主函数*****************<BR>void 
      main(void)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_init();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LCD_disp_char(0,1,"A");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      while(1);<BR>}</P>
      <P>//*******************************</P>
      <P><版面有长度限制,见下一期>。。。</P>
      <P><BR></P></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=opt><A title=查看该分类中所有文章 
href="http://hi.baidu.com/txz01/blog/category/c51&micro;&yen;&AElig;&not;&raquo;ú">类别:c51单片机</A> | <A 
title=将此文章添加到百度搜藏 onclick="return addToFavor();" 
href="http://cang.baidu.com/do/add" target=_blank>添加到搜藏</A> | 浏览(<SPAN 
id=result></SPAN>) | <A 
href="http://hi.baidu.com/txz01/blog/item/4807ca257515bc6235a80f45.html#send">评论</A>&nbsp;(9)
<SCRIPT language=javascript>
/*<![CDATA[*/
var pre = [true,'4.自制单片机之四----数码管电路的制做与驱动', '4.自制单片机之四----数码管电路...','/txz01/blog/item/1be0b8c4865c98ab8326ac72.html'];
var post = [true,'5.自制单片机之五(2)……LCD1602的驱动','5.自制单片机之五(2)……LCD16...', '/txz01/blog/item/aff17b385cd50f26b9998f86.html'];
if(pre[0] || post[0]){
	document.write('<div style="height:5px;line-height:5px;">&nbsp;</div><div id="in_nav">');
	if(pre[0]){
		document.write('上一篇:<a href="' + pre[3] + '" title="' + pre[1] + '">' +  pre[2] + '</a>&nbsp;&nbsp;&nbsp;&nbsp;');
	}
	if(post[0]){
		document.write('下一篇:<a href="' + post[3] + '" title="' + post[1] + '">' +  post[2] + '</a>');
	}
	document.write('</div>');
}
/*]]>*/
</SCRIPT>
 </DIV>
<DIV class=line></DIV>
<STYLE type=text/css>#in_related_doc A {
	TEXT-DECORATION: none
}
</STYLE>

<DIV id=in_related_tmp></DIV>
<SCRIPT language=javascript type=text/javascript>
/*<![CDATA[*/
function HI_MOD_IN_RELATED_DOC_CALLBACK(arg){
    if(arg.length <= 1) return false;
    var hasMore = arg[0];
    var D=function(A,B){A[A.length]=B;}
    if(arg.length % 2 == 0) D(arg, ["","","",""]);

    var html = ['<div id="in_related_doc"><div class="tit">相关文章:</div>'];
    D(html, '<table cellpadding="0" cellspacing="3" border="0">');
    for(var i = 1, j = arg.length; i < j; i += 2){
        D(html, '<tr>');
        D(html, '<td width="15px"><a style="font-size:25px" >&#8226;</a></td><td><a href="http://hi.baidu.com/' + arg[i][3] + '/blog/item/' + arg[i][2] + '.html" target="_blank" title="' + arg[i][0] + '">' + arg[i][1] + '</a>');
        D(html, new Array(10).join('\u3000'));
        D(html, '</td>');
        if(arg[i + 1][0] != "")
            D(html, '<td width="15px"><a style="font-size:25px" >&#8226;</a></td><td><a href="http://hi.baidu.com/' + arg[i + 1][3] + '/blog/item/' + arg[i + 1][2] + '.html" target="_blank" title="' + arg[i + 1][0] + '">' + arg[i + 1][1] + '</a></td>');
        else
            D(html, '<td>&nbsp;</td><td>&nbsp;</td>');
        D(html, '</tr>');
    }
    if(hasMore) D(html, '<tr><td colspan="4"><a target="_blank" href="/sys/search?pageno=1&type=7&sort=1&word=5%2E%D7%D4%D6%C6%B5%A5%C6%AC%BB%FA%D6%AE%CE%E5%A3%A81%A3%A9%A1%AD%A1%ADLCD1602%B5%C4%C7%FD%B6%AF&item=4807ca257515bc6235a80f45">更多&gt;&gt;</a></td></tr>');
    D(html, '</table></div><div class="line">&nbsp;</div>');

    var div = document.getElementById('in_related_tmp');
    if(div){
        div.innerHTML = html.join('');
        while(div.firstChild){
            div.parentNode.insertBefore(div.firstChild, div);
        }
        div.parentNode.removeChild(div);
    }
}

if(RelatedDocData == -1){	// not supported xhr
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = '/sys/search?type=8&word=5%2E%D7%D4%D6%C6%B5%A5%C6%AC%BB%FA%D6%AE%CE%E5%A3%A81%A3%A9%A1%AD%A1%ADLCD1602%B5%C4%C7%FD%B6%AF&item=4807ca257515bc6235a80f45&t=' + new Date().getTime();
    document.getElementsByTagName('HEAD')[0].appendChild(script);
}else if(RelatedDocData == null){
	GetAndEval = true;
}else{
	eval(RelatedDocData);
}

/*]]>*/
</SCRIPT>

<DIV id=in_reader>
<DIV class=tit>最近读者:</DIV>
<SCRIPT>

	var g_spAnnony=true;


var g_read=[
	
["%CF%FB%CA%A7%C1%CB%B5%C4%C4%BE%B9%CF","7e2ecffbcaa7c1cbb5c4c4beb9cfc003","消失了的木瓜"],
	
["killnight","4f8cb0cdb1f0d4d9c1d92903","巴别再临"],
	
["dglxboy","1fb864676c78626f798c00","dglxboy"],
	
["shijianuo","76aa7368696a69616e756f2501","shijianuo"],
	
["gxb01","65f867786230315b04","gxb01"],
	
["kuwuyu","f9d36b75777579752701","kuwuyu"],
	
["huangshengqun","917ca5e1cbe6b7e7a6e1a8e3dd03","メ随风︶ㄣ"],
	
["zhangbo%5Fsky","96d2d5c5b2a95f736b793904","张博_sky"],

{}
];
g_read.length=g_read.length-1;

var _rh1="";
var _rh2="";

function wrreader(){
	_rh1 += '<table width="100%" ><tr>';
	_rh2+='<tr>';
	if(g_spAnnony){
		_rh1+='<td align="center" width="10%" ><img border="0" width="55" height="55" src="http://img.baidu.com/hi/img/portraitn.jpg"></td>';
		_rh2+='<td>&nbsp;</td>';
		if(g_read.length>0){
			_rh1+='<td align="left" width="12%">';
		}else{
			_rh1+='<td align="left" width="100%">';
		}
		_rh1+="<a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"' target='_self'>登录</a>后,您就出现在这里。</td>";
		_rh2+='<td>&nbsp;</td>'
	}
	if(g_read.length==0){
		if(!g_spAnnony){
			_rh1+='<td align=left width="100%">最近还没有登录用户看过这篇文章……</td>';
			_rh2+='<td>&nbsp;</td>';
		}
	}else{
		for(i=0,len=g_read.length;i<len;i++){
			_rh1+='<td align="center" valign="bottom" width="10%" class="user"><a href="/'+g_read[i][0]+'" target="_blank"><img border="0" src="http://himg.baidu.com/sys/portraitn/item/'+g_read[i][1]+'.jpg"></a></td>';
			_rh2+='<td align="center" valign="top" class="user"><a href="/'+g_read[i][0]+'" target="_blank">'+g_read[i][2]+'</a></td>';
		}
	}
	_rh1+='<td width="100%"></td></tr>';
	_rh2+='<td></td></tr></table>';
	document.write(_rh1+_rh2);
}

wrreader();
</SCRIPT>
</DIV>
<DIV class=line></DIV>
<SCRIPT language=JavaScript>
allkey=allkey+"606c824305b2821372f05d97_4807ca257515bc6235a80f45_";
</SCRIPT>

<DIV id=in_comment><A name=comment></A>
<DIV class=tit>网友评论:</DIV>
<SCRIPT>
function writecmt(type,id,cmtname,cmturl,portraitId){
	var html1="";

	if(type==1){
			html1="<a href='"+cmturl+"' target='_blank' title='"+cmturl+"'><img  border='0' src='http://himg.baidu.com/sys/portraitn/item/"+portraitId+".jpg'><br>"+cmtname+"</a>";
	}else{
		if(cmtname=="" || cmtname=="匿名网友"){
			if(cmturl==""){
				html1="<a>匿名网友</a>";
			}else{
				html1="<a href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a>";
			}
		}else{
			if(cmturl==""){
				html1="<div class='f14' style='display:inline'>网友:<a>"+cmtname+"</a></div>";
			}else{
				html1="<div class='f14' style='display:inline'>网友:<a href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a></div>";
			}
		}
	}
	document.write(html1);
}

</SCRIPT>
<A name=5314f864fe057ff3f6365423></A>
<TABLE class=item 
style="TABLE-LAYOUT: fixed; OVERFLOW: hidden; WORD-WRAP: break-word" 
cellSpacing=0 cellPadding=0 width="100%" border=0 ;>
  <TBODY>
  <TR>
    <TD class=index vAlign=top width="5%">1</TD>
    <TD vAlign=top align=middle width="10%">
      <DIV class=user style="OVERFLOW: hidden">
      <SCRIPT>
writecmt(1,"5314f864fe057ff3f6365423","ck6bwl","http://passport.baidu.com/?business&un=ck6bwl","da20636b3662776c2b01");
</SCRIPT>
      </DIV></TD>
    <TD class=cnt style="PADDING-LEFT: 20px"><SPAN class=date>2007-08-23 18:05 
      </SPAN>
      <DIV class=desc 
      style="OVERFLOW: hidden; WORD-BREAK: normal">沙发,头一次坐。要回家了先看看你的秀。</DIV></TD></TR></TBODY></TABLE>
<DIV class=line></DIV><A name=c6ff4e9529110f0b7af48003></A>
<TABLE class=item 
style="TABLE-LAYOUT: fixed; OVERFLOW: hidden; WORD-WRAP: break-word" 
cellSpacing=0 cellPadding=0 width="100%" border=0 ;>
  <TBODY>
  <TR>
    <TD class=index vAlign=top width="5%">2</TD>
    <TD vAlign=top align=middle width="10%">
      <DIV class=user style="OVERFLOW: hidden">
      <SCRIPT>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -