,这里没有介绍12864字符型液晶的使用,我就卖弄一下吧。
我用的是一款字符型的,引脚排序如下,我用单片机的PC口作为总线,显示字符还是可以的,完全可以显出唐诗宋词什么的。。。淘宝上卖屏的一般也会提供例程,但基本都是有些小错误的,毕竟人家只是卖屏的。
/*
*********************************************************************************************************
** 函数名称 :Init12864()
** 函数功能 :初始化12864
** 入口参数 :无
** 出口参数 :无
** 创建人 :tom
** 创建时间 :2009年11月28日13:24:56
*********************************************************************************************************
*/
void Init12864(void)
{
write_code(0x01); //0000,0001 清DDRAM
delay_nms(2);
write_code(0x30); //功能设置,一次送8位数据,基本指令集
delay_nms(2);
write_code(0x0c); //0000,1100 整体显示,游标off,游标位置off
delay_nms(2);
write_code(0x01); //0000,0001 清DDRAM
delay_nms(2);
write_code(0x02); //0000,0010 DDRAM地址归位
delay_nms(2);
write_code(0x80); //1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC
delay_nms(2);
}
/*
*********************************************************************************************************
** 函数名称 :set_xy()
** 函数功能 :设置显示位置
** 入口参数 :无
** 出口参数 :无
** 创建人 :tom
** 创建时间 :2009年11月28日13:24:56
*********************************************************************************************************
*/
void set_xy(unsigned char xpos,unsigned char ypos)
{
unsigned char byAddress ;
switch(ypos)
{
case 1:
byAddress=(0X80|xpos);break;
case 2:
byAddress=(0X90|xpos);break;
case 3:
byAddress=(0X88|xpos);break;
case 4:
byAddress=(0X98|xpos);break;
default:break;
}
write_code(byAddress);
}
/*
*********************************************************************************************************
** 函数名称 :print()
** 函数功能 :在指定位置显示内容
** 入口参数 :无
** 出口参数 :无
** 创建人 :tom
** 创建时间 :2009年11月28日13:24:56
*********************************************************************************************************
*/
void print(unsigned char x,unsigned char y,char* str)
{
unsigned char lcd_temp;
set_xy(x,y);
lcd_temp=*str;
while(lcd_temp != 0x00)
{
write_data(lcd_temp);
lcd_temp=*(++str);
}
}
/*
*********************************************************************************************************
** 函数名称 :printstr()
** 函数功能 :写字符串子程序
** 入口参数 :无
** 出口参数 :无
** 创建人 :tom
** 创建时间 :2009年11月28日13:24:56
*********************************************************************************************************
*/
void printstr( unsigned char x, unsigned char y, unsigned char *pData )
{
set_xy( x, y ) ;
while( *pData != '\0' )
{
write_data( *pData++ ) ;
}
}
/*
*********************************************************************************************************
** 函数名称 :printstr_d()
** 函数功能 :写数字子程序
** 入口参数 :无
** 出口参数 :无
** 创建人 :tom
** 创建时间 :2009年11月28日13:24:56
*********************************************************************************************************
*/
void printstr_d( unsigned char x, unsigned char y, unsigned char digit )
{
set_xy( x, y ) ;
}
//主程序显示“书山有路勤为径,学海无涯苦作舟”
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :主函数
** 入口参数 :无
** 出口参数 :无
** 创建人 :tom
** 创建时间 :2009年11月27日13:58:33
*********************************************************************************************************
*/
void main(void)
{
PortInit(); //端口初始化
delay_nms(50);
PSB=1;
TargetInit(); //目标函数初始化
Init12864(); //设定液晶工作方式
delay_nms(2);
printstr(1,1,"课堂演示系统");
printstr(0,2,"设计者:tom");
printstr(0,3,"书山有路勤为径");//xpos应为偶数
printstr(0,4,"学海无涯苦作舟");//xpos应为偶数
delay_nms(500);
delay_nms(500);
while(1)
{
chek_anj();
delay_nms(20);
printstr(1,1,"课堂演示系统");
printstr(0,2,"设计者:tom");
printstr(0,3,"书山有路勤为径");//xpos应为偶数
printstr(0,4,"学海无涯苦作舟");//xpos应为偶
delay_nms(20);
}
}
用户593939 2012-12-28 23:17
用户425322 2012-11-30 15:00
用户403664 2012-11-28 16:06
用户1632198 2012-11-28 09:43