ICCAVR->8515和LCD的接口源程序"/>
位置:51电子网 » 技术资料 » 测试测量

8515和LCD的接口源程序">ICCAVR->8515和LCD的接口源程序

发布时间:2008/5/27 0:00:00 访问次数:791

        

    

     avr8515 和 hd74480字符lcd的接口程序

     //

     // 硬件连接方式:lcd的d0-d7接8515的c口,

     // lcd的 rs ->pa0

     // lcd的 rw ->pa1

     // lcd的 e ->pa0

     // !!!注意vee,有时需要接负电源

     ---------------------------------------------------------------------

     #include#define rs_h asm("sbi 0x1b,0")

     #define rs_l asm("cbi 0x1b,0")

     #define rw_h asm("sbi 0x1b,1")

     #define rw_l asm("cbi 0x1b,1")

     #define e_h asm("sbi 0x1b,2")

     #define e_l asm("cbi 0x1b,2")//******************************************

     void delay()

     {

     unsigned char di;

     for(di=0;di<20;di++);

     }//判断lcd是否是内部操作状态

     char lcd_busy()

     {

     char rb;

    

     ddrc=0x0; //端口c设为输入方式

     e_l;

     rs_l;

     rw_h;

     delay();

     e_h;

     delay();

     rb=pinc;

     rb=rb&0x80;

     e_l;

     ddrc=0xff; //端口c设为输出方式 return rb;

     }

     //向lcd发送命令程序

     void lcd_command(unsigned char bcomm)

     {

     while(lcd_busy());

     e_l;

     rs_l;

     rw_l;

     delay();

     e_h;

     portc=bcomm;

     delay();

     e_l;

     delay();}//向lcd写入一个字符

     void lcd_write(char wb)

     {

     while(lcd_busy());

     e_l;

     rs_h;

     rw_l;

     delay();

     e_h;

     portc=wb;

     delay();

     e_l;

     delay();

     }//初始化时用的写命令程序,和lcd_command的区别是不判断忙标志

     void lcd_initcommand(unsigned char bcomm)

     {

     e_l;

     rs_l;

     rw_l;

     delay();

     e_h;

     portc=bcomm;

     delay();

     e_l;

     }//初始化:8位接口,2行x16字符的工作方式

     void lcd_init()

     {

     char i;

     lcd_initcommand(0x30);

     for(i=0;i<100;i++) delay();

     lcd_initcommand(0x30);

     for(i=0;i<10;i++) delay();

     lcd_initcommand(0x30); lcd_command(0x38);

     lcd_co

        

    

     avr8515 和 hd74480字符lcd的接口程序

     //

     // 硬件连接方式:lcd的d0-d7接8515的c口,

     // lcd的 rs ->pa0

     // lcd的 rw ->pa1

     // lcd的 e ->pa0

     // !!!注意vee,有时需要接负电源

     ---------------------------------------------------------------------

     #include#define rs_h asm("sbi 0x1b,0")

     #define rs_l asm("cbi 0x1b,0")

     #define rw_h asm("sbi 0x1b,1")

     #define rw_l asm("cbi 0x1b,1")

     #define e_h asm("sbi 0x1b,2")

     #define e_l asm("cbi 0x1b,2")//******************************************

     void delay()

     {

     unsigned char di;

     for(di=0;di<20;di++);

     }//判断lcd是否是内部操作状态

     char lcd_busy()

     {

     char rb;

    

     ddrc=0x0; //端口c设为输入方式

     e_l;

     rs_l;

     rw_h;

     delay();

     e_h;

     delay();

     rb=pinc;

     rb=rb&0x80;

     e_l;

     ddrc=0xff; //端口c设为输出方式 return rb;

     }

     //向lcd发送命令程序

     void lcd_command(unsigned char bcomm)

     {

     while(lcd_busy());

     e_l;

     rs_l;

     rw_l;

     delay();

     e_h;

     portc=bcomm;

     delay();

     e_l;

     delay();}//向lcd写入一个字符

     void lcd_write(char wb)

     {

     while(lcd_busy());

     e_l;

     rs_h;

     rw_l;

     delay();

     e_h;

     portc=wb;

     delay();

     e_l;

     delay();

     }//初始化时用的写命令程序,和lcd_command的区别是不判断忙标志

     void lcd_initcommand(unsigned char bcomm)

     {

     e_l;

     rs_l;

     rw_l;

     delay();

     e_h;

     portc=bcomm;

     delay();

     e_l;

     }//初始化:8位接口,2行x16字符的工作方式

     void lcd_init()

     {

     char i;

     lcd_initcommand(0x30);

     for(i=0;i<100;i++) delay();

     lcd_initcommand(0x30);

     for(i=0;i<10;i++) delay();

     lcd_initcommand(0x30); lcd_command(0x38);

     lcd_co

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!