DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 131|回复: 0
打印 上一主题 下一主题

液晶显示屏模块1602驱动程序源代码

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-30 13:25:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
液晶显示屏模块1602驱动程序源代码
//lcd1602 drive program for 51 mcu
//designed by Wangchao
//2006-6-14
#i nclude "reg52.h"
/********************************************************************/
//lcd part
#define LINE10
#define LINE21
#define LINE1_HEAD0x80
#define LINE2_HEAD0xC0
#define LCD_DELAY_TIME40
#define DATA_MODE0x38
#define OPEN_SCREEN0x0C
#define DISPLAY_ADDRESS0x80
#define CLEARSCREENLCD_en_command(0x01)
//common part
#define HIGH1
#define LOW 0
#define TRUE 1
#define ZERO 0
/*******************************************************************/
//change this part at different board
#define LCDIOP2
sbit LCD1602_RS=P0^7;//data command select1 data0 commandpin 4
sbit LCD1602_RW=P0^6;//read write select1 read 0 write pin 5
sbit LCD1602_EN=P0^5;//LCD enable signal pin 6
/********************************************************************/
void LCD_delay(void);//lcd delay
void LCD_en_command(unsigned char command);//write command
void LCD_en_dat(unsigned char temp);//write data
void LCD_set_xy( unsigned char x, unsigned char y );//set display address
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//write lcd a character
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//write lcd string
void LCD_init(void);//lcd initize
/********************************************************************/
void delay_nms(unsigned int n);//delay
/********************************************************************/
void main(void)
{
LCD_init();
while(TRUE )
{
CLEARSCREEN;

delay_nms(2);
LCD_write_string(0,LINE1,"Wellcome to DLUT");
LCD_write_string(0,LINE2,"www.dlut.edu.cn!");

delay_nms(500);

CLEARSCREEN;

delay_nms(2);
LCD_write_string(0,LINE1," lcd test ");
LCD_write_string(0,LINE2," successful! ");

delay_nms(500);
CLEARSCREEN;
delay_nms(2);
LCD_write_string(0,LINE1," I'm WangChao. ");
LCD_write_string(0,LINE2," Thank You! ");
delay_nms(500);   
}
}
/********************************************************************/
/******************** LCD PART *************************************/
void LCD_delay(void)
{
unsigned char i;
for(i=LCD_DELAY_TIME;i>ZERO;i--) //be sure lcd reset
;
}
/********************************************************************/
void LCD_en_command(unsigned char command)
{
LCDIO=command;
LCD1602_RS=LOW;
LCD1602_RW=LOW;
LCD1602_EN=LOW;
LCD_delay();
LCD1602_EN=HIGH;
}
/********************************************************************/
void LCD_en_dat(unsigned char dat)
{
LCDIO=dat;
LCD1602_RS=HIGH;
LCD1602_RW=LOW;
LCD1602_EN=LOW;
LCD_delay();
LCD1602_EN=HIGH;
}
/********************************************************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == LINE1)
address = LINE1_HEAD + x;
else
address = LINE2_HEAD + x;
LCD_en_command(address);
}
/********************************************************************/
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y );
LCD_en_dat(dat);
}
/********************************************************************/
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y ); //set address
while (*s) // write character
{
LCDIO=*s;
LCD_en_dat(*s);
s ++;
}
}
/********************************************************************/
void LCD_init(void)
{
CLEARSCREEN;//clear screen
LCD_en_command(DATA_MODE);//set 8 bit data transmission mode
LCD_en_command(OPEN_SCREEN);//open display (enable lcd display)
LCD_en_command(DISPLAY_ADDRESS);//set lcd first display address
CLEARSCREEN;//clear screen
}
/********************************************************************/
/*********************** OTHER PART *********************************/
void delay_nms(unsigned int n)
{
unsigned int i=0,j=0;
for (i=n;i>0;i--)
for (j=0;j<1140;j++);
}
/********************************************************************/
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-18 07:25 , 耗时 0.086210 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表