您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机RT12232F st7920驱动程序 正文
RT12232F st7920驱动程序

RT12232F st7920驱动程序

点击数:7624 次   录入时间:03-04 11:50:53   整理:http://www.55dianzi.com   AVR单片机
#ifndef __LCD_H__ 
#define __LCD_H__ 

#include "type.h" 
  
//LCM122*32 PIN define 
#define CLK                 PORTC.5     //pc5 
#define SID                 PORTC.4     //pc4 
#define CS                  PORTB.4     //pb4 

#define SET_CLK()           CLK = 1; 
#define CLR_CLK()           CLK = 0; 
#define SET_SID()           SID = 1; 
#define CLR_SID()           SID = 0; 
#define LCD_Enable()        CS = 1; 
#define LCD_DISAble()       CS = 0; 

#define SID_PIN_IN()        DDRC.4 = 0; 
#define SID_PIN_OUT()       DDRC.4 = 1; 
#define CLK_PIN_OUT()       DDRC.5 = 1; 
#define CS_PIN_OUT()        DDRB.4 = 1;  

#define SID_PIN             PINC.4 //read pinx, not port!  
#define LCD_Hi_Z()          DDRC &= 0xCF;              
  
//lcd serial command 
//#define LCD_WRITE_COMMAND   0b11111000 
//#define LCD_WRITE_DATA      0b11111010 
//#define LCD_READ_STATUS     0b11111100 
//#define LCD_READ_DATA       0b11111110 

#define LCD_WRITE_COMMAND   0xF8 
#define LCD_WRITE_DATA      0xFA 
#define LCD_READ_STATUS     0xFC 
#define LCD_READ_DATA       0xFE 

void serial_write_byte(byte data); 
byte serial_read_byte(void); 

void LCDWriteCmd(byte command); 
void LCDWritEDAta(byte data); 
void InitLCD(void); 
void LCD_Write_CGRAM(byte nBytes); 
void LCD_Write_CGRAM(byte nBytes); 
void writechar(byte value); 
void writestring(byte flash *strn); 
void gotoxy(byte line, byte position); 
void LCDclrscr(void); 
void blink(byte on_off); 
void writeNumber(word value); 
  
#endif 


/*------------------------------------------------------------ 
FileName     : lcd.c 
Created by   : ZhengYanbo 
Created date : 2006.3.17 
Last modified: 2006.3.17 
Comments:    : serial drive for st7920 
-------------------------------------------------------------*/ 

#include "lcd.h" 
#include "type.h" 

/* 
flash byte CGRAM[128] =  

//目录循环 
0xE3,0x9E,0x91,0x11,0x89,0x11,0x89,0x1E, 
0x89,0x14,0x91,0x12,0xE3,0x91,0x00,0x00, 
0x00,0x00,0x3F,0xFC,0x40,0x02,0x40,0x42, 
0x40,0x82,0x3D,0xFC,0x00,0x80,0x00,0x40, 

//文件循环 
0xEE,0x8F,0x84,0x88,0x84,0x88,0xE4,0x8E, 
0x84,0x88,0x84,0x88,0x8E,0xEF,0x00,0x00, 
0x00,0x00,0x3F,0xFC,0x40,0x02,0x40,0x22, 
0x40,0x42,0x3E,0xFC,0x00,0x40,0x00,0x20, 

//随机模式 
0xE1,0x1B,0x92,0x95,0x94,0x55,0xE7,0xD5, 
0xA4,0x51,0x94,0x51,0x00,0x00,0x00,0x00, 
0x00,0x00,0x3F,0xFC,0x40,0x02,0x40,0x42, 
0x40,0x82,0x3D,0xFC,0x00,0x80,0x00,0x40, 

//磁盘循环 
0xCE,0x74,0xA4,0x84,0x94,0x85,0x94,0x66, 
0x94,0x14,0xA4,0x16,0xCE,0xE5,0x00,0x00, 
0x00,0x00,0x3F,0xFC,0x40,0x02,0x40,0x42, 
0x40,0x82,0x3D,0xFC,0x00,0x80,0x00,0x40 
}; */  

//********************************************************** 
//用串行方式写一个字节数据到LCD 
void serial_write_byte(byte data) 
//********************************************************** 

    byte i; 
     
    //SID pin output mode 
    SID_PIN_OUT(); 
    CLK_PIN_OUT(); 
    CS_PIN_OUT(); 
    for(i=0; i<8; i++) 
    { 
    if(data & 0x80)  
     SET_SID(); 
    else 
     CLR_SID(); 
    //send clk 
    CLR_CLK(); 
    #asm("nop"); 
    SET_CLK(); 
    data<<=1; 
    } 


//********************************************************** 
//以串行方式从LCD中读一个字节,返回数据 
byte serial_read_byte(void) 
//********************************************************** 
{    
    byte i, temp=0; 
     
    //SID pin input mode 
    SID_PIN_IN(); 
    CLK_PIN_OUT(); 
    CS_PIN_OUT(); 
    for(i=0; i<8; i++) 
    { 
    temp<<=1; 
    //send clk 
    CLR_CLK(); 
    #asm("nop"); 
    SET_CLK(); 
    //wait pin steady 
    #asm("nop"); 
    temp = (byte)SID_PIN; 
    } 
    return(temp);     


//********************************************************** 
//读LCD的状态,读出BF信号 
byte LCD_read_status(void) 
//********************************************************** 

    byte temp; 
     
    LCD_Enable(); 
    //send 0b11111100 

[1] [2] [3]  下一页


本文关键字:程序  AVR单片机单片机-工控设备 - AVR单片机

《RT12232F st7920驱动程序》相关文章>>>