博客首页 | 排行榜 |

tage的博客

个人档案
博文分类
MC9S08LL16单片机驱动段式LCD成功,上程序,上图。  2009-04-06 23:13

/myspace/album/image.php?uid=115706&aid=862&pic=e3e186a7&ext=JPG&screen=show

 

清明放假这3天把全部精力都用在做电路板和调试程序上了。这就是整个系统的全部零件,

一个MC9S08LL16的最小系统,一个8*24段式LCD(拣破烂拣的),一个usb锂电池充电器,一块手机li电池,一个DC/DC电路(LINEAR的方案,空载电流10uA),还有发射部分的mcu ,本打算用C8051F来做,后来一想虽然C8051F不错,但功耗方面怎么也比不上430,于是又做了2块MSP430的板子,用来驱动NRF24L01,这样就天衣无缝拉。把功耗做到最低,LCD的驱动真不好弄,没有中文资料,弄了10多个小时才弄出来。另外还有一点,LL16的LCD驱动居然带对比度控制,不错。

接下来的任务是学习MSP430,对430了解一点,计划先用430驱动NRF24L01吧,明天就上班了,没多少时间了,过几天在更新blog。

 

程序如下:

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include <string.h> /* include peripheral declarations */

 

/////////////////////////////////////////////////////////////////////////////////////////
// Peripheral Init
// --------------------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////
void Sys_Peripheral_Init(void){
 

  SOPT1 =    0x63; //disable cop. enable stop.
  SPMSC1 = 0x00; //LVD disabled
 
 // For Stop2
 // SPMSC2_PPDC = 1;
 
  IRQSC_IRQPE =1;
  
//////////////////////////////////////////////////////////////////////////// 
// Clock Init ICS
////////////////////////////////////////////////////////////////////////
                           ICSC2 = 0x07;
                           ICSC1 = 0x00;
                          
                          
                        
//////////////////////////////////////////////////////////////////////////// 
// Init GPIO
////////////////////////////////////////////////////////////////////////
/*       PTADD = 0x3F;
       PTBDD = 0xFF;
       PTCDD =0x7f;
       PTDDD = 0xFF;
       PTEDD =0xff;
      
       PTAD = 0x00;
       PTBD = 0x00 ;
       PTCD =0x00;
       PTDD = 0x00;
       PTED =0x00;
 */
      
//////////////////////////////////////////////////////////////////////////// 
// Init LCD
////////////////////////////////////////////////////////////////////////
    
   LCDPEN0 = 0xFF;
   LCDPEN1 = 0xFF;
   LCDPEN2 = 0xFF;
   LCDPEN3 = 0xFF;
             //Enable all LCD Pins
/*   
    //Enable Back Plane Pins
    LCDBPEN0 = 0xDB;    //   1101 1011
    LCDBPEN1 = 0x03;    //   0000 0011

 */   
 
    LCDBPEN0 = 0xFF;
    LCDBPEN1 = 0x0;
//    LCDBPEN2 = 0x0;
//    LCDBPEN3 = 0x0;
   //Set Back Planes
    LCDWF0 = 0x01;
    LCDWF3 = 0x02;
    LCDWF6 = 0x04;
    LCDWF9 = 0x08;
    LCDWF1 = 0x10;
    LCDWF7 = 0x20;
    LCDWF4 = 0x40;
    LCDWF8 = 0x80;
   

 

    //Front plane data
     
      SetDisplay();
     
     
      ///LCD Control registers
      LCDRVC = 0x8F;
      LCDSUPPLY = 0x83;
      LCDC0 =    0xA7; 
     
      //Set up blink mode
     
      LCDBCTL_BRATE =4;
      //LCDBCTL_BLINK  = 1;
    
     
   
}

 

//////////////////////////////////////////////////////////////////////////// 
// Main Routine
////////////////////////////////////////////////////////////////////////

void main(void)
 {
  Sys_Peripheral_Init();
//  SetDisplay();
//  ClearDisplay();

 

      LCDWF0 = 0x01;
      LCDWF1 = 0x02;
      LCDWF2 = 0x04;
      LCDWF3 = 0x08;
      LCDWF4 = 0x10;
      LCDWF5 = 0x20;
      LCDWF6 = 0x40;
      LCDWF7 = 0x80;
      LCDWF8 = 0x5B;    //E
      LCDWF9 = 0x5B;    //E
      LCDWF10 = 0x0;
      LCDWF11 = 0x0;
      LCDWF12 = 0x0;
      LCDWF13 = 0x0;
      LCDWF14 = 0x0;
      LCDWF15 = 0x5A;    //F
      LCDWF16 = 0x0;    
      LCDWF17 = 0x77;    //O
      LCDWF18 = 0x53;     //C
      LCDWF19 = 0x37;     //U
      LCDWF20 = 0x5D;     //S
      LCDWF21 = 0x0;
      LCDWF22 = 0x0;
      LCDWF23 = 0x0;
      LCDWF24 = 0x0;
      LCDWF25 = 0x0;
      LCDWF26 = 0x0;
      LCDWF27 = 0x0;
      LCDWF28 = 0x0;
      LCDWF29 = 0x0;
      LCDWF30 = 0x0;
      LCDWF31 = 0x0;
      for(;;);


 }
 

|
上一篇:CodeWarrior使用指南-----中文PDF 214页 | 下一篇:LL16 最小系统板LED 灯闪烁程序闪亮登场
以下网友评论只代表其个人观点,不代表本网站的观点或立场