![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| CNN91 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.12.2011 Репутация: нет Всего: нет |
Помогите пожалуйста с написанием программы для обработки сигнала, поступающего на мк8051 с двух датчиков (датчик задымленности и датчик температуры).
|
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
CNN91, ты хочешь, что бы за тебя написали бесплатно или за вознаграждение?
|
|||
|
||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
А что у тебя не получается? Выложи свой код.
-------------------- Мне нужны помощники. |
|||
|
||||
| CNN91 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.12.2011 Репутация: нет Всего: нет |
DQ BIT P3.7 ; 1 wire line
swpH equ 0d2H swpL equ 0ffH WDLSB DATA 30H ; WDMSB DATA 31H ; ;*************************************************************** ORG 0000H LJMP MAIN ORG 000BH LJMP TMR0 ; Timer0 isr ;******************************************************** ; Timer0 Interrupt Service Routine TMR0: MOV TH0,#swpH MOV TL0,#swpL JB 21H,DSL MOV P0,42H ORL P0,#00100000B SJMP EXIT DSL: MOV P0,43H ORL P0,#00010000B EXIT: CPL 21H RETI ; Main program MAIN: TOINIT: CLR EA MOV TMOD,#01H MOV TH0,#swpH MOV TL0,#swpL SETB EA SETB ET0 SETB TR0 ;*********************************************************** ; MOV R2,#2 MOV R0,#42H ; OVER: MOV @R0,#00H; INC R0 DJNZ R2,OVER LOOP: LCALL DSWD ; SJMP LOOP ;********************************************************** ; Read a temperature from the DS18B20 DSWD: LCALL RSTSNR ; Init of the DS18B20 JNB F0,KEND MOV R0,#0CCH LCALL SEND_BYTE MOV R0,#44H LCALL SEND_BYTE ; Send a Convert Command SETB EA MOV 48H,#1 SS2: MOV 49H,#255 SS1: MOV 4AH,#255 SS0: DJNZ 4AH,SS0 DJNZ 49H,SS1 DJNZ 48H,SS2 CLR EA LCALL RSTSNR JNB F0,KEND MOV R0,#0CCH LCALL SEND_BYTE MOV R0,#0BEH LCALL SEND_BYTE ; Send Read Scratchpad command LCALL READ_BYTE ; Read the low byte from scratchpad MOV WDLSB,A ; Save the temperature (low byte) LCALL READ_BYTE ; Read the high byte from scratchpad MOV WDMSB,A ; Save the temperature (high byte) LCALL TRANS12 KEND: SETB EA RET ;********************************************************** ; TRANS12: MOV A,30H ANL A,#0F0H MOV 3AH,A MOV A,31H ANL A,#0FH ORL A,3AH SWAP A MOV B,#10 DIV AB ;MOV 42H,A MOV 43H,B ; MOV b,#10 DIV ab MOV 42H,B MOV 41H,A RET ;************************************************* ; Send a byte to the 1 wire line SEND_BYTE: ; MOV A,R0 MOV R5,#8 SEN3: CLR C RRC A JC SEN1 LCALL WRITE_0 SJMP SEN2 SEN1: LCALL WRITE_1 SEN2: DJNZ R5,SEN3 ; RET ;************************************************* ; Read a byte from the 1 wire line READ_BYTE: MOV R5,#8 READ1: LCALL READ RRC A DJNZ R5,READ1 ; MOV R0,A RET ;************************************************* ; Reset 1 wire line RSTSNR: SETB DQ NOP NOP CLR DQ MOV R6,#250 ; DJNZ R6,$ MOV R6,#50 DJNZ R6,$ SETB DQ ; MOV R6,#15 DJNZ R6,$ CALL CHCK ; MOV R6,#60 DJNZ R6,$ SETB DQ RET ;************************************************* ; low level subroutines CHCK: MOV C,DQ JC RST0 SETB F0 ; SJMP CHCK0 RST0: CLR F0 ; CHCK0: RET ;************************************************* WRITE_0: CLR DQ MOV R6,#30 DJNZ R6,$ SETB DQ RET ;************************************************* WRITE_1: CLR DQ NOP NOP NOP NOP NOP SETB DQ MOV R6,#30 DJNZ R6,$ RET ;************************************************* READ: SETB DQ ; NOP NOP CLR DQ NOP NOP SETB DQ ; NOP NOP NOP NOP NOP NOP NOP MOV C,DQ MOV R6,#23 DJNZ R6,$ RET ;********************************************** DELAY10: MOV R4,#20 D2: MOV R5,#30 DJNZ R5,$ DJNZ R4,D2 RET end Здесь как я понимаю только с датчика температуры принимаюстя значения и выводятся на дисплей. В этом коде я немного разбираюсь, позже добавлю сравнение температуры. А вот что сделать с датчиком дыма??? Насколько я понимаю он будет посылать на контроллер какой-то единичный импульс а вот как его обработать я не понимаю. |
|||
|
||||
| daemonaz |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 4.5.2008 Репутация: нет Всего: нет |
Датчик дыма по умолчанию в нормально разомкнутом состоянии, срабатывает на дым и удерживеатся в замкнутом состоянии до момента сброса питания, если используете 1 Wire -шину, то к датчику дыма подключается схема с DS2408, и удаленно им управляешь а также считываешь оттуда состояния входов DS240x.
|
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |