利用SED1520实现点阵显示.docx
- 文档编号:16801544
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:21
- 大小:17.73KB
利用SED1520实现点阵显示.docx
《利用SED1520实现点阵显示.docx》由会员分享,可在线阅读,更多相关《利用SED1520实现点阵显示.docx(21页珍藏版)》请在冰点文库上搜索。
利用SED1520实现点阵显示
//-----------------------函数声明--------------------------------------------------------
#include"stdio.h"
#include"absacc.h"
#include"reg51.h"
//-----------------------LCD接口管脚声明--------------------------------------------------------
sbitA0=P3^0;//寄存器选择信号
sbitRW=P3^1;//读/写选择信号
sbitE1=P3^2;//使能信号E1
sbitE2=P3^3;//使能信号E2
#defineDATA_IOP1
#defineLCD_DISPLAYON0xaf
#defineLCD_DISPLAYOFF0xae
#defineLCD_DRIVERON0xa5
#defineLCD_DRIVEROFF0xa4
#defineLCD_DUTY160xa8
#defineLCD_DUTY320xa9
#defineLCD_END0xee
#defineLCD_RESET0xe2
#defineLCD_RWMODE0xe0
#defineLCD_STARTLINE00xc0
#defineLCD_PAGE00xb8
#defineLCD_COLUMNADDR00x00
#defineLCD_ON()LCD_Command(LCD_DISPLAYON)
#defineLCD_OFF()LCD_Command(LCD_DISPLAYOFF)
#defineLCD_StaticON()LCD_Command(LCD_DRIVERON)
#defineLCD_StaticOFF()LCD_Command(LCD_DRIVEROFF)
#defineLCD_Select16()LCD_Command(LCD_DUTY16)
#defineLCD_Select32()LCD_Command(LCD_DUTY32)
#defineLCD_StartRW()LCD_Command(LCD_RWMODE)
#defineLCD_EndRW()LCD_Command(LCD_END)
#defineLCD_Reset()LCD_Command(LCD_RESET)
#defineLCD_SetStartLine(i)LCD_Command(LCD_STARTLINE0+i)
#defineLCD_SetPage(i)LCD_Command(LCD_PAGE0+i)
#defineLCD_SetColumn(i)LCD_Command(LCD_COLUMNADDR0+i)
//--------------------------------------------------------------------------------------------------
//函数名称:
LCD_Command1
//入口参数:
nCommand命令字
//函数功能:
写指令代码子程序(SED1520-1)
//--------------------------------------------------------------------------------------------------
voidLCD_Command1(unsignedcharnCommand)
{
unsignedcharstate_temp;
A0=0;
RW=1;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
{
DATA_IO=0xFF;//P1口置"1"
E1=1;
state_temp=DATA_IO;//设置读状态字地址
E1=0;
}
RW=0;
E1=1;
DATA_IO=nCommand;//写指令代码
E1=1;
E1=0;
}
//--------------------------------------------------------------------------------------------------
//函数名称:
WRITE_showDATA1
//入口参数:
show_DATA写入SED1520-1内部显示RAM的数据
//函数功能:
写显示数据子程序(SED1520-1)
//--------------------------------------------------------------------------------------------------
voidWRITE_showDATA1(unsignedcharshow_DATA)
{
unsignedcharstate_temp;
A0=0;
RW=1;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
{
DATA_IO=0xFF;//P1口置"1"
E1=1;
state_temp=DATA_IO;//设置读状态字地址
E1=0;
}
A0=1;
RW=0;
E1=1;
DATA_IO=show_DATA;//写指令代码
E1=1;
E1=0;
}
//--------------------------------------------------------------------------------------------------
//函数名称:
READ_showDATA1
//入口参数:
show_DATA读出SED1520-1内部显示RAM的数据
//函数功能:
读显示数据子程序(SED1520-1)
//--------------------------------------------------------------------------------------------------
unsignedcharREAD_showDATA1()
{
unsignedcharshow_DATA;
unsignedcharstate_temp;
A0=0;
RW=1;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
{
DATA_IO=0xFF;//P1口置"1"
E1=1;
state_temp=DATA_IO;//设置读状态字地址
E1=0;
}
A0=1;
DATA_IO=0xFF;//P1口置"1"
E1=1;
show_DATA=DATA_IO;//读数据
E1=0;
return(show_DATA);//返回显示区数据
}
//--------------------------------------------------------------------------------------------------
//函数名称:
LCD_Command2
//入口参数:
nCommand命令字
//函数功能:
写指令代码子程序(SED1520-2)
//--------------------------------------------------------------------------------------------------
voidLCD_Command2(unsignedcharnCommand)
{
unsignedcharstate_temp;
A0=0;
RW=1;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
{
DATA_IO=0xFF;//P1口置"1"
E2=1;
state_temp=DATA_IO;//设置读状态字地址
E2=0;
}
RW=0;
E2=1;
DATA_IO=nCommand;//写指令代码
E2=1;
E2=0;
}
//--------------------------------------------------------------------------------------------------
//函数名称:
WRITE_showDATA2
//入口参数:
show_DATA写入SED1520-2内部显示RAM的数据
//函数功能:
写显示数据子程序(SED1520-2)
//--------------------------------------------------------------------------------------------------
voidWRITE_showDATA2(unsignedcharshow_DATA)
{
unsignedcharstate_temp;
A0=0;
RW=1;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
{
DATA_IO=0xFF;//P1口置"1"
E2=1;
state_temp=DATA_IO;//设置读状态字地址
E2=0;
}
A0=1;
RW=0;
E2=1;
DATA_IO=show_DATA;//写指令代码
E2=1;
E2=0;
}
//--------------------------------------------------------------------------------------------------
//函数名称:
READ_showDATA2
//入口参数:
show_DATA读出SED1520-2内部显示RAM的数据
//函数功能:
读显示数据子程序(SED1520-2)
//--------------------------------------------------------------------------------------------------
unsignedcharREAD_showDATA2()
{
unsignedcharshow_DATA;
unsignedcharstate_temp;
A0=0;
RW=1;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
{
DATA_IO=0xFF;//P1口置"1"
E2=1;
state_temp=DATA_IO;//设置读状态字地址
E2=0;
}
A0=1;
DATA_IO=0xFF;//P1口置"1"
E2=1;
show_DATA=DATA_IO;//读数据
E2=0;
return(show_DATA);//返回显示区数据
}
//-----------------------函数声明--------------------------------------------------------
#include"stdio.h"
#include"absacc.h"
#include"reg51.h"
//-----------------------定义地址--------------------------------------------------------
#defineCWADD1XBYTE[0x8000]//写指令代码地址(E1)
#defineCRADD1XBYTE[0x8200]//读状态字地址(E1)
#defineDWADD1XBYTE[0x8100]//写显示数据地址(E1)
#defineDRADD1XBYTE[0x8300]//读显示数据地址(E1)
#defineCWADD2XBYTE[0x4000]//写指令代码地址(E2)
#defineCRADD2XBYTE[0x4200]//读状态字地址(E2)
#defineDWADD2XBYTE[0x4100]//写显示数据地址(E2)
#defineDRADD2XBYTE[0x4300]//读显示数据地址(E2)
//-----------------------定义各命令字--------------------------------------------------------
#defineLCD_DISPLAYON0xaf
#defineLCD_DISPLAYOFF0xae
#defineLCD_DRIVERON0xa5
#defineLCD_DRIVEROFF0xa4
#defineLCD_DUTY160xa8
#defineLCD_DUTY320xa9
#defineLCD_END0xee
#defineLCD_RESET0xe2
#defineLCD_RWMODE0xe0
#defineLCD_STARTLINE00xc0
#defineLCD_PAGE00xb8
#defineLCD_COLUMNADDR00x00
//-----------------------定义各命令操作--------------------------------------------------------
#defineLCD_ON()LCD_Command(LCD_DISPLAYON)
#defineLCD_OFF()LCD_Command(LCD_DISPLAYOFF)
#defineLCD_StaticON()LCD_Command(LCD_DRIVERON)
#defineLCD_StaticOFF()LCD_Command(LCD_DRIVEROFF)
#defineLCD_Select16()LCD_Command(LCD_DUTY16)
#defineLCD_Select32()LCD_Command(LCD_DUTY32)
#defineLCD_StartRW()LCD_Command(LCD_RWMODE)
#defineLCD_EndRW()LCD_Command(LCD_END)
#defineLCD_Reset()LCD_Command(LCD_RESET)
#defineLCD_SetStartLine(i)LCD_Command(LCD_STARTLINE0+i)
#defineLCD_SetPage(i)LCD_Command(LCD_PAGE0+i)
#defineLCD_SetColumn(i)LCD_Command(LCD_COLUMNADDR0+i)
/*ASCII字体,大小6X8,上到下D0~D7,左到右*/
unsignedcharcodeASCII[][6]={
{0x00,0x7e,0x21,0x21,0x21,0x7e},/*A*/
{0x00,0x7f,0x49,0x49,0x49,0x36},/*B*/
{0x00,0x3e,0x41,0x41,0x41,0x22},/*C*/
{0x00,0x7f,0x41,0x41,0x22,0x1c},/*D*/
{0x00,0x7f,0x49,0x49,0x49,0x49},/*E*/
{0x00,0x7f,0x09,0x09,0x09,0x01},/*F*/
{0x00,0x3e,0x41,0x49,0x49,0x7a},/*G*/
{0x00,0x7f,0x08,0x08,0x08,0x7f},/*H*/
{0x00,0x41,0x7f,0x41,0x00,0x00},/*I*/
{0x00,0x20,0x40,0x41,0x3f,0x01},/*J*/
{0x00,0x7f,0x08,0x14,0x22,0x41},/*K*/
{0x00,0x7f,0x40,0x40,0x40,0x40},/*L*/
{0x00,0x7f,0x02,0x0c,0x02,0x7f},/*M*/
{0x00,0x7f,0x04,0x08,0x10,0x7f},/*N*/
{0x00,0x3e,0x41,0x41,0x41,0x3e},/*O*/
{0x00,0x7f,0x09,0x09,0x09,0x06},/*P*/
{0x00,0x3e,0x41,0x41,0x41,0x3e},/*Q*/
{0x00,0x7f,0x09,0x19,0x29,0x46},/*R*/
{0x00,0x46,0x49,0x49,0x49,0x31},/*S*/
{0x00,0x01,0x01,0x7f,0x01,0x01},/*T*/
{0x00,0x3f,0x40,0x40,0x40,0x3f},/*U*/
{0x00,0x1f,0x20,0x40,0x20,0x1f},/*V*/
{0x00,0x3f,0x40,0x38,0x40,0x3f},/*W*/
{0x00,0x63,0x14,0x08,0x14,0x63},/*X*/
{0x00,0x07,0x08,0x70,0x08,0x07},/*Y*/
{0x00,0x61,0x51,0x49,0x45,0x43},/*Z*/
};
//--------------------------------------------------------------------------------------------------
//函数名称:
LCD_Command1
//入口参数:
nCommand命令字
//函数功能:
写指令代码子程序(SED1520-1)
//--------------------------------------------------------------------------------------------------
voidLCD_Command1(unsignedcharnCommand)
{
unsignedcharstate_temp;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
state_temp=CRADD1;//设置读状态字地址
CRADD1=nCommand;//写指令代码
}
//--------------------------------------------------------------------------------------------------
//函数名称:
WRITE_showDATA1
//入口参数:
show_DATA写入SED1520-1内部显示RAM的数据
//函数功能:
写显示数据子程序(SED1520-1)
//--------------------------------------------------------------------------------------------------
voidWRITE_showDATA1(unsignedcharshow_DATA)
{
unsignedcharstate_temp;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
state_temp=CRADD1;//设置读状态字地址
DRADD1=show_DATA;//写指令代码
}
//--------------------------------------------------------------------------------------------------
//函数名称:
READ_showDATA1
//入口参数:
show_DATA读出SED1520-1内部显示RAM的数据
//函数功能:
读显示数据子程序(SED1520-1)
//--------------------------------------------------------------------------------------------------
unsignedcharREAD_showDATA1()
{
unsignedcharshow_DATA;
unsignedcharstate_temp;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
state_temp=CRADD1;//设置读状态字地址
show_DATA=DRADD1;//读数据
return(show_DATA);//返回显示区数据
}
//--------------------------------------------------------------------------------------------------
//函数名称:
LCD_Command2
//入口参数:
nCommand命令字
//函数功能:
写指令代码子程序(SED1520-2)
//--------------------------------------------------------------------------------------------------
voidLCD_Command2(unsignedcharnCommand)
{
unsignedcharstate_temp;
while(state_temp&0x80==1)//判"忙"标志为"0"否,否再读
state_temp=CRADD2;//设置读状态字地址
CRADD2=nCommand;//写指令代码
}
//--------------------------------------------------------------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 SED1520 实现 点阵 显示