#include "reg52.h"
#include "intrins.h"
sbit io_LCD12864_RS = P2^5 ;
sbit io_LCD12864_RW = P2^6 ;
sbit io_LCD12864_EN = P2^7 ;
#define io_LCD12864_DATAPORT P0
#define SET_DATA io_LCD12864_RS = 1 ;
#define SET_INC io_LCD12864_RS = 0 ;
#define SET_READ io_LCD12864_RW = 1 ;
#define SET_WRITE io_LCD12864_RW = 0 ;
#define SET_EN io_LCD12864_EN = 1 ;
#define CLR_EN io_LCD12864_EN = 0 ;
void v_Lcd12864CheckBusy_f( void ) //忙检测函数
{
unsigned int nTimeOut = 0 ;
SET_INC
SET_READ
CLR_EN
SET_EN
while( ( io_LCD12864_DATAPORT & 0x80 ) && ( ++nTimeOut != 0 ) ) ;
CLR_EN
SET_INC
SET_READ
}
void v_Lcd12864SendCmd_f( unsigned char byCmd ) //发送命令
{
v_Lcd12864CheckBusy_f() ;
SET_INC
SET_WRITE
CLR_EN
io_LCD12864_DATAPORT = byCmd ;
_nop_();
_nop_();
SET_EN
_nop_();
_nop_();
CLR_EN
SET_READ
SET_INC
}
void v_Lcd12864SendData_f( unsigned char byData ) //发送数据
{
v_Lcd12864CheckBusy_f() ;
SET_DATA
SET_WRITE
CLR_EN
io_LCD12864_DATAPORT = byData ;
_nop_();
_nop_();
SET_EN
_nop_();
_nop_();
CLR_EN
SET_READ
SET_INC
}
void v_DelayMs_f( unsigned int nDelay ) //延时
{
unsigned int i ;
for( ; nDelay > 0 ; nDelay-- )
{
for( i = 125 ; i > 0 ; i-- ) ;
}
}
void v_Lcd12864Init_f( void ) //初始化
{
v_Lcd12864SendCmd_f( 0x30 ) ; //基本指令集
v_DelayMs_f( 50 ) ;
v_Lcd12864SendCmd_f( 0x01 ) ; //清屏
v_DelayMs_f( 50 ) ;
v_Lcd12864SendCmd_f( 0x06 ) ; //光标右移
v_DelayMs_f( 50 ) ;
v_Lcd12864SendCmd_f( 0x0c ) ; //开显示
}
void v_Lcd12864SetAddress_f( unsigned char x, y ) //地址转换
{
unsigned char byAddress ;
switch( y )
{
case 0 : byAddress = 0x80 + x ;
break;
case 1 : byAddress = 0x90 + x ;
break ;
case 2 : byAddress = 0x88 + x ;
break ;
case 3 : byAddress = 0x98 + x ;
break ;
default :
break ;
}
v_Lcd12864SendCmd_f( byAddress ) ;
}
void v_Lcd12864PutString_f( unsigned char x, unsigned char y, unsigned char *pData )
{
v_Lcd12864SetAddress_f( x, y ) ;
while( *pData != '\0' )
{
v_Lcd12864SendData_f( *pData++ ) ;
}
}
void main( void )
{
v_Lcd12864Init_f() ;
v_Lcd12864PutString_f( 0,0, " 东流电子") ;
v_Lcd12864PutString_f( 2,1, "开发板商城") ;
v_Lcd12864PutString_f( 0,2, "*LCD12864ST7920*") ;
v_Lcd12864PutString_f( 0,3, "★○◇◆※☆■△") ;
while( 1 ) ;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码)180-液晶
资源推荐
资源详情
资源评论
收起资源包目录
180-液晶12864并行2(51单片机C语言实例Proteus仿真和代码).rar (15个子文件)
180-液晶12864并行2
12864_Uv2.Bak 2KB
12864_Opt.Bak 1KB
12864.hex 1KB
12864.Opt 1KB
12864.OBJ 8KB
STARTUP.LST 11KB
12864.LST 5KB
12864.Uv2 2KB
STARTUP.A51 5KB
12864.M51 11KB
12864 7KB
12864.plg 205B
STARTUP.OBJ 749B
12864.lnp 58B
12864.c 3KB
共 15 条
- 1
资源评论
荣华富贵8
- 粉丝: 215
- 资源: 7653
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C语言和汇编语言的简单操作系统内核.zip
- (源码)基于Spring Boot框架的AntOA后台管理系统.zip
- (源码)基于Arduino的红外遥控和灯光控制系统.zip
- (源码)基于STM32的简易音乐键盘系统.zip
- (源码)基于Spring Boot和Vue的管理系统.zip
- (源码)基于Spring Boot框架的报表管理系统.zip
- (源码)基于树莓派和TensorFlow Lite的智能厨具环境监测系统.zip
- (源码)基于OpenCV和Arduino的面部追踪系统.zip
- (源码)基于C++和ZeroMQ的分布式系统中间件.zip
- (源码)基于SSM框架的学生信息管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功