![]() |
#2
春天的小草2012-06-29 15:53
#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]); } |
求1602显示自定义字符 ℃ 的C语言程序,在写入和读函数多点说明,因为是初学者,
请教下怎样使用自定义字符。
谢谢啦!!!!!!