上海妇科疾病研究所 上海女性不孕医院 上海引产医院 无痛引产痛不痛 上海人流医院 白癜风治疗医院 上海小儿脑瘫医院 上海女子医院
bf533通过SPI 设置Nokia 5110(普通方式)-Blackfin-技术中心-国内专业ADI仿真器,Blackfin开发板,DSP芯片,软件算法,解决方案提供商-北京四维卓信电子有限公司
用户名: 密码:
主页 设为首页 加入收藏
      产品中心       技术中心       下载中心        社区新闻        诚聘英才       大学计划        关于我们       技术论坛
  您的当前位置:ADSP开源社区 >> 技术中心 >> Blackfin 今天是:
技术中心  
SigmaDSP
SHARC
A2B音频总线
Blackfin
ADI操作系统
ADSP-218X
TigerSAHRC
ADI DSP仿真器
产品导航
ADI DSP仿真器
SigmaDSP开发板
ADI A2B总线开发板
SHARC DSP开发板
销售网络
Blackfin  
bf533通过SPI 设置Nokia 5110(普通方式)
[ 作者: ] [ 来源:ADSP开源社区 ] [ 发布时间:2011-11-22 ]

最近闲来无事 把bf533的外围接口学习一下,通过SPI的总线设置一下Nokia 5110,这款液晶是我买430时带的 自己写下底层驱动 BF533上有SPI接口 这就省了很多麻烦事。这里先用一般的方式写下驱动。一会再用DMA的方式写一下。因为主要是学习DSP的外设,所以液晶只是配置好,并没有设置汉字 图片的读写,这些东西不值得我浪费时间了。本着LINUX的开放源码原则,所有函数如下,保证没有BUG.

现在开始:

//==============================================

//

//Init.c 文件

//接口方式 RST<->PF3 CE<->PF4 DC<->PF1

//DIN<->MOSI CLK<->SPI_C 其他的vcc gnd就不用我说了吧

//

//==============================================

#include <head.h>

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0x7bb07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void SPI_lcd_Init(void)
{
    int j;
    *pFIO_FLAG_C =0x0008;    //rst
   
    *pFIO_FLAG_S =0x0008;    //rst
for (j=0; j<0xaff0; j++) asm("nop;");  
   
    *pSPI_FLG = FLS4;               //ce信号
    *pSPI_BAUD = 16; // 5MHz
    *pSPI_CTL = 0x01 | SIZE | MSTR;
    *pSPI_CTL = (*pSPI_CTL | SPE);
   
    for (j=0; j<0xaff0; j++) asm("nop;");

SPI_send_data(0x21,0);
SPI_send_data(0xc8,0);
SPI_send_data(0x06,0);
SPI_send_data(0x13,0);
SPI_send_data(0x20,0);    //功能指令
LCD_clear();
SPI_send_data(0x0c,0);
  
    for (j=0; j<0xaff0; j++) asm("nop;");

}
//SPI send a word function
void SPI_send_data(unsigned short data,unsigned short command)
{
    if (command==0) *pFIO_FLAG_C=0x02;
    else     *pFIO_FLAG_S=0x02;
*pSPI_TDBR = data;
while ((*pSPI_STAT & 0x0001) == 0) ;
}

//=====================================================
//
//LCD.C文件
//
//=====================================================

#include <head.h>

void LCD_clear(void)
{
    unsigned int i;

    SPI_send_data(0x0c, 0);   
    SPI_send_data(0x80, 0);   

    for (i=0; i<504; i++)
     SPI_send_data(0,1);   
}

void LCD_set_XY(unsigned char X, unsigned char Y)
{
    SPI_send_data(0x40 | Y, 0);   // column
    SPI_send_data(0x80 | X, 0);          // row
}

void LCD_write_char(unsigned char c)
{
    unsigned char line;

    c -=32;                //english_6*8_pixel 中所列的ASCII码少了第一列

    for (line=0; line<8; line++)
      SPI_send_data(font6x8[c][line], 1);
}

void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
{
    LCD_set_XY(X,Y);
    while (*s)
      {
LCD_write_char(*s);
s++;
      }
}

void LCD_write_chinese_string(unsigned char X, unsigned char Y,
                   unsigned char ch_with,unsigned char num,
                   unsigned char line,unsigned char row)
{
    unsigned char i,n;
   
    LCD_set_XY(X,Y);                             //设置初始位置
   
    for (i=0;i<num;)   //注意FOR 语句的 i 值在什么时候开始加1
      {
      for (n=0; n<ch_with*2; n++)              //写一个汉字,ch_with=1
         {
           if (n==ch_with)                      //写汉字的下半部分
             {
               if (i==0) LCD_set_XY(X,Y+1);
               else
                  LCD_set_XY((X+(ch_with+row)*i),Y+1);
              }
           SPI_send_data(write_chinese[line+i][n],1);
         }
      i++;
      LCD_set_XY((X+(ch_with+row)*i),Y);
      }
}

//===========================================

//

//main.c 文件

//

//==========================================

//** file: spi.c
//** target: ADSP-BF533
//** creat time: 2008-8-19

#include <head.h>


//SPI interface funtion

const unsigned char font6x8[][6] =
{
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $
    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // %
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +
    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // ,
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // -
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @
    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [
    { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55
    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ]
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f
    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i
    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o
    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines
};

char write_chinese[][24]={

//徐
{0x28,0xF4,0x0B,0x50,0x58,0x54,0xF3,0x52,0x54,0x48,0x50,0x00,0x00,0x07,0x00,0x04,0x03,0x04,0x07,0x00,0x01,0x06,0x00,0x00},
//海
{0x99,0x62,0x58,0xC4,0x7B,0x4A,0xEA,0x4A,0xCA,0x7A,0x42,0x00,0x07,0x00,0x00,0x01,0x01,0x01,0x05,0x05,0x07,0x01,0x01,0x00},
//洋
{0x09,0xD2,0x00,0x84,0xA5,0xA6,0xFC,0xA6,0xA5,0xA4,0x84,0x00,0x01,0x07,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00},
};


//=====================================================
//
//ce<->pf4 dc<->pf1 rst<-pf3>
//
//=====================================================

void main(void)
{
    *pFIO_DIR = 0x0f;
    Init_EBIU();
    SPI_lcd_Init();
    LCD_write_english_string(12,3,"NOIt"); //okia 5110 LCD
//   LCD_write_chinese_string(5,0,12,4,0,5);
}

//=================================================

//

//头文件 HEAD.H

//

//==================================================

#ifndef _HEAD_H
#define _HEAD_H

#include <ccblkfn.h>
#include <cdefBF533.h>
#include <stdio.h>
#include <sys\exception.h>


void Init_EBIU(void);
void SPI_lcd_Init(void);
void SPI_send_data(unsigned short data,unsigned short command);
void LCD_clear(void);
void LCD_set_XY(unsigned char X, unsigned char Y);
void LCD_write_char(unsigned char c);
void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);
void LCD_write_chinese_string(unsigned char X, unsigned char Y,
                   unsigned char ch_with,unsigned char num,
                   unsigned char line,unsigned char row);
extern const unsigned char font6x8[][6];
extern char write_chinese[][24];

#endif

联系我们 | 关于我们 | 免责声明 | 诚征英才 | 友情链接
Copyright 2019 All rights reserved  本网页版权属Open ADSP所有
北京海淀区中关村大街32号新中发市场3659 邮编100100
电话 18611096839 
粤ICP备14035876号-1