| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1007 人关注过本帖
标题:求1602显示自定义字符 ℃ 的C语言程序,在写入和读函数多点说明,因为是初学 ...
只看楼主 加入收藏
xiao怀
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-5-20
收藏
 问题点数:0 回复次数:2 
求1602显示自定义字符 ℃ 的C语言程序,在写入和读函数多点说明,因为是初学者,
求1602显示自定义字符 的C语言程序,在写入和读函数多点说明,因为是初学者,
请教下怎样使用自定义字符。
谢谢啦!!!!!!
搜索更多相关主题的帖子: C语言 
2012-05-20 11:35
春天的小草
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-29
收藏
得分:0 
#include<pic.h>
__CONFIG(0X1832);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
#define rs RA1
#define rw RA2
#define e  RA3
void init();//申明I/O口初始化函数
void lcd_init();//申明lcd初始化函数
void write(char x);//申明显示1个字节数据函数
void lcd_enable();//申明lcd显示设置函数
void delay(int x);//申明延时函数
void LCD_set_xy(unsigned char x,unsigned char y);
void write_CGRAM();
void write1();


unsigned char table[]= {0x03,0x04,0x08,0x10,0x10,0x11,0x10,0x10,0x1F,0x00,0x00,0x00,0x1C,0x02,0x00,0x00,
                        0x1F,0x00,0x00,0x00,0x07,0x08,0x00,0x00,0x18,0x04,0x02,0x01,0x01,0x11,0x01,0x01,
                        0x10,0x10,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x10,0x08,0x07,0x00,0x00,0x1F,
                        0x00,0x02,0x04,0x08,0x10,0x00,0x00,0x1F,0x01,0x01,0x01,0x02,0x04,0x08,0x10,0x00};

unsigned char NF[]={'2','0','1','1','.','0','1','.','3','0'};

//主函数
void main()
{
while(1)
{
init();//调用初始化函数
lcd_init();//调用lcd初始化函数
LCD_set_xy(5,0);
lcd_enable();
write1();//显示日期
delay(1);

}
}

//I/O口初始化函数

void init()
{
 ADCON1=0X07;//定义A口为普通I/O口
 TRISA=0X00;//设置A口为输出
 TRISD=0X00;//设置D口为输出
}


//LCD初始化设置

void lcd_init()
{
PORTD=0X01;//清出显示
lcd_enable();
PORTD=0X38;//8位两行5*7点阵
lcd_enable();
PORTD=0X0f;//显示开,光标开,闪烁开
lcd_enable();
PORTD=0X0c;//光标移动文字不移动
lcd_enable();
}

//lcd显示设置函数

void lcd_enable()
{
rs=0;//该字节数据为命令而不是数据
rw=0;//此次操作为写而不是读
e=0;//拉低使能信号
delay(10);//保持使能信号为低一段时间(地址建立需要一段时间)
e=1;//拉高使能信号,建立lcd操作所需要的上升沿
}

//延时函数

void delay(int x)
{
int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}

//写数据指令

void write(char x)
{
PORTD=x;//待显示数据送到D口
rs=1;//该字节为数据而不是命令
rw=0;//此操作为写不是读
e=0;//拉低使能位
delay(10);//保持信号为低电平一段时间(地址建立需要的时间)
e=1;//拉高使能信号,建立lcd所需要的上升沿
}

//写入自定义字符

void write_CGRAM()
{
unsigned char i,j,kk;
unsigned char tmp=0x40; //操作CGRAM的命令码
kk=0;
for(j=0;j<8;j++)        //64 字节存储空间,可以生成 8 个自定义字符点阵
{
    for(i=0;i<8;i++)    // 8 个字节生成 1 个字符点阵
    {
       PORTD=tmp+i;    //操作CGRAM的命令码+写入CGRAM地址.
       lcd_enable();
       write(table[kk]);    //写入数据
       kk++;
    }
    tmp+=8;
}
}
 
//定义字符或数字的显示文字

void LCD_set_xy(unsigned char x,unsigned char y)
{
    if (0==y) x|=0x80; //当要显示第一行时地址码+0x80;
   else x|=0xC0; //在第二行显示是地址码+0xC0;
   PORTD=x; //发送地址码 0x80-0x8F 或者0xC0-0xCF
}


//显示日期

void write1()
{
int i;
for(i=0;i<10;i++)
write(NF[i]);
}
2012-06-29 15:53
fv_bigfoot
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-10-24
收藏
得分:0 
,多给点注释不行吗?
2012-10-24 15:51
快速回复:求1602显示自定义字符 ℃ 的C语言程序,在写入和读函数多点说明,因为 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011003 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved