Вторник, 19.03.2024
Design Electronics
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

После того как наиграся с управлением мышкой, захотелось освоить программирование  контроллеров MSP430.

Начинают обычно с вывода на дисплей "Hello world". Так как на примерах учиться быстрей, был найден подобный исходник прошивки на какомто итальянском сайте. Адрес я к сожалению потерял, а искать опять впадлу. Эта прошивка выводит на дисплей часов слова "Hi Earth". (на классический Hello world программеру символов не хватило, так как в chronos сегментный индикатор). 

Сегменты зажигаются такими строчками например:

lcdmem = (unsigned char *)0x0A29;
*lcdmem = (unsigned char)(*lcdmem | (BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7)); 

где 0x0A29 - число которое определяет какие именно 8 сегментов мы можем зажечь второй строчкой.

BIT0 - BIT7   номера зажигаемых сегментов.

Ниже - исходный код программы которая зажигает на дисплее часов "I LOWE YOU" в среде Code Composer


//******************************************************************************
// eZ430 chronos
// вывод на дисплей I "lowe" YOU
// Author: Ivan
//******************************************************************************

#include "cc430x613x.h"
#include <string.h>

void main(void)
{
unsigned char * lcdmem;

// Clear entire display memory
LCDBMEMCTL |= LCDCLRBM + LCDCLRM;

// LCD_FREQ = ACLK/16/8 = 256Hz
// Frame frequency = 256Hz/4 = 64Hz, LCD mux 4, LCD on
LCDBCTL0 = (LCDDIV0 + LCDDIV1 + LCDDIV2 + LCDDIV3) | (LCDPRE0 + LCDPRE1) | LCD4MUX | LCDON;

// LCB_BLK_FREQ = ACLK/8/4096 = 1Hz
LCDBBLKCTL = LCDBLKPRE0 | LCDBLKPRE1 | LCDBLKDIV0 | LCDBLKDIV1 | LCDBLKDIV2 | LCDBLKMOD0;

// I/O to COM outputs
P5SEL |= (BIT5 | BIT6 | BIT7);
P5DIR |= (BIT5 | BIT6 | BIT7);

// Activate LCD output
LCDBPCTL0 = 0xFFFF; // Select LCD segments S0-S15
LCDBPCTL1 = 0x00FF; // Select LCD segments S16-S22

// LCD_B Base Address is 0A00H page 30 y in SALS554 document

lcdmem = (unsigned char *)0x0A21;
*lcdmem = (unsigned char)(*lcdmem | (BIT0+BIT2+BIT3)); // I "LOWE"

lcdmem = (unsigned char *)0x0A2B;
*lcdmem = (unsigned char)(*lcdmem | (BIT4+BIT5+BIT1+BIT2+BIT3)); //Y

lcdmem = (unsigned char *)0x0A2A;
*lcdmem = (unsigned char)(*lcdmem | (BIT0+BIT1+BIT2+BIT3+BIT4+BIT6)); //O

lcdmem = (unsigned char *)0x0A29;
*lcdmem = (unsigned char)(*lcdmem | (BIT1+BIT2+BIT3+BIT4+BIT6)); //U


__no_operation(); // For debugger
}


На рисунках показаны зажигаемые сегменты соответствующие числу левом верхнем углу картинки:


Я являюсь ламмером в Code Composer и MSP430, и поэтому выкладываю здесь свои ламмерские проекты 

так что профи случайно зашедшие на этот сайт прошу, не сильно срать в каментах 


Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz