51单片机 1602显示程序 C语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
lcd_wcmd(0x01); delay(200);
} }
//显示字符" WWW.PRECHIN.COM " //控制两字之间显示速度 //控制停留时间 //清除 LCD 的显示内容 //向左移动光标 //设置显示位置为第一行的第 16 个字符
//显示字符"WLCOME TO"
//控制两字之间显示速度 //设置显示位置为第二行的第 16 个字符
// 写入指令数据到 LCD
lcd_pos(BYTE pos) { lcd_wcmd(pos | 0x80); }
//设定显示位置
lcd_wdat(BYTE dat) { while(lcd_bz()); LCD_RS = 1; LCD_RW = 0; LCD_EP = 0;
//写入字符显示数据到 LCD
delay(int ms) { int i; while(ms--) {
for(i = 0; i< 250; i++) {
_nop_(); _nop_(); _nop_(); _nop_(); } } }
// 延时子程序
BOOL lcd_bz() { BOOL result;
// 测试 LCD 忙碌状态
*/
#include <reg51.h> #include <intrins.h>
typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL ;
sbit rs = P2^6;
//
sbit rw = P2^5;
sbit ep = P2^7;
*
描述:
LCD1602 移 动 显 示
*
* 显示方式: * 1 、 LCD
第一行显示:
* BIG BIG WORLD
*
*
LCD 第 二 行 显 示 : I LOVE PUZHONG
* * 2 、 先 将 两 行 字 符 写 入 DDRAM 中 , 然 后 从 右 至 左 逐 字 移 出 显 示 。
*
BYTE code dis1[] = {"welcome!"}; BYTE code dis2[] = {"www.PRECHIN.com"};
delay(BYTE ms) {
BYTE i; while(ms--) {
for(i = 0; i< 250; i++) {
_nop_(); _nop_(); _nop_(); _nop_(); } } }
sbit LCD_RS = P2^6; sbit LCD_RW = P2^5; sbit LCD_EP = P2^7;
BYTE code dis1[] = {" WELCOME TO "}; BYTE code dis2[] = {" WWW.PRECHIN.COM "}; BYTE code dis3[] = {" OT EMOCLEW "}; BYTE code dis4[] = {" MOC.NIHCERP.WWW "};
*
*
描
述
:
*
*
1602 字 符 型 LCD 显 示 演 示 程 序
*
*
在第一行显示
welcome
*
*
在第二行显示
www.PRECHIN.com
*
*
*
*******************************************************************************
* 3、在指定位置停留 1.6 秒后,闪烁 2 次,清屏。
*
* 4、反复循环上述显示方式。
*
*******************************************************************************
*/
#include <reg51.h> #include <intrins.h>
#define uchar unsigned char #define uint unsigned int
sbit LCD_RS = P2^6; sbit LCD_RW = P2^5; sbit LCD_EN = P2^7;
uchar code dis1[] = {"BIG BIG WORLD"}; uchar code dis2[] = {"I LOVE PUZHONG"};
lcd_wcmd(0x01); delay(1); lcd_wcmd(0x04);
lcd_pos(15); i = 0; while(dis3[ i ] != '\0') { lcd_wdat(dis3[ i ]); i++; delay(30); } lcd_pos(0x4F); i = 0; while(dis4[ i ] != '\0') { lcd_wdat(dis4[ i ]); i++; delay(30); } delay(800);
void delay(int ms) {
int i; while(ms--) {
for(i = 0; i< 250; i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } }
/*******************************************************************/ /* /*检查 LCD 忙状态 /*lcd_busy 为 1 时,忙,等待。lcd-busy 为 0 时,闲,可写指令与数据。 /* /*******************************************************************/
// 写入指令数据到 LCD
lcd_pos(BYTE pos) {
lcd_wcmdwk.baidu.compos | 0x80); }
//设定显示位置
lcd_wdat(BYTE dat) {
while(lcd_bz()); rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_();
LCD_RS = 0; LCD_RW = 1; LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x80); LCD_EP = 0; return result; }
lcd_wcmd(BYTE cmd) { while(lcd_bz()); LCD_RS = 0; LCD_RW = 0; LCD_EP = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0; }
//写入字符显示数据到 LCD
_nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }
lcd_init() {
lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); }
lcd_wdat(dis1[i]);
i++;
} lcd_pos(0x41);
// 设置显示位置为第二行第二个字符
i = 0;
while(dis2[i] != '\0')
{ lcd_wdat(dis2[i]); // 显示字符" www.PRECHIN.com "
i++;
}
while(1);
//
}
/****************************************************************************** **
/******************************************************************************
**
*
描述:
LCD1602 滚 动 显 示
*
* 显示方式:
*
* 1、从左到右逐字显示,闪动二次,清屏。
*
* 2、再从右到左逐字显示,闪动二次,清屏。
// 延时子程序
BOOL lcd_bz() {
BOOL result; rs = 0; rw = 1; ep = 1; _nop_();
// 测试 LCD 忙碌状态
_nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x80); ep = 0; return result; }
bit lcd_busy() {
bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_();
//向右移动光标 //设置显示位置为第一行的第 1 个字符
//显示字符"WLCOME TO"
//控制两字之间显示速度 //设置显示位置为第二行第 1 个字符
while(dis2[ i ] != '\0') {
lcd_wdat(dis2[ i ]); i++; delay(30); } delay(800);
//LCD 初始化设定 //16*2 显示,5*7 点阵,8 位数据 //显示开,关光标 //移动光标 //清除 LCD 的显示内容
main() {
BYTE i; lcd_init(); delay(10);
// 初始化 LCD
while(1) {
lcd_wcmd(0x06); lcd_pos(0); i = 0; while(dis1[ i ] != '\0') { lcd_wdat(dis1[ i ]); i++; delay(30); } lcd_pos(0x40); i = 0;
*
* 3、周期性地重复上述显示方式。
*
*******************************************************************************
*/
#include <reg51.h> #include <intrins.h>
typedef unsigned char BYTE; typedef bit BOOL;
/*******************************************************************/ /* /* 延时子程序 /* /*******************************************************************/
//显示字符" WWW.PRECHIN.COM " //控制两字之间显示速度 //控制停留时间 //清除 LCD 的显示内容 //控制两屏转换时间
/******************************************************************************
P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0; }
lcd_init() { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); }
lcd_wcmd(BYTE cmd) {
while(lcd_bz()); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }
//LCD 初始化设定 //
//
// //清除 LCD 的显示内容
main()
{
BYTE i; lcd_init();
// 初始化 LCD
delay(10); lcd_pos(4);
// 设置显示位置为第一行的第 5 个字符
i = 0;
while(dis1[i] != '\0')
{
// 显示字符"welcome!"
} }
//显示字符" WWW.PRECHIN.COM " //控制两字之间显示速度 //控制停留时间 //清除 LCD 的显示内容 //向左移动光标 //设置显示位置为第一行的第 16 个字符
//显示字符"WLCOME TO"
//控制两字之间显示速度 //设置显示位置为第二行的第 16 个字符
// 写入指令数据到 LCD
lcd_pos(BYTE pos) { lcd_wcmd(pos | 0x80); }
//设定显示位置
lcd_wdat(BYTE dat) { while(lcd_bz()); LCD_RS = 1; LCD_RW = 0; LCD_EP = 0;
//写入字符显示数据到 LCD
delay(int ms) { int i; while(ms--) {
for(i = 0; i< 250; i++) {
_nop_(); _nop_(); _nop_(); _nop_(); } } }
// 延时子程序
BOOL lcd_bz() { BOOL result;
// 测试 LCD 忙碌状态
*/
#include <reg51.h> #include <intrins.h>
typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL ;
sbit rs = P2^6;
//
sbit rw = P2^5;
sbit ep = P2^7;
*
描述:
LCD1602 移 动 显 示
*
* 显示方式: * 1 、 LCD
第一行显示:
* BIG BIG WORLD
*
*
LCD 第 二 行 显 示 : I LOVE PUZHONG
* * 2 、 先 将 两 行 字 符 写 入 DDRAM 中 , 然 后 从 右 至 左 逐 字 移 出 显 示 。
*
BYTE code dis1[] = {"welcome!"}; BYTE code dis2[] = {"www.PRECHIN.com"};
delay(BYTE ms) {
BYTE i; while(ms--) {
for(i = 0; i< 250; i++) {
_nop_(); _nop_(); _nop_(); _nop_(); } } }
sbit LCD_RS = P2^6; sbit LCD_RW = P2^5; sbit LCD_EP = P2^7;
BYTE code dis1[] = {" WELCOME TO "}; BYTE code dis2[] = {" WWW.PRECHIN.COM "}; BYTE code dis3[] = {" OT EMOCLEW "}; BYTE code dis4[] = {" MOC.NIHCERP.WWW "};
*
*
描
述
:
*
*
1602 字 符 型 LCD 显 示 演 示 程 序
*
*
在第一行显示
welcome
*
*
在第二行显示
www.PRECHIN.com
*
*
*
*******************************************************************************
* 3、在指定位置停留 1.6 秒后,闪烁 2 次,清屏。
*
* 4、反复循环上述显示方式。
*
*******************************************************************************
*/
#include <reg51.h> #include <intrins.h>
#define uchar unsigned char #define uint unsigned int
sbit LCD_RS = P2^6; sbit LCD_RW = P2^5; sbit LCD_EN = P2^7;
uchar code dis1[] = {"BIG BIG WORLD"}; uchar code dis2[] = {"I LOVE PUZHONG"};
lcd_wcmd(0x01); delay(1); lcd_wcmd(0x04);
lcd_pos(15); i = 0; while(dis3[ i ] != '\0') { lcd_wdat(dis3[ i ]); i++; delay(30); } lcd_pos(0x4F); i = 0; while(dis4[ i ] != '\0') { lcd_wdat(dis4[ i ]); i++; delay(30); } delay(800);
void delay(int ms) {
int i; while(ms--) {
for(i = 0; i< 250; i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } }
/*******************************************************************/ /* /*检查 LCD 忙状态 /*lcd_busy 为 1 时,忙,等待。lcd-busy 为 0 时,闲,可写指令与数据。 /* /*******************************************************************/
// 写入指令数据到 LCD
lcd_pos(BYTE pos) {
lcd_wcmdwk.baidu.compos | 0x80); }
//设定显示位置
lcd_wdat(BYTE dat) {
while(lcd_bz()); rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_();
LCD_RS = 0; LCD_RW = 1; LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x80); LCD_EP = 0; return result; }
lcd_wcmd(BYTE cmd) { while(lcd_bz()); LCD_RS = 0; LCD_RW = 0; LCD_EP = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0; }
//写入字符显示数据到 LCD
_nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }
lcd_init() {
lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); }
lcd_wdat(dis1[i]);
i++;
} lcd_pos(0x41);
// 设置显示位置为第二行第二个字符
i = 0;
while(dis2[i] != '\0')
{ lcd_wdat(dis2[i]); // 显示字符" www.PRECHIN.com "
i++;
}
while(1);
//
}
/****************************************************************************** **
/******************************************************************************
**
*
描述:
LCD1602 滚 动 显 示
*
* 显示方式:
*
* 1、从左到右逐字显示,闪动二次,清屏。
*
* 2、再从右到左逐字显示,闪动二次,清屏。
// 延时子程序
BOOL lcd_bz() {
BOOL result; rs = 0; rw = 1; ep = 1; _nop_();
// 测试 LCD 忙碌状态
_nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x80); ep = 0; return result; }
bit lcd_busy() {
bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_();
//向右移动光标 //设置显示位置为第一行的第 1 个字符
//显示字符"WLCOME TO"
//控制两字之间显示速度 //设置显示位置为第二行第 1 个字符
while(dis2[ i ] != '\0') {
lcd_wdat(dis2[ i ]); i++; delay(30); } delay(800);
//LCD 初始化设定 //16*2 显示,5*7 点阵,8 位数据 //显示开,关光标 //移动光标 //清除 LCD 的显示内容
main() {
BYTE i; lcd_init(); delay(10);
// 初始化 LCD
while(1) {
lcd_wcmd(0x06); lcd_pos(0); i = 0; while(dis1[ i ] != '\0') { lcd_wdat(dis1[ i ]); i++; delay(30); } lcd_pos(0x40); i = 0;
*
* 3、周期性地重复上述显示方式。
*
*******************************************************************************
*/
#include <reg51.h> #include <intrins.h>
typedef unsigned char BYTE; typedef bit BOOL;
/*******************************************************************/ /* /* 延时子程序 /* /*******************************************************************/
//显示字符" WWW.PRECHIN.COM " //控制两字之间显示速度 //控制停留时间 //清除 LCD 的显示内容 //控制两屏转换时间
/******************************************************************************
P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP = 0; }
lcd_init() { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); }
lcd_wcmd(BYTE cmd) {
while(lcd_bz()); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }
//LCD 初始化设定 //
//
// //清除 LCD 的显示内容
main()
{
BYTE i; lcd_init();
// 初始化 LCD
delay(10); lcd_pos(4);
// 设置显示位置为第一行的第 5 个字符
i = 0;
while(dis1[i] != '\0')
{
// 显示字符"welcome!"