Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
17.05.2010, 16:31
|
|
Частый гость
Регистрация: 24.03.2009
Сообщений: 21
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Цифровой вольтметр (на АВР)
не заработало ... =( а у вас работает в протеусе ?
|
|
|
|
17.05.2010, 18:11
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Цифровой вольтметр (на АВР)
Работает.
Попробуйте файлы из архива : proba.rar
|
|
|
Сказали "Спасибо" CodeNameHawk
|
|
|
17.05.2010, 21:43
|
|
Частый гость
Регистрация: 24.03.2009
Сообщений: 21
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Цифровой вольтметр (на АВР)
Сообщение от CodeNameHawk
|
Работает.
Попробуйте файлы из архива : Вложение 7897
|
Спасибо, заработало. Пойду тогда смотреть, что у меня не так!
|
|
|
|
06.06.2010, 13:42
|
|
Частый гость
Регистрация: 24.03.2009
Сообщений: 21
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Цифровой вольтметр (на АВР)
Не подскажите еще как преобразовать число с регистра ADCW в число, а потом это число в символ ...
ну или как его значение вывести на дисплей, делал так не получается, подскажите, что не так:
Код:
|
#include ‹90s8535.h›
#include ‹delay.h›
#define ADC_VREF_TYPE 0x00
#define RS PC0
#define EN PC2
#define TIME 100
void pause(unsigned int a)
{
unsigned int cn;
for( cn = a; cn › 0; cn-- );
}
void lcd_com(unsigned char p)
{
PORTC &= ~(1‹‹0);
PORTD = p;
PORTC |= 1‹‹2;
pause(TIME);
PORTC &= ~(1‹‹2);
pause(5*TIME);
}
void lcd_dat(unsigned char p)
{
PORTC |= 1‹‹0;
PORTD = p;
PORTC |= 1‹‹2;
pause(TIME);
PORTC &= ~(1‹‹2);
pause(5*TIME);
}
void lcd_init()
{
lcd_com(0x30);
lcd_com(0x30);
pause(100*TIME);
lcd_com(0x30);
pause(20*TIME);
lcd_com(0x38);
lcd_com(0x01);
pause(100*TIME);
lcd_com(0x06);
lcd_com(0x0D);
}
interrupt [ADC_INT] void adc_isr(void){
PORTB=(unsigned char) ~ADCW;
PORTB = 0x00;
delay_ms(20);
ADCSR|=0x40;
}
////////////////////////////////////////
void main(void) {
DDRD = 0xFF;
PORTC = 0xF8; DDRC = 0x07;
PORTB=0xFF;
DDRB=0xFF;
lcd_init();
lcd_dat((unsigned char)ADCW);
//lcd_dat('H'); lcd_dat('e'); lcd_dat('l'); lcd_dat('l'); lcd_dat('o');
ADCSR=0x8E;
#asm("sei")
ADMUX=0;
ADCSR|=0x40;
while (1){};
} |
|
|
|
|
06.06.2010, 13:59
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Цифровой вольтметр (на АВР)
Сообщение от CodeNameHawk
|
Работает.
Попробуйте файлы из архива : Вложение 7897
|
Попробуйте работать с этим дисплеем в режиме 4 бит. Сэкономите еще 4 линии. Из целого порта еще 2 свободных останутся. И с PCB проще будет.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
06.06.2010, 14:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: Цифровой вольтметр (на АВР)
Держи еще с подробнейшими коментариями, писал для себя когда начал С осваивать., симуляцией в Протеусе 7.6 сп4
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
11.06.2010, 23:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Цифровой вольтметр (на АВР)
Могу предложить устройство на ATtiny15+74ac595(2шт)+ 4 транзистора+4 позиционный семисегментный светодиодный динамический индикатор индикатор. 4 режима работы. Отображение в:
десятичный формат 10 бит;
десятичный формат 8 бит;
шеснадцатиричный формат 10 бит;
напряжение 10 бит.
...правда на ассемблере...
схему смогу нарисовать после выходных - уезжаю.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:33.
|
|