cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 19662|回复: 52

lcd液晶12232F的串口C51程序,网上几乎找不到!(原创)

[复制链接]
发表于 2004-11-22 22:22:40 | 显示全部楼层 |阅读模式
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教!要把液晶板上的串并形式焊点改焊成串口形式,否则没有显示的,程序如下所示:
有好多朋友发信给我,问有关焊接成串口形式的,这里我截了一个图下来(在贴子的最后面),希望对大家有用:

/******************************************************/
/*作者:赖卫国      email:cpubbs@cpubbs.com           */
/*欢迎访问我的网站http://www.cpubbs.com             */
/* 欢迎http://www.cpubbs.com提出修改建议      */
/* 12232F串口驱动程序C51,11.0592M晶振       */
/*使用这款LCD应该要注意的问题:         */
/*一定要在VO与VDD及VSS这三个脚间接一个20K的电位器,   */
/*电位器的中间脚接VO,其它二脚接VDD和VSS。            */
/*然后调节电位器的大小,直到有显示为止。若是不接的话,*/
/*显示器可能是一片黑暗,什么也没有显示,发命令也没有反*/
/*应的。本程序我已经测试通过了。欢迎大家提出意见。     */
/*有建议请http://www.cpubbs.com                       */
/******************************************************/   
#include <AT89X52.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
/*12232f pins define*/
sbit CS=P1^5;
sbit SID=P1^6;
sbit SCLK=P1^7;
void delay_1ms(uint x)
{
uint j;
  uchar  i;
for(j=0;j<x;j++)
{
  for(i=0;i<120;i++);
}
}
void send_command(uchar command_data)
{
uchar i;
uchar i_data,temp_data1,temp_data2;
i_data=0xf8;
delay_1ms(10);
CS=1;
SCLK=0;
for(i=0;i<8;i++)
{
  SID=(bit)(i_data&0x80);
  SCLK=0;
  SCLK=1;
         i_data=i_data<<1;
}
i_data=command_data;
i_data&=0xf0;
for(i=0;i<8;i++)
{
  SID=(bit)(i_data&0x80);
  SCLK=0;
  SCLK=1;
         i_data=i_data<<1;
}
i_data=command_data;
temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
temp_data1>>=4;
temp_data2<<=4;
i_data=temp_data1|temp_data2;
i_data&=0xf0;
for(i=0;i<8;i++)
{
  SID=(bit)(i_data&0x80);
  SCLK=0;
  SCLK=1;
         i_data=i_data<<1;
}
CS=0;
}
void send_data(uchar command_data)
{
uchar i;
uchar i_data,temp_data1,temp_data2;
i_data=0xfa;
delay_1ms(10);
CS=1;
for(i=0;i<8;i++)
{
  SID=(bit)(i_data&0x80);
  SCLK=0;
  SCLK=1;
         i_data=i_data<<1;
}
i_data=command_data;
i_data&=0xf0;
for(i=0;i<8;i++)
{
  SID=(bit)(i_data&0x80);
  SCLK=0;
  SCLK=1;
         i_data=i_data<<1;
}
i_data=command_data;
temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
temp_data1>>=4;
temp_data2<<=4;
i_data=temp_data1|temp_data2;
i_data&=0xf0;
for(i=0;i<8;i++)
{
  SID=(bit)(i_data&0x80);
  SCLK=0;
  SCLK=1;
         i_data=i_data<<1;
}
CS=0;
}
void lcd_init()
{
uchar command_data;
delay_1ms(100);
command_data=0x30;  
send_command(command_data);  /*功能设置:一次送8位数据,基本指令集*/
command_data=0x04;   
send_command(command_data);  /*点设定:显示字符/光标从左到右移位,DDRAM地址加1*/
command_data=0x0f;   
send_command(command_data);  /*显示设定:开显示,显示光标,当前显示位反白闪动*/
command_data=0x01;               
send_command(command_data);  /*清DDRAM*/
command_data=0x02;   
send_command(command_data);  /*DDRAM地址归位*/
command_data=0x80;               
send_command(command_data);  /*把显示地址设为0X80,即为第一行的首位*/
}
void display_cpubbs()
{
uchar command_data;
while(1)
{
  command_data=0x01;
  send_command(command_data); /*清DDRAM*/
  command_data=0x80;
  send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/
  command_data=0x68;  /*“h”字的编码*/
  send_data(command_data);
  command_data=0x74;   
  send_data(command_data); /*“t”字的编码*/
  command_data=0x74;   
  send_data(command_data); /*“t”字的编码*/
  command_data=0x70;  
  send_data(command_data); /*“p”字的编码*/
  command_data=0x3a;  
  send_data(command_data); /*“:”字的编码*/
  command_data=0x2f;  
  send_data(command_data); /*“/”字的编码*/
  command_data=0x2f;  
  send_data(command_data); /*“/”字的编码*/
  command_data=0x57;  
  send_data(command_data); /*“w”字的编码*/
  command_data=0x57;  
  send_data(command_data); /*“w”字的编码*/
  command_data=0x57;  
  send_data(command_data); /*“w”字的编码*/
  command_data=0x2e;  
  send_data(command_data); /*“.”字的编码*/
  command_data=0x63;  
  send_data(command_data); /*“c”字的编码*/
  command_data=0x70;  
  send_data(command_data); /*“p”字的编码*/
  command_data=0x75;  
  send_data(command_data); /*“u”字的编码*/
  command_data=0x62;  
  send_data(command_data); /*“b”字的编码*/
  
  command_data=0x90;
  send_command(command_data); /*把显示地址设为0X90,即为第二行的首位,因为第一行已经满了*/
  command_data=0x62;   
  send_data(command_data); /*“b”字的编码*/
  command_data=0x73;  
  send_data(command_data); /*“s”字的编码*/
  command_data=0x2e;  
  send_data(command_data); /*“.”字的编码*/
  command_data=0x63;  
  send_data(command_data); /*“c”字的编码*/
  command_data=0x6f;  
  send_data(command_data); /*“o”字的编码*/
  command_data=0x6d;  
  send_data(command_data); /*“m”字的编码*/
  
  delay_1ms(3000);
  
  command_data=0x01;
  send_command(command_data); /*清DDRAM*/
  command_data=0x80;
  send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/
  
  command_data=0xbb;   
  send_data(command_data);   
  command_data=0xb6;   
  send_data(command_data); /*“欢”字的编码*/
  command_data=0xd3;  
  send_data(command_data);
  command_data=0xad;  
  send_data(command_data); /*“迎”字的编码*/
  command_data=0xb7;  
  send_data(command_data);
  command_data=0xc3;  
  send_data(command_data); /*“访”字的编码*/
  command_data=0xce;  
  send_data(command_data);
  command_data=0xca;  
  send_data(command_data); /*“问”字的编码*/
  command_data=0x90;
  send_command(command_data); /*把显示地址设为0X90,即为第二行的首位,因为第一行已经满了*/  
  command_data=0x63;   
  send_data(command_data); /*“c”字的编码*/
  command_data=0x70;  
  send_data(command_data); /*“p”字的编码*/
  command_data=0x75;  
  send_data(command_data); /*“u”字的编码*/
  command_data=0x62;  
  send_data(command_data); /*“b”字的编码*/
  command_data=0x62;  
  send_data(command_data); /*“b”字的编码*/
  command_data=0x73;  
  send_data(command_data); /*“s”字的编码*/
  command_data=0xc2;  
  send_data(command_data);
  command_data=0xdb;  
  send_data(command_data); /*“论”字的编码*/
  command_data=0xcc;  
  send_data(command_data);
  command_data=0xb3;  
  send_data(command_data); /*“坛”字的编码*/
  delay_1ms(3000);
}
}
main()
{
uchar command_data;
lcd_init();
display_cpubbs();
while(1);
}




[ 本帖最后由 cpubbs 于 2007-2-9 22:38 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2004-11-22 22:30:52 | 显示全部楼层
我顶顶顶顶顶顶顶顶顶顶!~串着来的!~~
发表于 2004-11-22 23:24:52 | 显示全部楼层
为什么不配合原理图一起上传啊?版主
 楼主| 发表于 2004-11-22 23:27:01 | 显示全部楼层
<>哦,这个原理图比较简单的,所以就没有把图上传上去,我下次把图传上去吧!谢谢大姐提醒!</P>[em04]
发表于 2004-11-24 07:35:39 | 显示全部楼层
发表于 2004-11-24 17:31:20 | 显示全部楼层
<>真是个不错的想法</P>
发表于 2004-11-24 19:56:51 | 显示全部楼层
发表于 2004-11-24 21:24:35 | 显示全部楼层
发表于 2004-11-24 21:30:48 | 显示全部楼层
发表于 2004-11-24 22:47:28 | 显示全部楼层
<>谢谢楼主分享,表示感谢</P>
发表于 2004-11-24 22:58:01 | 显示全部楼层
我顶顶顶顶顶顶顶顶顶顶!~
发表于 2004-11-26 19:37:41 | 显示全部楼层
发表于 2004-11-26 23:41:28 | 显示全部楼层
发表于 2004-11-28 07:31:27 | 显示全部楼层
<>软硬件开发讨论区搞得不错,很实用。</P>
发表于 2004-11-30 20:01:16 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-3 07:01 , Processed in 1.883012 second(s), 9 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表