⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 MSP430单片机驱动Nokia6100LCD源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
/*------------------------------------------------------------------------------------
  Nom          :  Test_Nokia_7210_MSP430_SPI.c
  Description  :  Test des fonctions de gestion LCD Nokia 7210 & 6100
                  Routines pour controleurs Epson S1D15G10 et Philips PCF8833
                  Utilisation du coupleur SPI
  Author       :  24/03/2006 - CREMMEL Marcel
  History      :  24/03/2006 - Premi鑢e version
--------------------------------------------------------------------------------------*/
#include <msp430x14x.h>
#include <stdio.h>
#include <stdbool.h> //Pour le type "bool"
#include <math.h>
#include <stdlib.h> //Pour le type div_t

/*------------------------------------------------------------------------------------
                                         C鈈lage
--------------------------------------------------------------------------------------*/
// Connexions LCD Nokia
#define Lcd_CE_Pin   0x01  //  P3.0 = SCE
#define Lcd_DIN_Pin  0x02  //  P3.1 = SOMI = SDIN
#define Lcd_RST_Pin  0x04  //  P3.2 = RES
#define Lcd_CLK_Pin  0x08  //  P3.3 = UCLK = SCLK
#define Type_Controler_Pin 0x10 //P3.4 = Type de controleur : "1" : Epson; "0" : Philips

/*------------------------------------------------------------------------------------
                                         Constantes
--------------------------------------------------------------------------------------*/

/*-------------------------------
  Couleurs (palette 256 couleurs)
---------------------------------*/
#define Noir  0
#define Blanc 255
#define Bleu  3
#define Rouge 7*32
#define Vert  7*4

/*---------------------------------------
  Commandes du controleur EPSON S1D15G10
----------------------------------------*/
#define DISON    0xaf
#define DISOFF   0xae
#define DISNOR   0xa6
#define DISINV   0xa7
#define COMSCN   0xbb
#define DISCTL   0xca
#define SLPIN    0x95
#define SLPOUT   0x94
#define PASET    0x75
#define CASET    0x15
#define DATCTL   0xbc
#define INV_Y    0x01
#define INV_X    0x02
#define WR_DIR   0x04
#define RGBSET8  0xce
#define RAMWR    0x5c
#define RAMRD    0x5d
#define PTLIN    0xa8
#define PTLOUT   0xa9
#define RMWIN    0xe0
#define RMWOUT   0xee
#define ASCSET   0xaa
#define SCSTART  0xab
#define OSCON    0xd1
#define OSC_OFF  0xd2
#define PWRCTR   0x20
#define VOLCTR   0x81
#define VOLUP    0xd6
#define VOLDOWN  0xd7
#define TMPGRD   0x82
#define EPCTIN   0xcd
#define EPCOUT   0xcc
#define EPMWR    0xfc
#define EPMRD    0xfd
#define EPSRRD1  0x7c
#define EPSRRD2  0x7d
#define NOP      0x25

/*---------------------------------------
  Commandes du controleur Philips PCF8833
---------------------------------------*/
#define NO_OPERATION        0x00
#define SOFT_RESET          0x01
#define BOOSTER_OFF         0x02
#define BOOSTER_ON          0x03
#define DISPLAY_INFO        0x04  // read 25bits where MSB are dummy trash
#define DISPLAY_STATUS      0x09  // read 33bits where MSB are dummy trash
#define SLEEP_IN            0x10
#define SLEEP_OUT           0x11
#define PARTIAL_MODE_ON     0x12
#define NORMAL_MODE_ON      0x13
#define INVERSION_OFF       0x20
#define INVERSION_ON        0x21
#define PIXELS_OFF          0x22
#define PIXELS_ON           0x23
#define SET_CONTRAST        0x25
#define DISPLAY_OFF         0x28
#define DISPLAY_ON          0x29
#define SET_X_ADDR          0x2A // ATENTION! when X,Y address are changed BOTH must be changed
  // START_X                0xXX
  // STOP_X                 0xXX
#define SET_Y_ADDR          0x2B
  // START_Y                0xXX
  // STOP_Y                 0xXX
#define MEM_WRITE           0x2C
  // x times pixel data     0xXX
#define COLOR_SET           0x2D
  // 8 times red palette    0xXX
  // 8 times green palette  0xXX
  // 4 times blue palette   0xXX
#define PARTIAL_AREA        0x30
  // START_Y                0xXX
  // STOP_Y                 0xXX
#define SCROLL_DEFINITON    0x33 // always vertical
  // TOP_FIXED_LINES        0xXX
  // SCROLL_LINES           0xXX
  // BOTTOM_FIXED_LINES     0xXX
#define SET_SCROLL          0x37 // SEP scroll entry point
  // ROW_Y                  0xxx
#define MEM_CONTROL         0x36
#define   MEM_RGB           0x08 // "0": ordre RGB, "1": BGR
#define   MEM_LAO           0x10 // "0":haut vers bas, "1":bas vers haut
#define   MEM_VW            0x20 // "0":閏riture ds le sens X
                                  // "1":閏riture ds le sens Y
#define   MEM_MX            0x40 // "0":normal, "1":miroir en X
#define   MEM_MY            0x80 // "0":normal, "1":miroir en Y
#define IDLE_OFF            0x38
#define IDLE_ON             0x39
#define COLOR_INTERFACE     0x3A
  // pixelformat            0xXX
#define   COLOR_8_BIT       0x02
#define   COLOR_12_BIT      0x03
#define   COLOR_16_BIT      0x05
#define SET_VOP             0xB0 // irrelevant for Nokia6100
  // 2x                     0xXX
#define BOTTOM_ROW_SWAP_OFF 0xB4
#define BOTTOM_ROW_SWAP_ON  0xB5
#define TOP_ROW_SWAP_OFF    0xB6
#define TOP_ROW_SWAP_ON     0xB7
#define SUPER_FRAME_INV_OFF 0xB8
#define SUPER_FRAME_INV_ON  0xB9
#define DATA_ORDER_MSB      0xBA
#define DATA_ORDER_LSB      0xBB
#define TEMP_READ           0xC8 // read

/*------------------
  Constantes Timer A
--------------------*/
// Interruption Timer A, voie 0
#define Pulse_OUT1      100     //Dur閑 de l'impulsion de d閏lenchement de la CAN
#define Periode_IntTA0  588     //Soit une fr閝uence de 6800Hz avec horloge de 4MHZ

/*---------------
  Constantes UART
-----------------*/
#define RXBufSize 32 // Taille du buffer de r閏eption (puissance de 2)
#define TXBufSize 32 // Taille du buffer de transmission (puissance de 2)
#define Buffer_vide 1 // 1: rien ?transmettre

/*------------------------------------------------------------------------------------
                                    D閒inition de type
--------------------------------------------------------------------------------------*/
typedef enum
{
    Epson   =  Type_Controler_Pin,
    Philips = ~Type_Controler_Pin
} T_Type_Controler; // Type de transfert : commande ou donn閑s

/*------------------------------------------------------------------------------------
                                    Variables globales
-------------------------------------------------------------------------------------*/
/*-------------
       LCD
---------------*/
char Adr_X ; //Copie logicielle de l'adresse X du PCD8544 (0 ?83)
char Adr_Y ; //Copie logicielle de l'adresse Y du PCD8544 (0 ?5)
char WorkString[16]; //Chaine de caract鑢es pour sortie de message
// Param鑤res pour controleur Philips
char Texte_MEM_CONTROL; //Param鑤re de MEM_CONTROL pour le texte
char Image_MEM_CONTROL; //Param鑤re de MEM_CONTROL pour l'image
// Param鑤res pour controleur Epson
char Texte_DATCTL; //Param鑤re de DATCTL pour le texte
char Image_DATCTL; //Param鑤re de DATCTL pour l'image
// Param鑤res de texte
char Couleur_texte; //Code de couleur du texte
char Fond_texte; //Code de couleur du fond
char Sens_texte; //Sens d'閏riture du texte : 0:0? 1:90? 2:180?3:270?
/*------------------------------------------------------------------------------------
                                 Constantes en m閙oire flash
-------------------------------------------------------------------------------------*/

/* ---------------------
   Polices de caract鑢es
   ---------------------
  ------
  8 x 11
  ------
   Taille en octets    : 0x02AC, 684
   Largeur police      : 8
   Hauteur police      : 11
   Code du 1?caract鑢e: 0x20
   Code du dernier car.: 0x7E
   Bits par pixel      : 1
*/
typedef struct
{
  unsigned int  Size;
  unsigned char Width; //Pour espacement constant
  unsigned char Heigth;
  unsigned char Bits_per_Pixels;
  // if MSB are set then font is a compressed font
  unsigned char First_Char;
  unsigned char Last_Char;
  unsigned char Char_Widths[0x7E - 0x20 +1];// Largeurs de chaque caract鑢e
  unsigned char Font_data[582];// Description des caract鑢es (suite de pixels sans trou)
} Tfont8x11;

const Tfont8x11 Font8x11 =
 { 0x02AC,
   0x08,
   0x0B,
   0x01,
   0x20,
   0x7E,
   {
    0x03, 0x01, 0x04, 0x06, 0x05, 0x07, 0x05, 0x01, 0x02, 0x02, 0x03, 0x05, 0x02, 0x02, 0x01, 0x04,
    0x05, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x01, 0x02, 0x04, 0x05, 0x04, 0x05,
    0x07, 0x07, 0x05, 0x06, 0x06, 0x05, 0x05, 0x06, 0x06, 0x01, 0x04, 0x06, 0x05, 0x07, 0x06, 0x06,
    0x06, 0x06, 0x06, 0x05, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x04, 0x02, 0x05, 0x06,
    0x02, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x05, 0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x05, 0x05,
    0x05, 0x05, 0x02, 0x04, 0x02, 0x05, 0x05, 0x07, 0x04, 0x05, 0x04, 0x03, 0x01, 0x03, 0x06
   },
   {
    0x00, 0x00, 0x00, 0x00, 0xFE, 0x72, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x44, 0xF8, 0x0F, 0x11, 0x88,
    0xF0, 0x1F, 0x22, 0x30, 0x42, 0x22, 0xFF, 0x13, 0x09, 0x31, 0x04, 0x51, 0x84, 0x12, 0x48, 0x02,
    0x29, 0x44, 0x11, 0x84, 0x39, 0x32, 0x62, 0x12, 0x60, 0x80, 0xE4, 0x00, 0xFE, 0x09, 0x50, 0x80,
    0xFC, 0xA3, 0x00, 0x02, 0x28, 0x00, 0x04, 0x20, 0xC0, 0x07, 0x08, 0x40, 0x00, 0x20, 0x80, 0x80,
    0x00, 0x04, 0x00, 0x01, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x7F, 0x04, 0x24, 0x20, 0x01, 0xF1, 0x87,
    0x00, 0x04, 0xF0, 0x1F, 0xC1, 0x04, 0x25, 0x24, 0x11, 0x71, 0x88, 0x20, 0x02, 0x12, 0x91, 0x88,
    0xB8, 0x03, 0x0C, 0x58, 0x30, 0xC2, 0x7F, 0x80, 0xF0, 0x89, 0x84, 0x24, 0x24, 0x21, 0xF1, 0xF0,
    0x47, 0x44, 0x22, 0x12, 0x11, 0x71, 0x04, 0x20, 0x38, 0x31, 0x68, 0xC0, 0x00, 0xDC, 0x11, 0x91,
    0x88, 0x44, 0xC4, 0x1D, 0x8E, 0x88, 0x48, 0x44, 0x22, 0xE2, 0x0F, 0x84, 0x00, 0x08, 0x21, 0x20,
    0x80, 0x02, 0x22, 0x08, 0x02, 0x05, 0x28, 0x40, 0x01, 0x0A, 0x50, 0x20, 0x08, 0x22, 0xA0, 0x00,
    0x02, 0x01, 0x04, 0x20, 0x2C, 0x11, 0x70, 0x00, 0x3C, 0x10, 0x42, 0x26, 0x4A, 0xD1, 0x09, 0x51,
    0x70, 0x00, 0x0C, 0x1C, 0x98, 0x30, 0x04, 0x26, 0xC0, 0x01, 0x30, 0xFF, 0x89, 0x48, 0x44, 0x22,
    0xE2, 0x0E, 0x7F, 0x04, 0x24, 0x20, 0x01, 0x09, 0x88, 0x20, 0xFE, 0x13, 0x90, 0x80, 0x04, 0x44,
    0x10, 0x7C, 0xF8, 0x4F, 0x44, 0x22, 0x12, 0x91, 0x80, 0xFC, 0x27, 0x02, 0x11, 0x88, 0x40, 0x00,
    0xFC, 0x11, 0x90, 0x80, 0x44, 0x24, 0x12, 0xF2, 0xF9, 0x0F, 0x04, 0x20, 0x00, 0x01, 0x08, 0xFC,
    0xE7, 0x3F, 0xC0, 0x00, 0x08, 0x40, 0xFE, 0xF1, 0x1F, 0x0C, 0x90, 0x40, 0x08, 0x81, 0x00, 0xC8,
    0x7F, 0x00, 0x02, 0x10, 0x80, 0x00, 0xE4, 0x3F, 0x0C, 0x80, 0x01, 0x30, 0x60, 0xC0, 0x80, 0xFF,
    0xFC, 0xC7, 0x00, 0x18, 0x00, 0x01, 0x30, 0xFE, 0xE3, 0x8F, 0x80, 0x04, 0x24, 0x20, 0x01, 0xF1,
    0xC7, 0x7F, 0x22, 0x10, 0x81, 0x08, 0x44, 0xC0, 0x01, 0xFE, 0x08, 0x48, 0x40, 0x82, 0x12, 0x18,
    0x7F, 0xFD, 0x27, 0x02, 0x11, 0x88, 0x40, 0x04, 0xDC, 0xE3, 0x88, 0x88, 0x44, 0x24, 0x22, 0xE2,
    0x08, 0x40, 0x00, 0xFE, 0x13, 0x80, 0x00, 0xFC, 0x03, 0x20, 0x00, 0x01, 0x08, 0x40, 0xFE, 0x31,
    0x00, 0x0E, 0x80, 0x01, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0xFE, 0x00, 0x18, 0x30, 0x70, 0x00, 0x0C,
    0x80, 0xF9, 0xC3, 0x60, 0x88, 0x80, 0x02, 0x08, 0xA0, 0x80, 0x08, 0x83, 0x19, 0x00, 0x01, 0x10,
    0x00, 0x1F, 0x04, 0x10, 0x60, 0x00, 0x81, 0x09, 0x4A, 0x48, 0x22, 0x92, 0x90, 0x82, 0x0C, 0xE4,
    0x7F, 0x01, 0x32, 0x00, 0x06, 0xC0, 0x00, 0x98, 0x00, 0xFD, 0x8F, 0x00, 0x02, 0x08, 0x80, 0x00,
    0x08, 0x00, 0x20, 0x00, 0x01, 0x08, 0x40, 0x00, 0x02, 0x50, 0x00, 0x04, 0x00, 0x0C, 0x94, 0xA0,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -