立即注冊(cè) 登錄
返回首頁(yè)

uid:150793的個(gè)人空間

日志

用atmgea16控制lcd1602顯示字符,仿真,實(shí)物出現(xiàn)了各種問題,崩潰

已有 948 次閱讀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);
    }
}


路過

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

返回頂部