接线图和程序如下:点击此处下载
ourdev_296594.pdf(文件大小:61K) (原文件名:航信灯接线图 Model (1).pdf)
/*************************************************************
FUNCTIONn: LCD driver 8080
AUTHOR: 科技
DESCRIPTION: RA8803
E-mail:
CREAT DATE: 2006-2-25
MODIFICATION DATE:
***************************************************************/
#include <pic.h>;//定义三个头文件
#define RW_WR RC1
#define E_RD RC0
#define CS RC2
#define RS RC4
#define RST RC5
#define DATA_BUS PORTD
#define BUSY RC3
unsigned char font[]=
{
0xd2,0xab,0xd3,0xee,0xbf,0xc6,0xbc,0xbc,//耀宇科技
0xd2,0xab,0xd3,0xee,0xbf,0xc6,0xbc,0xbc//耀宇科技
};
//***************************************以下为函数申明
void Delay(unsigned char shijian);
void Write_Data(unsigned char dat);
void Write_Instruction(unsigned char cmd);
void LCD_Controller_Register(unsigned char dat);
void Misc_Register(unsigned char dat);
void Advance_Power_Setup_Register(unsigned char dat);
void Advance_Display_Setup_Register(unsigned char dat);
void Cursor_Control_Register(unsigned char dat);
void Cursor_Size_Control_Register(unsigned char dat);
void Memory_Access_Mode_Register(unsigned char dat);
void Active_Window(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2);
void Display_Window(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2);
void Cursor_Position_Register(unsigned char x,unsigned char y);
void Begin_Segment_Position_Register(unsigned char x);
void Shift_Action_Range(unsigned char y1,unsigned char y2);
void Blink_Time_Register(unsigned char dat);
void Frame_Rate_Polarity_Change_At_Common_A_B_Register(unsigned char dat1,unsigned char dat2);
void Shift_Clock_Control_Register(unsigned char dat);
void Interrupt_Setup_And_Status_Register(unsigned char at);
void Font_Control_Register(unsigned char dat);
void Font_Size_Control_Register(unsigned char dat);
void Display_Chinese(unsigned char fnt[]);
void Initial(void);
/***********************************
** 函数名称: Delay
** 功能描述: 延时时间=(n*9+17)*12/F
** 输 入: n
** 输 出 : 无
** 全局变量:无
** 调用模块: 无
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
void Delay(unsigned char shijian)
{ unsigned char i;
for(i=shijian;i!=0;i--)//以10MS为基数的延时函数
{
unsigned int d=1000;//10MS延时函数,1000为10MS,2000为20MS
asm("clrwdt");
while(--d){;}
}
}
/****************************************
** 函数名称: Write_Data
** 功能描述: 传送数据
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Busy,
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Write_Data(unsigned char dat)
{ //while(BUSY);
DATA_BUS=dat;
E_RD=1;//置读取位为高,不能读
RS=1;
CS=0;
RW_WR=0;
Delay(1);
RW_WR=1;
CS=1;
Delay(5);
return;
}
/******************************************
** 函数名称: Write_Instruction
** 功能描述: 传送命令
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Busy,
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Write_Instruction(unsigned char cmd)
{ // while(BUSY);
DATA_BUS=cmd;
E_RD=1;//置读取位为高,不能读
RS=0;//为低时,存取缓存器,为高时,存取数据
CS=0;//片选端,为0时选通RA8803,为1时禁止工作
RW_WR=0;//写入信号,低电位动作,
Delay(1);
RW_WR=1;
CS=1;
Delay(5);
return;
}
/***********************************
** 函数名称: LCD_Controller_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void LCD_Controller_Register(unsigned char dat)
{
Write_Instruction(0x00);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Misc_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Misc_Register(unsigned char dat)
{
Write_Instruction(0x01);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Advance_Power_Setup_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Advance_Power_Setup_Register(unsigned char dat)
{
Write_Instruction(0x02);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Advance_Display_Setup_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Advance_Display_Setup_Register(unsigned char dat)
{
Write_Instruction(0x03);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Cursor_Control_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Cursor_Control_Register(unsigned char dat)
{
Write_Instruction(0x10);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Cursor_Size_Control_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Cursor_Size_Control_Register(unsigned char dat)
{
Write_Instruction(0x11);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Memory_Access_Mode_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Memory_Access_Mode_Register(unsigned char dat)
{
Write_Instruction(0x12);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Active_Window
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Active_Window(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2)
{
Write_Instruction(0x40); //Active Window Left Register
Write_Instruction(x1);
Write_Instruction(0x20); //Active Window Right Register
Write_Instruction(x2);
Write_Instruction(0x50); //Active Window Top Register
Write_Instruction(y1);
Write_Instruction(0x30); //Active Window Bottom Register
Write_Instruction(y2);
return;
}
/***********************************
** 函数名称: Display_Window
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Display_Window(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2)
{
Write_Instruction(0x41); //Display Window Left Register
Write_Instruction(x1);
Write_Instruction(0x21); //Display Window Right Register
Write_Instruction(x2);
Write_Instruction(0x51); //Display Window Top Register
Write_Instruction(y1);
Write_Instruction(0x31); //Display Window Bottom Register
Write_Instruction(y2);
return;
}
/***********************************
** 函数名称: Cursor_Position_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Cursor_Position_Register(unsigned char x,unsigned char y)
{
Write_Instruction(0x60);
Write_Instruction(x);
Write_Instruction(0x70);
Write_Instruction(y);
return;
}
/***********************************
** 函数名称: Begin_Segment_Position_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Begin_Segment_Position_Register(unsigned char x)
{
Write_Instruction(0x61);
Write_Instruction(x);
return;
}
/***********************************
** 函数名称: Shift_Action_Range
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Shift_Action_Range(unsigned char y1,unsigned char y2)
{
Write_Instruction(0x71);
Write_Instruction(y1);
Write_Instruction(0x72);
Write_Instruction(y2);
return;
}
/***********************************
** 函数名称: Blink_Time_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Blink_Time_Register(unsigned char dat)
{
Write_Instruction(0x80);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Frame_Rate_Polarity_Change_At_Common_A_B_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Frame_Rate_Polarity_Change_At_Common_A_B_Register(unsigned char dat1,unsigned char dat2)
{
Write_Instruction(0x81);
Write_Instruction(dat1);
Write_Instruction(0x91);
Write_Instruction(dat2);
return;
}
/***********************************
** 函数名称: Shift_Clock_Control_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Shift_Clock_Control_Register(unsigned char dat)
{
Write_Instruction(0x90);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Interrupt_Setup_And_Status_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Interrupt_Setup_And_Status_Register(unsigned char dat)
{
Write_Instruction(0xa0);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Font_Control_Register(
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Font_Control_Register(unsigned char dat)
{
Write_Instruction(0xf0);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Font_Size_Control_Register
** 功能描述:
** 输 入: dat
** 输 出 : 无
** 全局变量:无
** 调用模块: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-25
******************************************/
#pragma disable
void Font_Size_Control_Register(unsigned char dat)
{
Write_Instruction(0xf1);
Write_Instruction(dat);
return;
}
/***********************************
** 函数名称: Display_Chinese
** 功能描述: Display_Chinese
** 输 入: value
** 输 出 : 无
** 全局变量:无
** 调用模块:LCD_Controller_Register,Cursor_Position_Register,Write_Data
**
** 作 者: 耀宇科技
** 日 期: 2006-2-10
******************************************/
#pragma disable
void Display_Chinese(unsigned char fnt[])
{
register unsigned char i,j;
LCD_Controller_Register(0xcd);
Cursor_Position_Register(0x00,0x00);
for(i=0;i<0x10;i+=2)
{
for(j=0;j<0x0f;j++)
{
Write_Data(fnt
);
Write_Data(fnt[i+1]);
}
}
return;
}
#pragma disable
void Initial(void)
{
TRISD=0X00;//设定数据端口为输出
TRISC=0X08;//RC3为输入,液晶端口状态忙位检测
PORTC=0X00;//先输出0清端口状态
PORTD=0X00;//清零端口
RST=0;//复位信号置低电平
Delay(30);//延时1秒
RST=1;//复位信号置低电平
Delay(10);//延时2秒
// while(BUSY);//忙信号检测
LCD_Controller_Register(0xcd);//缓存器00H正常模式,屏幕开启
Misc_Register(0xf1);//输出允许,BUSY高电平触发,4MHZ频率
Advance_Power_Setup_Register(0x10);
Advance_Display_Setup_Register(0x80);
Cursor_Control_Register(0x6b);
Cursor_Size_Control_Register(0x00);
Memory_Access_Mode_Register(0x91);
Active_Window(0x00,0x00,0x1d,0x7f);
Display_Window(0x00,0x00,0x1d,0x7f);
Begin_Segment_Position_Register(0x0);
Shift_Action_Range(0x00,0x9f);
Blink_Time_Register(0xaa);
Frame_Rate_Polarity_Change_At_Common_A_B_Register(0x00,0x00);
Shift_Clock_Control_Register(0x10);
Interrupt_Setup_And_Status_Register(0x11);
Font_Control_Register(0xa0);
Font_Size_Control_Register(0x0f);
Cursor_Position_Register(0x00,0x00);
}
//#pragma disable
//void Step(void) interrupt 0
//{
// while(IE0==1);
// return;
//}
main()
{ Initial();
while(1)
{
LCD_Controller_Register(0xcd);
Delay(600);
Delay(600);
Display_Chinese(font);
Delay(600);
Delay(600);
}
}
一周热门 更多>