Как устроен и программируется контроллер SH69P26K для микроволновой печи. Какие возможности открывает его модификация. Как превратить старую микроволновку в программируемое устройство.
Архитектура и особенности контроллера SH69P26K
Контроллер SH69P26K представляет собой 8-битный микроконтроллер, разработанный специально для управления бытовой техникой, в частности, микроволновыми печами. Его архитектура основана на популярном семействе Intel 8048.
Основные характеристики SH69P26K:
- 8-битный процессор
- 64 байта ОЗУ
- 2 КБ ПЗУ для хранения программы
- Два 8-битных порта ввода/вывода
- Встроенный таймер
- Поддержка прерываний
Что делает этот контроллер особенным для микроволновых печей? Его производительности и объема памяти достаточно для реализации всех базовых функций, при этом он остается недорогим решением. Наличие ПЗУ позволяет хранить прошивку непосредственно на чипе.
Программирование контроллера SH69P26K
Программирование SH69P26K осуществляется на языке ассемблера. Для этого можно использовать кросс-платформенный ассемблер ASM48. Процесс разработки включает следующие этапы:

- Написание кода на ассемблере
- Компиляция кода в машинный код
- Запись полученного кода в ПЗУ контроллера
Пример простой программы для мигания светодиодом:
main:
mov r6, #0
loop:
mov a, r6
xrl a, #080h
outl p1, a
mov r6, a
call delay
jmp loop
delay:
mov r1, #0FFh
delay_loop:
djnz r1, delay_loop
ret
Эта программа переключает состояние порта P1.7 каждые несколько миллисекунд, заставляя подключенный светодиод мигать.
Модификация стандартной прошивки микроволновой печи
Модификация стандартной прошивки открывает широкие возможности для кастомизации работы микроволновой печи. Какие функции можно добавить или изменить?
- Создание пользовательских программ приготовления
- Изменение логики работы кнопок управления
- Добавление новых режимов работы
- Оптимизация энергопотребления
Однако важно помнить о безопасности — непродуманные изменения могут привести к нарушению работы защитных механизмов печи.
Превращение микроволновки в программируемое устройство
Контроллер SH69P26K можно использовать не только по прямому назначению. С его помощью старую микроволновую печь можно превратить в универсальное программируемое устройство. Какие проекты можно реализовать?

- Таймер с пользовательским интерфейсом
- Термостат для самодельного инкубатора
- Контроллер освещения
- Простой музыкальный синтезатор
Ключевое преимущество использования микроволновки в качестве основы — наличие готового корпуса, дисплея и кнопок управления.
Особенности работы с ПЗУ контроллера SH69P26K
Программирование ПЗУ контроллера SH69P26K имеет ряд особенностей:
- ПЗУ может быть запрограммировано только ограниченное количество раз
- Для программирования требуется специальный программатор
- Перед записью новой прошивки необходимо полностью стереть старую
Как обойти эти ограничения? Одно из решений — установка панельки для микросхемы ПЗУ. Это позволит легко заменять прошивку, не опасаясь повредить контроллер.
Отладка программ для SH69P26K
Отладка программ для встраиваемых систем всегда сопряжена с определенными трудностями. В случае с SH69P26K ситуацию осложняет отсутствие встроенных средств отладки. Какие методы можно использовать?
- Эмуляция на ПК с помощью специальных программ
- Использование светодиодов для индикации состояния программы
- Вывод отладочной информации на дисплей микроволновки
- Подключение внешнего отладчика через свободные порты ввода/вывода
Каждый из этих методов имеет свои преимущества и недостатки. Выбор зависит от конкретной задачи и доступных ресурсов.

Оптимизация кода для SH69P26K
Ограниченные ресурсы контроллера SH69P26K требуют тщательной оптимизации кода. На что стоит обратить внимание?
- Использование регистров вместо переменных в памяти
- Минимизация использования подпрограмм
- Оптимизация циклов
- Использование битовых операций вместо байтовых там, где это возможно
Пример оптимизации кода для мигания светодиодом:
main:
mov r6, #080h
loop:
mov a, r6
cpl a
mov r6, a
outl p1, a
djnz r7, loop
jmp main
Этот код работает быстрее и занимает меньше памяти, чем предыдущий вариант.
Интеграция дополнительных компонентов
Несмотря на ограниченные возможности, контроллер SH69P26K позволяет интегрировать дополнительные компоненты для расширения функционала устройства. Какие компоненты можно добавить?
- Модули беспроводной связи (например, ИК-приемник для пульта ДУ)
- Дополнительные кнопки или энкодеры
- Звуковые излучатели для расширенной системы оповещения
При интеграции новых компонентов важно учитывать ограничения по количеству доступных портов ввода/вывода и вычислительной мощности контроллера.

Программируем микроволновку или контроллер 40-летней давности / Хабр
Привет, недавно мне совершенно случайно попалась в руки такая железка:
Ну железка и железка, подумал я… На плате присутствует микроконтроллер РВЕ035, расширитель IO m5l8243p, ИР12 между РФ5 и контроллером и там еще где-то ЛН1 в стороне болтается. Мне сразу понравилась хорошая раритетная ПЗУ на 2Кб РФ5 в панельке в золоте. Думаю, сниму ее, а остальное смело в утиль, бо вся плата залита лаком по самое небалуйся..А потом все-таки стало интересно, а что это такое вообще?
Выяснилось, что это плата управления от советской микроволновки типа Электроника 23 (aka БУВИ-2 aka Фея aka Днепрянка). В интернете быстро нашлась даже схема девайса: http://www.elremont.ru/small_rbt/bt_rem32.php Теперь, когда стало понятно, что это такое, одна рука уверенно потянулась к мусорке, а другая нечаянно вбила в гугле «РВЕ035» и… И я заинтересовался и внимательно вгляделся в плату. Раз есть контроллер, значит для него можно писать программы.

Как уже было сказано, на плате установлен контроллер РВЕ035. В России он больше известен по названию КР1816ВЕ35, а вообще, это великий и ужасный Intel 8035 серии MSC-48. Первые экземпляры начали производить в 1976, то есть примерно 40 лет назад. В контроллере нет своей памяти для программ, поэтому он общается по внешней шине с ПЗУ, откуда и читает инструкции на выполнение. Зато есть 64 байта ОЗУ, из которых примерно 32 байта можно использовать как угодно, а остальные предназначены для регистров и стека. Есть таймер, есть прерывание от таймера, есть внешнее прерывание, есть система приоритетов. Короче нормальный олдскульный контроллер, не чета жирным PIC’ам. То, что так долго ждали большевики.
Но сперва предстояло решить одну трудность, а именно подключить плату. Как видно из схемы, для питания цифровой части требуется просто +5V, а вот для питания индикатора нужно 2,5V и 30V переменного напряжения.
Кстати про индикатор — это же лампа! Да, теплая ламповая радиолампа, а не какие-то там попсовые светодиоды. И как у лампы у нее есть катод анод и сетка. Такой тип индикаторов называется люминесцентно-вакумный индикатор. Немного подумав над схемой, я увидел, что 30В переменки идут на диодный мостик, значит они выпрямляются. И даже 2.5В тоже идут на диоды и после них на сетку, значит они тоже выпрямляются. Значит, можно попробовать подключить плату к постоянному напряжению. Вместо 30V я подал 12V, вместо 2.5V я подал 3.3V со стандартного блока питания формата ATX. Для этого подпаялся проводками к плате. Получилось так:
Но включив плату, я сначала было разочаровался. Некоторые сегменты на дисплее не светились. Сначала я думал, что 12 вольт не достаточно, но потом внимательно осмотрев плату обнаружил непропай в двух местах рядом с индикатором. Прозвонил, пропаял. Плата завелась, на экране появились цифры для установки времени и выбора режима программы. Вот так, хотел выкинуть, а в итоге починил. Настало время жарить.
Я воспользовался свободным кросс-платформенным ассемблером Asm48. Прикольно, что есть версия для MacOS, видимо авторы не обделены чувством юмора, по крайней мере я оценил. Ну значит скачиваем ассемблер, там все просто: ASM48 <имяфайла.asm> Первое, что я сделал, это «поморгал светодиодом», только вместо светодиода я дергал ногу динамика (пьезоэлемента) в бесконечном цикле с задержкой. Динамик подключен к порту 1, старший бит:
jmp main nop nop nop nop nop nop main: mov r6,#0 ; в регистре r6 - 0 или 80h forever: mov a,r6 ; пересылаем из регистра в ALU xrl a,#080h ; a = a xor 80h outl p1,a ; выводим в порт 1 mov r6,a ; сохраняем значение в r6 call onesec ; секундная задержка jmp forever ; бесконечный цикл ;---PROCEDURES ;;;;;;;; delay100: mov r1,#84 loopex: mov r2,#236 loopin: djnz r2,loopin djnz r1,loopex mov r3,#4 loopad: djnz r3,loopad ret ;;;;;;;; onesec: mov r4,#10 loop_d: call delay100 djnz r4,loop_d ret
Скомпилировав программу и зашив ее на программаторе в ПЗУ 2716, запускаю плату и слышу периодические щелчки с интервалом около секунды. Работает! Теперь предстояло разобраться с экраном. По схеме видно, что «маска» символа ABCDEFG подключена к порту 1. Причем сигнал инвертированный, то есть когда 1 — палочка не горит, когда 0 — горит. Для того, чтобы задать маску буквы «H» посмотрим картинку:
Начинаем обходить букву с G до A, так как здесь обратный порядок следования бит: G закрашена, значит 1; F закрашена, значит 1; E закрашена, значит 1; D не закрашена, значит 0 и тд. В итоге получается: 1110110b. Мы помним, что сигналы инвертированные, поэтому нужно проинвертировать саму маску: not 1110110b = 0001001b. Или 9h. Послав это число в порт 1 мы установим маску для буквы. Сложнее с выбором символа. Здесь применена динамическая индикация. Вкратце суть сводится к тому, что мы постоянно должны задать маску, зажечь первый символ, задать маску, зажечь второй символ и тд. За разрешение свечения символа отвечает второй порт, который с помощью микросхемы m5l8243p расширен до 4-ех четырех битных портов. Для обращения к таким портам служит команда

Сперва я пытался сделать динамическую индикацию в основном цикле программы, но потом использовал для этого таймер. А в основном цикле программы меняется буфер индикатора, отображающий с периодичностью в 1 секунду надписи «HELO» и «2014»
Исходный текст программы
;DATA .equ disp_buf, 030h ; 4 bytes buffer ;;; reset vector .org 0 dis i ; disable interrupts jmp main ;;; external interrupt vector--trap .org 3 jmp $ ; nop ;;; timer interrupt vector .org 7 sel rb1 mov a,#0d5h mov t,a mov a,#00FH orld p5,a mov a,disp_buf-1 add a,r5 mov r0,a mov a,@r0 outl p1,a mov a,r4 movd p5,a rl a mov r4,a djnz r5,exit_tmr mov r4,#0feh mov r5,4 exit_tmr: sel rb0 mov a,#0d8h mov t,a ; strt t retr ;MAIN main: ;initialize dis tcnti ; turn off counter mov r1,#0 mov r5,#0 call copy_buf sel rb1 ; timer variables mov r4,#0feh ; 1110h - CT position mov r5,4 ; R5 = buf offset sel rb0 mov a,#0e5h mov t,a strt t en tcnti mov a,#0ffh movd p6,a main_loop: call onesec mov a,r5 xrl a,#4 mov r5,a mov r1,a call copy_buf jmp main_loop msg_table: .db #0c0h ;O .db #0c7h ;L .db #086h ;E .db #089h ;H .db #099h ;4 .db #0f9h ;1 .db #0c0h ;0 .db #0a4h ;2 ;;;;;;;; delay100: mov r6,#84 loopex: mov r2,#236 loopin: djnz r2,loopin djnz r6,loopex mov r6,#4 loopad: djnz r6,loopad ret ;;;;;;;; onesec: mov r3,#10 loop_d: call delay100 djnz r3,loop_d ret ;;;;;;;; ;copy from msg_table to display buffer 4 bytes ; R1 = msg_table offset ;;;;;;;; copy_buf: mov r0,disp_buf mov r2,4 copy_lp: mov a,r1 add a,#msg_table movp a,@a mov @r0,a inc r0 inc r1 djnz r2,copy_lp ret
Коротенькая видео-демонстрация работы девайса:
Пытливый хабраюзер наверняка заметил баг в конце ролика, когда вместо HELO высветилось не совсем то, что надо. Я его тоже заметил, да. А все потому, что когда в основной программе происходит пересылка в буффер дисплея я забыл остановить таймер. Перед call copy_buf нужно сделать DIS TCNTI а после EN TCNTI. Так то!
Теперь только остается сыграть на девайсе «в лесу родилась елочка» и миссию буду считать удачно завершенной. Всем добра!
Литературка:
1) MCS-48 AND UPI-41 ASSEMBLER LANGUAGE MANUAL 1976
2) 2 том Справочника Шахнова (Микропроцессоры и микропроцессорные комплекты интегральных микросхем)
3) Сташин В.В. и др. — Проектирование цифровых устройств на однокристальных микроконтроллерах
4) Знакосинтезирующие индикаторы: Справочник/ Под ред. В. П. Балашова
5) Быстров Ю.А. Сто схем с индикаторами
Электронная панель управления микроволновой печи
Электронная панель управления микроволновой печи, по своей сути, является мини компьютером, чаще четырех разрядным и состоит из таких же узлов, что и обычный компьютер. В этой статье мы не будем рассматривать какой-то конкретный пример такой панели, а просто узнаем, какие узлы и детали может содержать этот тип. На рисунке 1, изображена структурная схема электронной панели управления, а на рисунке 2 можно посмотреть, как все это выглядит на самом деле.
Сердцем любого компьютера является микропроцессор. Именно этот компонент принимает команды, обрабатывает их, производит необходимые вычисления и затем выводит данные в удобном для человека виде. Есть такое сердце и у электронной панели, только называется оно – микроконтроллер. В отличии от микропроцессора, микроконтроллер менее функционален и предназначен для решения более узкого круга задач. Если процессор обычного компьютера может работать по любой программе, которую мы ему загрузим с внешнего носителя, то с микроконтроллером дела обстоят несколько иначе. Контроллер программируется только один раз, заводом изготовителем и работает, только по этой программе решая какую-то конкретную задачу. Благодаря универсальности микроконтроллеров, их применение в бытовой технике, позволило существенно снизить ее стоимость. Один и тот же тип контроллера может применяться в различных устройствах управления, меняется только программа. Такой подход избавил производителя от необходимости каждый раз разрабатывать индивидуальный чип для каждого нового вида техники.
Рисунок 1
Микроконтроллер представляет собой цифровую интегральную микросхему. На рисунке 1 изображена очень упрощенная структурная схема такого контроллера. Как и все процессоры, контроллер содержит в себе ЦПУ – центральное процессорное устройство. Это устройство предназначено для обработки данных поступающих от других устройств. ПЗУ – постоянное запоминающее устройство. Именно в эту область памяти контроллера «зашивается» та программа, по которой он в дальнейшем будет работать. В народе такую программу называют «прошивкой». ОЗУ – оперативное запоминающее устройство, или оперативная память. В этой области памяти хранятся временные данные команд, поступающих от устройства ввода и обработанные данные готовые поступить на устройства вывода. Порты ввода и вывода – устройства – посредники между устройствами микроконтроллера и внешними устройствами. Выводы портов могут работать в обоих направлениях, то есть, как принимать данные, так и отправлять их, все зависит от того, как ими распорядится программа, которую содержит ПЗУ.
Рисунок 2
Для перевода команд пользователя на «язык» понятный микроконтроллеру, существуют такие устройства, как устройства ввода. К таким устройствам, в первую очередь стоит отнести клавиатуру. Клавиатуру имеет любая электронная панель управления – это обязательный элемент. Нажимая на кнопки, мы подаем команды на порты ввода, затем эти команды обрабатываются ЦПУ. После обработки поступивших данных, ЦПУ выдает соответствующую информацию на порты вывода, таким образом, выполняя поступившую команду.
Еще одним устройством ввода является, МРУ – многофункциональная ручка управления. Это такая «крутилка», которая не имеет ограничений во вращении, ни в одну сторону, ни в другую. С помощью такой ручки можно настраивать различные параметры: устанавливать время работы печи, значения веса размораживаемых продуктов и так далее. Все зависит от того, в каком режиме ввода в данный момент находится панель управления. На самом деле, ручка МРУ, механически связана с формирователем импульсов. Пока мы вращаем ручку, формирователь вырабатывает импульсы, которые затем поступают на контроллер. Контроллер считает эти импульсы и согласно их количеству устанавливает нужные нам значения тех, или иных параметров работы печи. МРУ, не является обязательным элементом, и многие панели прекрасно обходятся без нее.
К устройствам ввода, так же можно отнести и внешние датчики. Эти устройства тоже подают команды или сигналы микроконтроллеру, согласно которым, он «принимает» то, или иное решение. Самым необходимым и обязательным внешним датчиком следует считать датчик открытия двери. Таким датчиком оснащена каждая микроволновая печь. Этот датчик представляет собой микропереключатель установленный в системе блокировки печи. Когда дверь закрыта, его контакты замкнуты, при открытии двери, контакты размыкаются. Именно по состоянию контактов этого переключателя контроллер «понимает», закрыта дверь печи, или нет. Стоит нам открыть дверь во время работы печи, и контроллер тут же обесточит все ее агрегаты — печь не начнет работать снова, пока мы не закроем дверь и повторно не нажмем на кнопку Старт.
Следующим внешним датчиком может быть датчик контроля температуры в рабочей камере. Наличие такого датчика определяется набором функций, которыми обладает конкретная микроволновая печь. В частности, датчик температуры необходим в печах с функцией конвекции. На панели управления задается нужное значение температуры, и контроллер, ориентируясь по сигналам датчика, в нужный момент включает или выключает тэн блока конвекции, таким образом, поддерживая заданный уровень температуры в камере печи. Подобные датчики могут иметь и печи с функцией проветривания камеры. В этом случае, после окончания работы печи, контроллер, опять же ориентируясь по сигналу датчика, не выключает вентилятор до тех пор, пока температура в камере не понизится до, предусмотренного программой значения.
Далее, переходим к устройствам вывода. Устройства вывода можно разделить на две группы. Это – диалоговые устройства и исполнительные. Диалоговые устройства обеспечивают своеобразный диалог, между печью и ее пользователем. С помощью этих устройств, микроконтроллер выводит информацию на понятном человеку языке. Наиболее значимым диалоговым устройством вывода визуальной информации является цифровой индикатор. Без него печью пользоваться практически не возможно. Ведь именно с помощью индикатора контроллер сообщает нам, в каком режиме и состоянии в данный момент находится наша печь. Применяемые в электронных панелях управления индикаторы могут быть трех типов: это – газоразрядные, жидкокристаллические и светодиодные. В последнее время, наибольшее распространение получили светодиодные индикаторы, как самые дешевые, надежные и долговечные. Выводы индикатора подключаются к портам вывода микроконтроллера, одной из функций которого, является обеспечение работы индикатора в динамическом режиме.
Вторым диалоговым устройством вывода можно считать звуковое устройство. С помощью этого устройства контроллер подает нам звуковые сигналы в определенные моменты работы печи, информирующие нас, например, о том, что время приготовления вышло, и печь закончила работу. В качестве источника звука, чаще применяется пьезокерамический капсюль. Выводы капсюля так же подключены к одному из портов вывода микроконтроллера. В нужный момент контроллер выдает на этот порт пачки импульсов звуковой частоты, которые потом и воспроизводит капсюль.
Одновременно с ведением диалога между пользователем и печью, микроконтроллер должен выполнять и свои «прямые» обязанности, то есть выполнять те команды, которые ему дали – включать, или выключать те, или иные агрегаты печи. Для этого предназначены исполнительные устройства вывода. Такие устройства представляют собой транзисторные ключи и электромагнитные реле. Выводы портов вывода контроллера слишком слаботочны и не могут управлять реле напрямую. Поэтому, сигнал с контроллера вначале подается на вход транзисторного ключа способного коммутировать ток и напряжение, достаточные для срабатывания реле. Для примера, давайте рассмотрим, как происходит включение печи в режим Микроволны. Вначале, нажимаем соответствующую кнопку на клавиатуре панели управления, задаем нужную мощность и время приготовления. При этом все, что мы делаем, отображается на индикаторе. В завершении, жмем на кнопку Старт. Микроконтроллер сканирует все порты ввода, в том числе и порты внешних датчиков. Если все нормально, дверь закрыта и остальные параметры в норме, на соответствующем выводе порта вывода контроллера, появляется уровень напряжения, необходимый для открытия транзисторного ключа. Ключ открывается и подает питание на обмотку электромагнитного реле. Реле срабатывает, и через его замкнутые контакты, напряжение сети поступает на первичную обмотку высоковольтного трансформатора. Трансформатор, в свою очередь формирует на вторичных обмотках необходимые напряжения для работы магнетрона и все – печь начала работу в режиме Микроволны. После истечения времени установленного на таймере, контроллер меняет уровень напряжения на выводе порта, ключ закрывается и обесточивает реле. Контакты реле размыкаются — рвут цепь питания высоковольтного трансформатора. Печь прекратила свою работу. Аналогично происходит включение и выключение других агрегатов печи – гриля или блока конвекции.
Количество имеющихся исполнительных устройств, а равно и количество реле на плате электронной панели, зависит от функционала печи. Количество реле, на плате панели всегда будет на одно больше, чем количество агрегатов, которое содержит печь. Например, если печь поддерживает только режим Микроволны, то на панели управления будут установлены два реле, если микроволны и гриль, то три и так далее. Каждому агрегату соответствует свое реле, через которое он запитывается. Если печь обладает только одной функцией – Микроволны, то зачем два реле, а не одно? Что за лишнее реле? На самом деле оно не лишнее, а Главное, на схеме имеет обозначение «Main relay», то есть основное. Через контакты главного реле запитываются те агрегаты, которые функционируют в любом режиме работы печи, а именно: электродвигатель вентилятора, электродвигатель поворотного стола и лампа подсветки. Вот, например, печь находится в дежурном режиме – просто стоит и не работает. Открываем дверцу, и тут же загорается лампа подсветки камеры, это – результат срабатывания Главного реле.
Ну и последний, но не по важности, узел электронной панели управления, это – источник питания. На долю этого устройства, приходится, пожалуй, 90% всех неисправностей панели. Электронная панель управления имеет свой – отдельный источник питания конструктивно расположенный на одной печатной плате, вместе с остальными ее элементами. Чаще всего, это – простой трансформаторный блок питания, который преобразует переменное сетевое напряжение в два постоянных – 5В. для питания микроконтроллера и индикатора, и 12В. для питания исполнительных устройств – реле и транзисторных ключей. Исключение составляют те панели управления, в которых используется газоразрядный цифровой индикатор. В таких панелях трансформатор должен иметь третью вторичную обмотку, формирующую анодное напряжение для питания этого индикатора – 27 вольт. Последнее время, для снижения массы печи, производители стали применять импульсные источники питания. Импульсный источник питания имеет массу плюсов по сравнению с трансформаторным но, он более сложен по конструкции, а значит и более дорог в ремонте.