• 首页
  • 文章
  • 博客
  • 下载
  • 论坛
  • 商城
  • 产品创意
  • 热点活动
  • 应用中心
RSS | eefocus
个人中心
Ramtron社区论坛
  • F-RAM存储器
  • 微控制器
  • 特殊应用标准产
  • RFID
  • 源码共享中心
首页 >>Ramtron社区论坛 >>微控制器 论坛规则 | 收藏本版 | RSS订阅
3 1/1 共1页 1
  • 发布新帖
  • 发布投票
  •        
要LCD12864显示汉字,如何编写C程序?用的是51单片机,总线扩展。
jacklian
精华:
0
积分:
50
等级:
学徒
登陆次数:
13 
发表帖子:
86 
注册时间:
2010-03-02 
最后登陆:
2010-03-10 
状态:
离线

查看详细资料


积分:50
帖子:86
精华:0
等级:学徒
注册时间:2010-03-02
最后登录:2010-03-10
我的博客 发短消息
我的相册 当前离线
发表于2010-03-10 18:08
1#
要LCD12864显示汉字,如何编写C程序?用的是51单片机,总线扩展。
答复    共 1 条
俺有串行方式的.供你参考.
/**********************************************
系统名称:12864串行驱动程序
创建人:w418781840   日期:2008,7,18
功能描述:
***********************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define com 0
#define dat 1
sbit cs =P2^4;
sbit sid=P2^2;
sbit sck=P2^0;
/*********************************************
函数名称:
函数功能:
**********************************************/
void delay1ms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
   for(j=0;j<120;j++);
}
/*********************************************
函数名称:写字节函数
函数功能:
**********************************************/
void w_12864byte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
   sck=0;
   byte<<=1;
   sid=CY;
   sck=1;   
}
}
/*********************************************
函数名称:读字节函数
函数功能:
**********************************************/
uchar r_12864byte(void)
{
     uchar i,temp1,temp2;
     temp1 = 0;
     temp2 = 0;
     for(i=0;i<8;i++)
     {
           temp1=temp1<<1;
           sck = 0;
           sck = 1;            
           sck = 0;
           if(sid) temp1++;
     }
     for(i=0;i<8;i++)
     {
           temp2=temp2<<1;
           sck = 0;
           sck = 1;            
           sck = 0; 
           if(sid) temp2++; 
     }    
     return ((0xf0&temp1)+(0x0f&temp2));
}
/*********************************************
函数名称:检测忙函数
函数功能:
**********************************************/
void c_12864busy( void )
{
do   
   w_12864byte(0xfc);      //11111,RW(1),RS(0),0
while(0x80&r_12864byte()); 
}
/*********************************************
函数名称:写入函数
函数功能:
**********************************************/
void w_12864(bit dat_com,uchar byt)
{
uchar temp;
if(dat_com==0) //为零,写入指令 
   temp=0xf8; //11111,RS(0),RW(0),0
else    //否则,写入数据
   temp=0xfa; //11111,RS(1),RW(0),0 
cs=1;
c_12864busy();
w_12864byte(temp);
w_12864byte(byt&0xf0); //写入高四位
w_12864byte(byt<<4);   //写入低四位
cs=0;
}
/*********************************************
函数名称:初始化函数
函数功能:
**********************************************/
void init_12864(void)
{
w_12864(com,0x30); //基本指令功能.
w_12864(com,0x0c); //显示打开,关光标,反白关.
w_12864(com,0x01); //清屏指令.
w_12864(com,0x06); //AC自动加一
}
/*********************************************
函数名称:绘图函数
函数功能:
**********************************************/
void w_12864bmp(uchar *puts)
{
uint x=0;
uchar i,j;
w_12864(com,0x34); //扩展指令
w_12864(com,0x36); //打开绘图
for(i=0;i<32;i++)
{
   w_12864(com,0x80|i);//列32行,双屏结构中上半屏 
   w_12864(com,0x80); //X地址坐标,自动加1.
   for(j=0;j<16;j++) //16*8=256
    w_12864(dat,puts[x++]);
  
}
for(i=0;i<32;i++)
{
   w_12864(com,0x80|i);
   w_12864(com,0x88); //下半屏
   for(j=0;j<16;j++)
    w_12864(dat,puts[x++]);
}

}
/*********************************************
函数名称:清屏函数
函数功能:
**********************************************/
void lcd_clear(void)
{
w_12864(com,0x30);
w_12864(com,0x01);
}

/*********************************************
函数名称:
函数功能: 清图形函数 
**********************************************/
void BMP_clear( void )
{
     uchar i,j;
     w_12864(com,0x34);      //8Bit扩充指令集,即使是36H也要写两次
     w_12864(com,0x36);      //绘图ON,基本指令集里面36H不能开绘图
     for(i=0;i<32;i++)            //12864实际为256x32
     {
           w_12864(com,0x80|i);      //行位置
           w_12864(com,0x80);      //列位置
           for(j=0;j<32;j++)            //256/8=32 byte
                w_12864(dat,0);
     }
}
/*********************************************
函数名称:
函数功能: 清文本函数
**********************************************/
void TXT_Clear( void )
{
     uchar i;
     w_12864(com,0x30);      //8BitMCU,基本指令集合
     w_12864(com,0x80);      //AC归起始位
     for(i=0;i<64;i++)
     w_12864(dat,0x20);
}
/*********************************************
函数名称:
函数功能:
**********************************************/
void w_12864Poss(uchar x,uchar y,uchar *buff)
{
uchar addr,i=0;
if(x==1)addr=0x80;
if(x==2)addr=0x90;
if(x==3)addr=0x88;
if(x==4)addr=0x98;
addr=addr+y;
w_12864(com,0x30);
w_12864(com,addr);

while(buff[i]!='\0')
{
   w_12864(dat,buff[i]);
   i++;
}

 
相关主题
...
回复 链接 收藏
 
xufengjun
精华:
0
积分:
0
等级:
学徒
登陆次数:
2 
发表帖子:
2 
注册时间:
2011-07-06 
最后登陆:
2011-07-06 
状态:
离线

查看详细资料


积分:0
帖子:2
精华:0
等级:学徒
注册时间:2011-07-06
最后登录:2011-07-06
我的博客 发短消息
我的相册 当前离线
发表于2011-07-06 16:53
2#
RE:LCD12864显示多路温度,如何编写C程序?用的是51单片机,总线扩展。
电路图和程序,谢谢
 
...
回复 链接 收藏
 
pan401317388
精华:
0
积分:
10
等级:
学徒
登陆次数:
14 
发表帖子:
21 
注册时间:
2011-08-02 
最后登陆:
2011-12-07 
状态:
离线

查看详细资料


积分:10
帖子:21
精华:0
等级:学徒
注册时间:2011-08-02
最后登录:2011-12-07
我的博客 发短消息
我的相册 当前离线
发表于2011-08-12 11:20
3#
回复:要LCD12864显示汉字,如何编写C程序?用的是51单片机,总线扩展。

[url= http://www.oushicn.com.cn]EPS线条厂[/url]外墙装饰线条http://www.oushicn.com.cn
[url= http://www.dgshennan.cn/]塑胶模架[/url]塑胶模架http://www.dgshennan.cn/
[url= http://www.dxosman.com/]东莞空压机[/url]东莞空压机 http://www.dxosman.com/
[url= http://www.dgxiuguo.com/]环氧树脂地坪[/url]环氧树脂地坪 http://www.dgxiuguo.com/
[url= http://www.fotess.com/]金卤灯生产厂家[/url]金卤灯生产厂家 http://www.fotess.com/
[url= http://www.chuangshengkt.com/]环保空调[/url]环保空调 http://www.chuangshengkt.com/
[url= http://www.e-axinni.com/]衣柜[/url]衣柜http://www.e-axinni.com/
[url= http://www.vihhotel.com/]东莞酒店[/url]东莞酒店http://www.vihhotel.com/
[url=http://www.genhong.net/]潜水料[/url]neopernehttp://www.genhong.net/
[url=http://www.szstkups.com/]东莞UPS电源[/url]东莞山特UPShttp://www.szstkups.com/
[url= http://www.dglgp.com/]东莞律师[/url]东莞顾问律师http://www.dglgp.com/
[url= http://www.dg12348.com]东莞刑事辩护[/url]东莞南城顾

 
...
回复 链接 收藏
 
3 1/1 共1页 1
  • 发布新帖
  • 发布投票
  •        
您尚未 登录 | 注册

关于Ramtron | Ramtron使用说明 | FAQ | 法律及版权声明 | 网站地图

联系邮件:tingting@eefocus.com  联系电话: 010-62967005-8032
Powered by eefocus.com