初级会员
 
主题
帖子
积分129
阅读权限10
注册时间2009-3-10
最后登录1970-1-1
在线时间 小时
|
4字屏4字普通IO发送C51程序
<P>终于有时间把沈老师4字屏研摸索了一遍,用的<A href="https://www.yleee.com.cn/space.php?uid=99"><FONT color=#0000ff><EM>litchiate</EM></FONT></A> 兄上传的Proteus文件做的模拟(反白,实烧正常),实烧用的是沈老师的那个代用板,IO是一样的.</P>
<P>我败了4块4字屏,屏可以通过两侧的接口拼接的,不过中间空隙较大,拼接不需要排线,用双排插母切一段2x10p折弯引脚反着插上就可以了.</P>
<P>直接当8字屏没有问题,不需要增加IO就能解决你的问题,</P>
<P>如果不拼接,下面的C51程序没有用串口模式发送列数据,可以制定一个IO输出到第2屏.</P>
<P>两块屏除了L_R外其他所有IO是共用的.</P>
<P>沈老师发给我的程序看着挺复杂,就自己重写了个.</P>
<P>#include <AT89x52.H></P>
<P> //NC<BR>sbit OE=P1^1; //OE 到列(COL)4094使能(Output Enable)<BR>sbit R_CLK=P1^3; //H.CLK 到行(ROW)4094时钟(Clock)<BR>sbit R_OUT=P1^2; //H.R 到行(ROW)4094串入(Data)<BR> //NC<BR>sbit OUT=P3^0; //L.R 到列(COL)4094串入(Data)<BR>sbit STB=P1^0; //L.STR 到列(COL)4094的锁存(STROBE)<BR>sbit CLK=P3^1; //L.CLK 到列(COL)4094时钟(Clock)<BR> //GND<BR> //GND</P>
<P>unsigned char temp;</P>
<P>unsigned char code mod[]={</P>
<P>0x01,0x01,0x21,0x3F,0x21,0x21,0x21,0x21,0x21,0x3F,0x21,0x01,0x01,0x01,0x01,0x01,<BR>//第一行为“中”的半边8x16的数据<BR>0x00,0x00,0x08,0xFC,0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,/*"中",0*/<BR>//第一行为“中”的右边8x16的数据</P>
<P>0x00,0x7F,0x40,0x5F,0x41,0x41,0x41,0x4F,0x41,0x41,0x41,0x5F,0x40,0x40,0x7F,0x40,<BR>0x00,0xFC,0x04,0xF4,0x04,0x04,0x04,0xE4,0x44,0x24,0x24,0xF4,0x04,0x04,0xFC,0x04,/*"国",1*/</P>
<P>0x00,0x7F,0x02,0x02,0x02,0x03,0x02,0x04,0x04,0x04,0x08,0x08,0x10,0x20,0x40,0x00,<BR>0x00,0xFE,0x00,0x00,0x10,0xF8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xE0,0x40,0x00,/*"万",2*/</P>
<P>0x01,0x21,0x21,0x21,0x3F,0x04,0x04,0x0F,0x10,0x24,0x42,0x02,0x01,0x06,0x18,0x60,<BR>0x00,0x08,0x08,0x08,0xF8,0x00,0x00,0xF8,0x10,0x10,0x20,0x40,0x80,0x00,0x00,0x00,/*"岁",3*/};</P>
<P>void main(void)<BR> { <BR> unsigned char i,j,k,n;</P>
<P> STB=1; //列4094的STROBE高位<BR> while(1)<BR> {<BR> R_OUT=0; //循环内首次(i=0)例程行选低位<BR> for(i=0;i<16;i++)<BR> {<BR> OE=0; //关闭列信号(关闭显示)<BR> for(j=0;j<8;j++) //4个字分8段作为一个行信号发送<BR> {<BR> temp=mod[j*16+i]; //从字模中取一个字节<BR> for(k=0;k<8;k++) //一个字节有8位分8次发送<BR> {<BR> OUT=temp&0x80; //发送最高位<BR> CLK=0;<BR> CLK=1; //发送一个时钟脉冲以锁存刚才发送的一位<BR> temp=temp<<1; //字节各位左移一位让第次高位边最高位<BR> }<BR> }<BR> R_CLK=0;<BR> R_CLK=1; //发送一个行选时钟脉冲<BR> OE=1; //打开列信号(打开显示)<BR> for(n=0;n<0xff;n++); //延时以增加显示占空时间,实测刷72Hz<BR> R_OUT=1; //循环内余下(i=1~15)例程行选高位<BR> }<BR> }<BR> }</P>
<P> </P>
<P> </P>
<P><BR> </P>
[ 本帖最后由 sunyueming 于 2009-3-20 17:07 编辑 ] |
-
-
ttt.rar
1.31 KB, 下载次数: 245, 下载积分: 一乐金币 -1
评分
-
查看全部评分
|