立即注册 登录
返回首页

uid:150793的个人空间

日志

用atmgea16控制lcd1602显示字符,仿真,实物出现了各种问题,崩溃

已有 898 次阅读2017-4-21 21:51

#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define lcd_RS_1 PORTD|=BIT(PD0)
#define lcd_RS_0 PORTD&=~BIT(PD0)
#define lcd_RW_1 PORTD|=BIT(PD1)
#define lcd_RW_0 PORTD&=~BIT(PD1)
#define lcd_EN_1 PORTD|=BIT(PD2)
#define lcd_EN_0 PORTD&=~BIT(PD2)

char  table1[]= {"  Good morning "};
char  table2[]= {"   wodediana! "};

void delay(int x)
{
    int i;
    while(x--)
    {
        for(i=0; i<1140; i++);

    }
}

void writedata(char dat)
{
DDRD|=0x01;
lcd_RS_1;
DDRD|=0x02;
lcd_RW_0;
DDRC=0xff;
PORTC=dat;
delay(5);
DDRD|=0x04;
lcd_EN_1;
delay(1);
DDRD|=0x04;
lcd_EN_0;
}

void writecommand(char com)
{
   
    DDRD|=0x01;
lcd_RS_0;
DDRD|=0x02;
lcd_RW_0;
DDRC=0xff;
PORTC=com;
delay(5);
DDRD|=0x04;
lcd_EN_1;
delay(1);
DDRD|=0x04;
lcd_EN_0;
}

void init()
{   
    DDRD|=0x04;
    lcd_EN_0;
    writecommand(0x38);           
    writecommand(0x0c);           
    writecommand(0x06);           
    writecommand(0x01);         
}

void main(void)
{
    int j;
    init();
DDRD=0xff;
DDRC=0xff;
    while(1)
    {
        j=0;
        while(table1[j]!='\0')
        {

            writedata(table1[j]);
            j++;
            delay(10);
        }
        j=0;
        writecommand(0x80+0x40);
        while(table2[j]!='\0')
        {
            writedata(table2[j]);
            j++;
            delay(10);
        }
        writecommand(0x01);
        delay(100);
    }
}


路过

鸡蛋

鲜花

握手

雷人

全部作者的其他最新日志

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部