#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 ) ;
}
14液晶12864并行2 C语言 程序代码
需积分: 5 14 浏览量
2023-02-07
14:36:50
上传
评论
收藏 19KB RAR 举报
![avatar](https://profile-avatar.csdnimg.cn/f66eb3d1ade54730889d31f82c27b6dd_m0_52376787.jpg!1)
![avatar-vip](https://csdnimg.cn/release/downloadcmsfe/public/img/user-vip.1c89f3c5.png)
设计交流学习m0_52376787
- 粉丝: 1452
- 资源: 5440
最新资源
- 【后端开发框架】教程&案例&相关项目
- setup asdfasfd
- 信号与系统、数字信号处理、通信原理等课程内容及相关实验项目
- 简鹿视频格式转换器 1.0 离线包.zip
- 《javascript网页编程》项目考试要求.doc
- 基于python实现的机器学习算法
- yolov8实战第十天-pyqt5-yolov8实现数据结构化、yolov8目标跟踪、过线检测计数系统(参考论文完整部署代码)
- C# opencvsharp对Mat数据进行序列化或者反序列化以及格式化输出演示源码.7z
- 主机性能指标采集器,感兴趣的运维小伙伴们可以下载试试
- 计算机网络和现代通信组网是信息科学和电子工程领域的重要分支,涉及大量的理论知识和实践技能 以下是一些学习资源和项目思路,可以帮助
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)