Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.06.2015, 21:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: дисплей на ht1621 и Mega8
Сообщение от WindoЗavr
|
у меня есть
|
но нет головы и даташита, чтоб аппаратный SPI запустить, в алгоритм билдер есть его настройка. да и сдвигатель организовать несложно, у атмела есть аппноты на подобные темы
|
|
|
|
10.09.2015, 12:13
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: дисплей на ht1621 и Mega8
разобрался с инициализацией ht1621 на ардуино
а где взять на него таблицу символов?
даташит
PHP код:
|
#include "HT1621.h"
HT1621 ht(2,3,4);
void setup() {
register uint8_t i;
ht.begin();
ht.sendCommand(HT1621::RC256K);
ht.sendCommand(HT1621::BIAS_THIRD_4_COM);
ht.sendCommand(HT1621::SYS_EN);
ht.sendCommand(HT1621::LCD_ON);
for(i=0; i‹16; i++)
ht.write(i,0);
for(i=0; i‹16; i++)
ht.write(i, 0xfa);
}
void loop() {}
|
дисплей 8*1 а над сегментами есть линии
|
|
|
|
10.09.2015, 16:42
|
|
Частый гость
Регистрация: 19.05.2014
Сообщений: 48
Сказал спасибо: 5
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: дисплей на ht1621 и Mega8
|
|
|
|
10.09.2015, 18:43
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: дисплей на ht1621 и Mega8
перепробовал все коды, ардуино плюётся ошибками
вводил двоичные числа - результат тот же что и у меня, что угодно только не цифры
система довольно бредовая, биты 8битного числа не привязаны к сегментам
изменение одного из битов меняет сразу 2 сегмента
при
ht.write(1, 0xff);
delay(1000);
ht.write(2, 0xff,0000);
delay(1000);
ht.write(3, 0xff);
delay(1000);
ht.write(4, 0xff);
delay(1000);
ht.write(5, 0xff);
пишется Е, через секунду она дописывается до 8 и пишется следйщее Е,через секунду она дописывается до 8 и пишется следйщее Е
итд
|
|
|
|
10.09.2015, 18:45
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: дисплей на ht1621 и Mega8
PHP код:
|
/**
* \file HT1621.cpp
* \brief Implementation of a class for dealing with the Holtek HT1621 chip.
* \author Enrico Formenti
* \date 31 january 2015
* \version 1.0
* \copyright BSD license, check the License page on the blog for more information. All this text must be
* included in any redistribution.
* ‹br›‹br›
* See macduino.blogspot.com for more details.
*
*/
#include "HT1621.h"
void HT1621::begin()
{
pinMode(_DATA_pin, OUTPUT);
pinMode(_RW_pin, OUTPUT);
pinMode(_CS_pin, OUTPUT);
digitalWrite(_CS_pin, HIGH);
digitalWrite(_RW_pin, HIGH);
digitalWrite(_DATA_pin, HIGH);
#ifndef __HT1621_READ
register uint8_t i;
for(i=0; i‹16; i++)
ram[i] = 0;
#endif
}
// OCIO !!!
// nell'esempio dopo ogni write viene dato un delay
// di 20 microsecondi...
void HT1621::writeBits(uint8_t data, uint8_t cnt)
{
register uint8_t i;
for(i=0;i‹cnt;i++,data ‹‹=1)
{
digitalWrite(_RW_pin, LOW);
delayMicroseconds(20);
digitalWrite(_DATA_pin, data&0x80 ? HIGH : LOW);
delayMicroseconds(20);
digitalWrite(_RW_pin, HIGH);
delayMicroseconds(20);
}
}
#ifdef __HT1621_READ
uint8_t HT1621::readBits(uint8_t cnt)
{
uint8_t data, i, state;
pinMode(_DATA_pin, INPUT);
for(i=0, data=0; i‹cnt; data ‹‹= 1, i++) {
digitalWrite(_RW_pin, LOW);
delayMicroseconds(20);
data |= (digitalRead(_DATA_pin) == HIGH);
digitalWrite(_RW_pin, HIGH);
delayMicroseconds(20);
}
pinMode(_DATA_pin, OUTPUT);
return data;
}
#endif
void HT1621::sendCommand(uint8_t cmd, bool first, bool last)
{
if (first) {
TAKE_CS();
writeBits(COMMAND_MODE, 4);
}
writeBits(cmd, 8);
if (last)
RELEASE_CS();
}
void HT1621::write(uint8_t address, uint8_t data)
{
TAKE_CS();
writeBits(WRITE_MODE, 3);
writeBits(address‹‹3, 6); // 6 is because max address is 128
writeBits(data, 8);
#ifndef __HT1621_READ
ram[address] = data;
#endif
RELEASE_CS();
}
void HT1621::write(uint8_t address, uint8_t data, uint8_t cnt)
{
register uint8_t i;
TAKE_CS();
writeBits(WRITE_MODE, 3);
writeBits(address‹‹3, 6);
for (i = 0; i ‹ cnt; i++) {
writeBits(data, 8);
#ifndef __HT1621_READ
ram[i] = data;
#endif
}
RELEASE_CS();
}
void HT1621::write(uint8_t address, uint8_t *data, uint8_t cnt)
{
register uint8_t i;
TAKE_CS();
writeBits(WRITE_MODE, 3);
writeBits(address‹‹3, 6);
for (i = 0; i ‹ cnt; i++) {
writeBits(data[i], 8);
#ifndef __HT1621_READ
ram[i] = data[i];
#endif
}
RELEASE_CS();
}
#ifdef __HT1621_READ
uint8_t HT1621::read(uint8_t address)
{
uint8_t data;
TAKE_CS();
writeBits(READ_MODE, 3);
writeBits(address‹‹3, 6);
data = readBits(8);
RELEASE_CS();
return data;
}
void HT1621::read(uint8_t address, uint8_t *data, uint8_t cnt)
{
register uint8_t i;
TAKE_CS();
writeBits(READ_MODE, 3);
writeBits(address‹‹3, 6);
for (i = 0; i ‹ cnt; i++)
data[i] = readBits(8);
RELEASE_CS();
}
#else
uint8_t HT1621::read(uint8_t address)
{
return ram[address];
}
void HT1621::read(uint8_t address, uint8_t *data, uint8_t cnt)
{
register uint8_t i;
for (i = 0; i ‹ cnt; i++)
data[i] = ram[address+i];
}
#endif
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:31.
|
|