标题:
stc单片机驱动1602显示的问题
[打印本页]
作者:
baikeeditor
时间:
2013-6-7 14:56
标题:
stc单片机驱动1602显示的问题
各位大神大家好,我是一只小菜鸟。我要问的问题如题
下面是我在网上找的程序,
keil
编译没有问题也没有警告,但是烧到单片机里面就是不显示。很郁闷啊。求大神指点一下。感激不尽
#include<reg52.h>
#include <intrins.h>
#include <math.h>
#include <stdio.h>
//*********************LCD1602
设置
START************************
#define LCD_DB P0
sbit LCD_RS=P2^3;
sbit LCD_RW=P2^4;
sbit LCD_E=P2^5;
/******
定义函数
****************/
#define uchar unsigned char
#define uint unsigned int
void LCD_init(void); //
初始化函数
void LCD_write_command(uchar command); //
写指令函数
void LCD_write_data(uchar dat); //
写数据函数
void LCD_disp_char(uchar x,uchar y,uchar dat);//
在某个屏幕位置上显示一个字符
,X
(
0-15),y(1-2)
void LCD_disp_str(uchar x,uchar y,uchar *str); //LCD1602
显示字符串函数
void delay_n10us(uint n); //
延时函数
uint jishu,jishu1=0,wendu,bb,fen=0,miao=0,fmiao=0;
/*--------------------------------------
;
模块名称
CD_init();
;
功
能
:
初始化
LCD1602
;
占用资源
:--
;
参数说明
:--
;-------------------------------------*/
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
}
void LCD_init(void)
{
delay_n10us(10);
LCD_write_command(0x38);//
设置
8
位格式,
2
行,
5x7
delay_n10us(10);
LCD_write_command(0x0c);//
整体显示,关光标,不闪烁
delay_n10us(10);
LCD_write_command(0x06);//
设定输入方式,增量不移位
delay_n10us(10);
LCD_write_command(0x01);//
清除屏幕显示
delay_n10us(100); //
延时清屏,延时函数,延时约
n
个
10us
}
/*--------------------------------------
;
模块名称
CD_write_command();
;
功
能
CD1602
写指令函数
;
占用资源
: P2.0--RS(LCD_RS),P2.1--RW(LCD_RW),P2.2--E(LCD_E).
;
参数说明
:dat
为写命令参数
;-------------------------------------*/
void LCD_write_command(uchar dat)
{
delay_n10us(10);
LCD_RS=0; //
指令
LCD_RW=0; //
写入
LCD_E=1; //
允许
LCD_DB=dat;
delay_n10us(10); //
LCD_E=0;
delay_n10us(10); //
}
/*--------------------------------------
;
模块名称
CD_write_data();
;
功
能
CD1602
写数据函数
;
占用资源
2.0--RS(LCD_RS),P2.1--RW(LCD_RW),P2.2--E(LCD_E).
;
参数说明
:dat
为写数据参数
;-------------------------------------*/
void LCD_write_data(uchar dat)
{
delay_n10us(10);
LCD_RS=1; //
数据
LCD_RW=0; //
写入
LCD_E=1; //
允许
LCD_DB=dat;
delay_n10us(10);
LCD_E=0;
delay_n10us(10);
}
/*--------------------------------------
;
模块名称
:
;
功
能
:
显示一个字符
;
占用资源
:--
;
参数说明
:
;-------------------------------------*/
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}
/*--------------------------------------
;
模块名称
:
;
功
能
:
显示一个字符串。
;
占用资源
:--
;
参数说明
:
;-------------------------------------*/
void LCD_disp_str(uchar x,uchar y,uchar *str)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
while(*str!='\0')
{
LCD_write_data(*str);
str++;
}
}
/*--------------------------------------
;
模块名称
:delay_n10us();
;
功
能
:
延时函数,延时约
n
个
10us
;
占用资源
:--
;
参数说明
:--
;-------------------------------------*/
void delay_n10us(uint n) //
延时
n
个
10us@12M
晶振
{
uint i;
for(i=n;i>0;i--)
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
//*********************LCD1602
设置
END****************
//*********
主函数
*****************
void main()
{
while(1)
{
LCD_init();
LCD_disp_char(0,1,1+'0');//
显示一个字符
LCD_disp_char(15,1,1+'0');//
显示一个字符
LCD_disp_str(3,1,"We AreGood");//
显示字符串
delay(500);//
延时
LCD_disp_str(5,2," artner!");//
显示字符串
delay(500);//
延时
}
}
作者:
cuicaifeng
时间:
2013-7-30 14:08
把程序里的液晶驱动程序原封不动的搬过去,然后写一些简单的显示看看结果
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0