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

📄 main.c

📁 MSP430单片机驱动Nokia6100LCD源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
    LcdSend_Cmd(MEM_CONTROL); LcdSend_Data(Texte_MEM_CONTROL);
   }
}

/*---------------------------------------------------------------
  Nom          :  Texte_270_degre
  Description  :  Parametrage du LCD pour un dessin de texte ?270?  Arguments    :  aucun
  Valeur renvoy閑 : aucune.
-----------------------------------------------------------------*/
void Texte_270_degre(void)
{
 Sens_texte=3;
 Texte_MEM_CONTROL=MEM_MX|MEM_MY|MEM_RGB; // Sens Y invers? Texte_DATCTL=INV_Y; //Sens Y invers? 
 if ((P3IN & Type_Controler_Pin)==Epson)
   { //Controleur Epson
    LcdSend_Cmd(DATCTL);
    LcdSend_Data(Texte_DATCTL);//Attributs pour texte
    LcdSend_Data(0);   //Arrangements segments = RGB
    LcdSend_Data(1);   //Echelle de 8 niveaux par couleur
   }
  else //Controleur Philips
   {
    LcdSend_Cmd(MEM_CONTROL); LcdSend_Data(Texte_MEM_CONTROL);
   }
}

/*---------------------------------------------------------------
  Nom          :  Exemples de textes
  Description  :  Rempli l'閏ran avec des exemples de textes
  Arguments    :  aucun
  Valeur renvoy閑 : aucune.
-----------------------------------------------------------------*/
void Exemples_de_textes(void)
{
 Texte_0_degre();
/* Couleur_texte=7*32+7*4+3; Fond_texte=0*32+0*4+0;
 LcdBigStr(5,15,"Dessin de texte");
 Couleur_texte=0*32+0*4+3; Fond_texte=7*32+7*4+0;
 LcdBigStr(5,35,"sur le LCD 7210");
 Couleur_texte=7*32+7*4+0; Fond_texte=5*32+0*4+0;
 LcdBigStr(25,55,"Police 16x13");*/
 Couleur_texte=0*32+0*4+0; Fond_texte=0*32+0*4+3;
 LcdLittleStr(15,75,"Avec une police 11x8");
 Couleur_texte=7*32+7*4+0; Fond_texte=0*32+3*4+0;
 LcdLittleStr(20,90,"CREMMEL Marcel");
 Couleur_texte=0*32+0*4+3; Fond_texte=7*32+7*4+3;
 LcdLittleStr(20,101,"le 20 mars 2005");
 Texte_0_degre();
 Couleur_texte=7*32+7*4+0; Fond_texte=0*32+3*4+0;
 LcdLittleStr(2,2,"Texte 0 degre");
 Texte_90_degre();
 LcdLittleStr(2,2,"Texte 90 degre");
 Texte_180_degre();
 LcdLittleStr(2,2,"Texte 180 degre");
 Texte_270_degre();
 LcdLittleStr(2,2,"Texte 270 degre");
}

/*---------------------------------------------------------------
  Nom          :  Init_Epson_Controler
  Description  :  Initialisations des registres du controleur
  Arguments    :  Aucun
  Valeur renvoy閑 : Aucune.
-----------------------------------------------------------------*/
void Init_Epson_Controler(void)
{
  P3OUT |= Lcd_CE_Pin ; // Controleur non s閘ectionn?(CE = "1")
  P3OUT |= Lcd_RST_Pin; // et pas de reset (RST = "1")
  Delay(30000); // D閘ai de 0,5s environ
  P3OUT &= ~Lcd_RST_Pin; //Reset PCD8544 (RST = "0")
  Delay(30000); // D閘ai de 0,5s environ
  P3OUT |= Lcd_RST_Pin; //Arr阾 reset PCD8544 (RST = "1")
  Adr_X=0; Adr_Y=0;
  // S閘ection du controleur (actif ?"0").
  P3OUT &= ~Lcd_CE_Pin;//CE = "0"
  LcdSend_Cmd(DISCTL);//Display control
   LcdSend_Data(0);   //CL divis?par 2. F1/F2: commutation 8H
   LcdSend_Data(32);  //(32+1)*4=132 lignes
   LcdSend_Data(10);  //Inversion de la surintensit?toutes les 10 lignes
   LcdSend_Data(0);   //Dispersion
 LcdSend_Cmd(COMSCN); //
   LcdSend_Data(1);   //Balayage COM1(1)->COM68(68) et COM132(69)->COM68(132)
 LcdSend_Cmd(OSCON);  //Oscillateur interne ON
 LcdSend_Cmd(SLPOUT); //Sleep out : broche /SLP="1"
 LcdSend_Cmd(VOLCTR); //R間lage 閘ectronique du contraste
   LcdSend_Data(25);  //Alpha = 25
   LcdSend_Data(3);   //1+Rb/Ra=3,6585
 LcdSend_Cmd(PWRCTR); //Power control
   LcdSend_Data(0x0F);//Tous ON, pas de r閟istances externes
 Delay(10000);        //Attendre que les 4 sources se stabilisent
 LcdSend_Cmd(DISINV); //Affichage en mode "inverse"
 LcdSend_Cmd(RGBSET8);//Affectation palette de couleurs
   //Les 8 niveaux de rouge cod閟 sur 4 bits
   LcdSend_Data(0);LcdSend_Data(2);LcdSend_Data(4);LcdSend_Data(6);
   LcdSend_Data(8);LcdSend_Data(10);LcdSend_Data(12);LcdSend_Data(15);
   //Les 8 niveaux de vert cod閟 sur 4 bits
   LcdSend_Data(0);LcdSend_Data(2);LcdSend_Data(4);LcdSend_Data(6);
   LcdSend_Data(8);LcdSend_Data(10);LcdSend_Data(12);LcdSend_Data(15);
   //Les 4 niveaux de bleu cod閟 sur 4 bits
   LcdSend_Data(0);LcdSend_Data(4);LcdSend_Data(9);LcdSend_Data(15);
 LcdSend_Cmd(NOP);    //Terminateur de la cmd pr閏閐ente
 LcdSend_Cmd(PASET);  //Page start/end RAM
   LcdSend_Data(2);   //Pourquoi Start = 2 ?
   LcdSend_Data(131); //End = 131
 LcdSend_Cmd(CASET);  //Column start/end RAM
   LcdSend_Data(0);   //Start = 0
   LcdSend_Data(131); //End = 131
 LcdSend_Cmd(DISON);  //Display ON
 // Param鑤res pour cmd DATCTL Epson
 Texte_DATCTL=WR_DIR;//Sens du texte X normal
 Image_DATCTL=INV_X; //Miroir X
 LcdSend_Cmd(DATCTL);
   LcdSend_Data(Texte_DATCTL);//Param鑤res pour le texte
   LcdSend_Data(0);   //Arrangements segments = RGB
   LcdSend_Data(1);   //Echelle de 8 niveaux par couleur
}

/*---------------------------------------------------------------
  Nom          :  Init_Epson_Controler
  Description  :  Initialisations des registres du controleur Epson
  Arguments    :  Aucun
  Valeur renvoy閑 : Aucune.
-----------------------------------------------------------------*/
void Init_Philips_Controler(void)
{
 P3OUT |= Lcd_CE_Pin ; // Controleur non s閘ectionn?(CE = "1")
 P3OUT |= Lcd_RST_Pin; // et pas de reset (RST = "1")
 Delay(30000); // D閘ai de 0,5s environ
 P3OUT &= ~Lcd_RST_Pin; //Reset controleur (RST = "0")
 Delay(30000); // D閘ai de 0,5s environ
 P3OUT |= Lcd_RST_Pin; //Arr阾 reset (RST = "1")
 // S閘ection du controleur (actif ?"0").
 P3OUT &= ~Lcd_CE_Pin;//CE = "0"
 LcdSend_Cmd(SOFT_RESET);
 LcdSend_Cmd(SLEEP_OUT);
 LcdSend_Cmd(BOOSTER_ON);
 Delay(100);
 LcdSend_Cmd(DISPLAY_ON);
 LcdSend_Cmd(COLOR_INTERFACE);
 LcdSend_Data(COLOR_8_BIT);
 LcdSend_Cmd(COLOR_SET);
   //Les 8 niveaux de rouge cod閟 sur 4 bits
   LcdSend_Data(0);LcdSend_Data(2);LcdSend_Data(4);LcdSend_Data(6);
   LcdSend_Data(9);LcdSend_Data(11);LcdSend_Data(13);LcdSend_Data(15);
   //Les 8 niveaux de vert cod閟 sur 4 bits
   LcdSend_Data(0);LcdSend_Data(2);LcdSend_Data(4);LcdSend_Data(6);
   LcdSend_Data(9);LcdSend_Data(11);LcdSend_Data(13);LcdSend_Data(15);
   //Les 4 niveaux de bleu cod閟 sur 4 bits
   LcdSend_Data(0);LcdSend_Data(4);LcdSend_Data(11);LcdSend_Data(15);
 // Param鑤res pour cmd MEM_CONTROL Philips
 Texte_MEM_CONTROL=MEM_VW|MEM_RGB|MEM_MX;//Sens X normal
 Image_MEM_CONTROL=MEM_RGB|MEM_MX;
   // MEM_RGB "0": ordre RGB, "1": BGR
   // MEM_LAO "0":haut vers bas, "1":bas vers haut
   // MEM_VW  "0":閏riture ds le sens X "1":閏riture ds le sens Y
   // MEM_MX  "0":normal, "1":miroir en X
   // MEM_MY  "0":normal, "1":miroir en Y
 LcdSend_Cmd(MEM_CONTROL);
   LcdSend_Data(Texte_MEM_CONTROL);
}

/*---------------------------------------------------------------
  Nom          :  Fill_Lcd
  Description  :  Remplir le LCD de la m阭e couleur
  Arguments    :  Coul_Lcd : Noir ou Blanc
  Valeur renvoy閑 : aucune.
-----------------------------------------------------------------*/
void Fill_Lcd(char Couleur)
{
 int i;
 if ((P3IN & Type_Controler_Pin)==Epson)
   { //Controleur Epson
     LcdSend_Cmd(PASET);  //Page start/end RAM
      LcdSend_Data(0);   //Start
      LcdSend_Data(131); //End
     LcdSend_Cmd(CASET);  //Column start/end RAM
      LcdSend_Data(0);   //Start = 0
      LcdSend_Data(131); //End = 131
     LcdSend_Cmd(RAMWR);
   }
  else //Controleur Philips
   {
     LcdSend_Cmd(SET_X_ADDR);
      LcdSend_Data(0);   //Start X address = 0
      LcdSend_Data(131); //End X address = 131
     LcdSend_Cmd(SET_Y_ADDR);
      LcdSend_Data(0);   //Start Y address = 0
      LcdSend_Data(131); //End Y address = 131
     LcdSend_Cmd(MEM_WRITE);
   }
 for (i=0; i<132*132; i++) LcdSend_Data(Couleur);
}

/*---------------------------------------------------------------
  Nom          :  LcdInit
  Description  :  Initialisation du PCD8544
  Arguments    :  aucun
  Valeur renvoy閑 : aucune.
-----------------------------------------------------------------*/
void LcdInit(void)
{
 if ((P3IN & Type_Controler_Pin)==Epson) Init_Epson_Controler();
                                    else Init_Philips_Controler();
}

/*---------------------------------------------------------------
  Nom          :  Conv_Bin_BCD
  Description  :  Conversion binaire -> BCD sur 2 digits maxi
  Arguments    :  x : nombre binaire
  Valeur renvoy閑 : mot de 16 bits : digit MSB ds octet MSB
                                     digit LSB ds octet LSB
-----------------------------------------------------------------*/
unsigned int Conv_Bin_BCD(char x)
{
 char BCD_h;
 char BCD_l;
 BCD_h=x/10;
 BCD_l=x-10*BCD_h;
 return (BCD_h*256+BCD_l);
}

/*---------------------------------------------------------------
  Nom          :  Conv_10bits_Ascii
  Description  :  Conversion 10 bits binaire -> ASCII
  Arguments    :  x : nombre binaire (0 ?1023)
  Valeur renvoy閑 : cha頽e de caract鑢es affect閑
-----------------------------------------------------------------*/
void Conv_10bits_Ascii(int x,char *s)
{
 char BCD_3;
 char BCD_2;
 char BCD_1;
 char BCD_0;
 BCD_3=x/1000;
 BCD_2=(x-1000*BCD_3)/100;
 BCD_1=(x-1000*BCD_3-100*BCD_2)/10;
 BCD_0= x-1000*BCD_3-100*BCD_2-10*BCD_1;
 s[0]=BCD_3+'0';s[1]=BCD_2+'0';s[2]=BCD_1+'0';s[3]=BCD_0+'0';s[4]=0;
}

/*------------------------------------------------------------------------------------
                                       Programme principal
--------------------------------------------------------------------------------------*/
void main(void)
{
 WDTCTL = WDTPW + WDTHOLD; // Arr阾 du chien de garde
 P3DIR=Lcd_CE_Pin|Lcd_DIN_Pin|Lcd_RST_Pin|Lcd_CLK_Pin;
 SetDCOClock(7,7);
 InitSPI_Lcd();//Initialisation du coupleur SPI pour Lcd
 LcdInit();
 Fill_Lcd(Bleu);
 Exemples_de_textes();
 for (;;)
 {
 }
}

⌨️ 快捷键说明

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