本帖最后由 xiaoyigechaos 于 2014-4-21 19:28 编辑
程序代码如下
#include "reg52.h"
#include "INTRINS.H"
#define uchar unsigned char
#define uint unsigned int
#define data0 P2
//1602 ½Ó¿Ú
sbit RS=P2^0;//RS??? ??? ??????
sbit RW=P2^1;//RW???? ????
sbit EN=P2^2;//??? ????
uchar code arr[]="23RSrsBCbc";
void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++){
for(j=0;j<255;j++);
}
}
/*************************************************************
LCD³ÌÐò
*************************************************************/
void check_busy()
{
RS=0;
RW=1;
EN=1;
while(data0&0x80);
_nop_();
EN=0;
}
void LCD_Write_Com(uchar com)
{
uchar i;
for(i=0;i<2;i++){
data0|=0xf0;
check_busy();
RS=0;
RW=0;
data0=data0&0x0f;
data0=data0|com;
EN=1;
_nop_();
EN=0;
com=com<<4;
}
}
void LCD_Write_Data(uchar data1)
{
uchar i;
for(i=0;i<2;i++){
data0|=0xf0;
check_busy();
RS=1;
RW=0;
data0=data0&0x0f;
data0=data0|data1;
EN=1;
nop_();
EN=0;
data1=data1<<4;
}
}
//LCD1602???
void LCD_Init()
{
LCD_Write_Com(0x2c);
LCD_Write_Com(0x01);
LCD_Write_Com(0x08);
LCD_Write_Com(0x06);
LCD_Write_Com(0x0c);
}
main()
{
uchar i;
LCD_Init();
delay(10);
LCD_Write_Com(0x80);
for(i=0;i<8;i++){
LCD_Write_Data(arr);
delay(100);
}
while(1);
}
单片机是STC89C52RC,一开始以为是硬件问题,各种尝试都不行。有一部分字符显示的不对,比如
23RSrsBCbc 这个字符串会显示为 “bcbcbcbc”
不知道哪里出了问题,各种改都没解决,求指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>