首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

1602LCD芯片液晶反显程序

1602LCD芯片液晶反显程序

/*1602LCD演示程序*/ /*单片机型号IP-J54-CXAT89S51*/MC68HC705C8S
/*晶振:11.0592MHZ*/
/*编译环境:Keil 7.50A*/
/****包含头文件*****/
#include <NFC20-48S05;reg51.h>
#include <intrins.h>
/******************端口定义可根据你的电路自行修改*******/
sbit rs=P3^5;
sbit rw=P2^7;
sbit cs=P3^4;
sbit ep=P3^4;/*****显示数据表*******/
unsigned char code dis1[] = {"xu han jun"};
unsigned char code dis2[] = {"best wishes"};
/********************
函数功能CD延时子程序
入口参数:ms
出口参数:
********************/
void delay(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i<250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/********************
函数功能:测试LCD忙碌状态
入口参数:
出口参数:result
**********************/
bit lcd_bz()
{
bit result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80);
ep = 0;
return result;
}
/*****************
函数功能:写指令数据到LCD子程序
入口参数:cmd
出口参数:
***************/
void lcd_wcmd(unsigned char cmd)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
/*************************
函数功能:设定显示位置子程序
入口参数:pos
出口参数:
*************************/
void lcd_pos(unsigned char pos)
{
lcd_wcmd(pos | 0x80);
}
/***********************
函数功能:写入显示数据到LCD子程序
入口参数:dat
出口参数:
************************/
void lcd_wdat(unsigned char dat)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
/**********************
函数功能CD初始化子程序
入口参数:
出口参数:
***********************/
void lcd_init()
{
lcd_wcmd(0x38);
delay(1);
lcd_wcmd(0x0c);
delay(1);
lcd_wcmd(0x01);
delay(1);
lcd_wcmd(0x04);
delay(1);
}
/*****************
函数功能:主程序
入口参数:
出口参数:
********************/
void main(void)
{
unsigned char i;
lcd_init();// 初始化LCDIC采购
delay(10);
lcd_pos(0x0E);//设置显示位置
i = 0;
while(dis1 != '\0')
{
lcd_wdat(dis1);//显示字符
i++;
}
lcd_pos(0x4E);// 设置显示位置
i = 0;
while(dis2 != '\0')
{
lcd_wdat(dis2);// 显示字符
i++;
}
while(1);
}
返回列表