softdev:msp430:lcd1
文書の過去の版を表示しています。
MSP430でLCD駆動
おいおい、またLCDか?、、て言わないで。LCDが一番わかりやすい、動作が目に見えるし。。。
今回使ったのは、有る所から入手した4bit転送のLCDでした。初期化とか説明書通り。
気をつける必要があるのは、「MSP430の電源は上限3.3V(公称)」と言う事。PICの様に5Vでも3Vでもというわけには行かず、LCDを5V品にすると、LDOなんぞが必要になる。
- 回路図は作らずに、適当に配線。ポート足りるので外部品もRESET端子のPU抵抗だけ。
- MSP430の低消費電力を体験したかったので、Sleep制御して、タイマー割り込みを使って起きるようにした。
- LaunchPadには32.768KHzの水晶が1個付いてくるので、外部発振を使って時計を作ってみた。
- 外部SWでLCDコントラストを変えるようにする。(外部割り込み使う)
初期化部
コアクロックはデフォルトの内部クロック、1MHz。
void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1SEL = 0x00; P1SEL2= 0x00; P1DIR = 0x01; // Set P1.0 to output direction P1OUT = 0x38; P1REN = 0x38; // Set 出力HしてからRENをセットするとPullUpになる模様 P2DIR |= 0x3F; // Set P2 Out ---- LCD初期化し表示(省略) ---- lcd_puts("LCD Watch");
端子割り込み
SWを3つ、P1に割り振る。
// Pi interrupt enable P1IE = 0x38; P1IES = 0x38; // P1.3-5 エッジ割り込みH->L P1IFG &= ‾0x38; // P1.3-5 割り込みフラグクリア
タイマ
タイマを外部の低周波数CLK、ACLKだったかな、にする。ここに、32768Hzの水晶振動子を付けて、15bitカウントしたら時計を1秒進ませる。
// Timer A setting TACTL = TASSEL_1 + MC_1 ;// ACLK, up to ccr, interrupt TACCR0 = 32768; // キャプチャ コンペアの値 TACCTL0 |= CCIE; // enable interrupt
softdev/msp430/lcd1.1358004089.txt.gz · 最終更新: 2013/07/15 20:28 (外部編集)