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
上一篇:空压机变频改造技术资料
上一篇:水垢清除器电路