Особенности разработки микропроцессорной системы и устройства для чтения электронных книг
Теоретические основы разработки микропроцессорной системы на основе микроконтроллера и устройства для чтения электронных книг, анализ их технико-экономических показателей и сравнение с аналогами. Основные нормы по охране труда при работе с компьютером.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 13.07.2010 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
4.1.3 Параметры микроклимата
Параметры микроклимата могут меняться в широких пределах, в то время как необходимым условием жизнедеятельности человека является поддержание постоянства температуры тела благодаря терморегуляции, т.е. способности организма регулировать отдачу тепла в окружающую среду. Принцип нормирования микроклимата - создание оптимальных условий для теплообмена тела человека с окружающей средой.
Вычислительная техника является источником существенных тепловыделений, что может привести к повышению температуры и снижению относительной влажности в помещении. В помещениях, где установлены компьютеры, должны соблюдаться определенные параметры микроклимата. В санитарных нормах СН-245-71 установлены величины параметров микроклимата, создающие комфортные условия. Эти нормы устанавливаются в зависимости от времени года, характера трудового процесса и характера производственного помещения (см. табл. 4.1)
Объем помещений, в которых размещены работники вычислительных центров, не должен быть меньше 19,5м3/человека с учетом максимального числа одновременно работающих в смену. Нормы подачи свежего воздуха в помещения, где расположены компьютеры, приведены в табл. 4.2.
Для обеспечения комфортных условий используются как организационные методы (рациональная организация проведения работ в зависимости от времени года и суток, чередование труда и отдыха), так и технические средства (вентиляция, кондиционирование воздуха, отопительная система).
Таблица 4.1- Параметры микроклимата для помещений, где установлены компьютеры
Период года |
Параметр микроклимата |
Величина |
|
Холодный |
Температура воздуха в помещении |
22…24°С |
|
Относительная влажность |
40…60% |
||
Скорость движения воздуха |
до 0,1м/с |
||
Теплый |
Температура воздуха в помещении |
23…25°С |
|
Относительная влажность |
40…60% |
||
Скорость движения воздуха |
0,1…0,2м/с |
Таблица 4.2 - Нормы подачи свежего воздуха в помещения, где расположены компьютеры
Характеристика помещения |
Объемный расход подаваемого в помещение свежего воздуха, м3 /на одного человека в час |
|
Объем до 20м3 на человека |
Не менее 30 |
|
20…40м3 на человека |
Не менее 20 |
|
Более 40м3 на человека |
Естественная вентиляция |
4.1.4 Шум и вибрация
Шум ухудшает условия труда оказывая вредное действие на организм человека. Работающие в условиях длительного шумового воздействия испытывают раздражительность, головные боли, головокружение, снижение памяти, повышенную утомляемость, понижение аппетита, боли в ушах и т. д. Такие нарушения в работе ряда органов и систем организма человека могут вызвать негативные изменения в эмоциональном состоянии человека вплоть до стрессовых.
Под воздействием шума снижается концентрация внимания, нарушаются физиологические функции, появляется усталость в связи с повышенными энергетическими затратами и нервно-психическим напряжением, ухудшается речевая коммутация. Все это снижает работоспособность человека и его производительность, качество и безопасность труда. Длительное воздействие интенсивного шума [выше 80 дБ(А)] на слух человека приводит к его частичной или полной потере.
В табл. 4.3 указаны предельные уровни звука в зависимости от категории тяжести и напряженности труда, являющиеся безопасными в отношении сохранения здоровья и работоспособности.
Таблица 4.3 - Предельные уровни звука, дБ, на рабочих местах
Категория напряженности труда |
Категория тяжести труда |
||||
Легкая |
Средняя |
Тяжелая |
Очень тяжелая |
||
I. Мало напряженный |
80 |
80 |
75 |
75 |
|
II. Умеренно напряженный |
70 |
70 |
65 |
65 |
|
III. Напряженный |
60 |
60 |
- |
- |
|
IV. Очень напряженный |
50 |
50 |
- |
- |
Уровень шума на рабочем месте математиков-программистов и операторов видеоматериалов не должен превышать 50дБА, а в залах обработки информации на вычислительных машинах - 65дБА.
Для снижения уровня шума стены и потолок помещений, где установлены компьютеры, могут быть облицованы звукопоглощающими материалами. Уровень вибрации в помещениях вычислительных центров может быть снижен путем установки оборудования на специальные виброизоляторы.
4.1.5 Электромагнитное и ионизирующее излучения
Большинство ученых считают, что как кратковременное, так и длительное воздействие всех видов излучения от экрана монитора не опасно для здоровья персонала, обслуживающего компьютеры. Допустимые значения параметров неионизирующих электромагнитных излучений от монитора компьютера представлены в табл. 4.4.
Максимальный уровень рентгеновского излучения на рабочем месте оператора компьютера обычно не превышает 10мкбэр/ч, а интенсивность ультрафиолетового и инфракрасного излучений от экрана монитора лежит в пределах 10-100мВт/м2.
Таблица 4.4 - Допустимые значения параметров неионизирующих электромагнитных излучений (в соответствии с СанПиН 2.2.2.542-96)
Наименование параметра |
Допустимые значения |
|
Напряженность электрической составляющей электромагнитного поля на расстоянии 50см от поверхности видеомонитора |
10В/м |
|
Напряженность магнитной составляющей электромагнитного поля на расстоянии 50см от поверхности видеомонитора |
0,3А/м |
|
Напряженность электростатического поля не должна превышать: для взрослых пользователей для детей дошкольных учреждений и учащихся средних специальных и высших учебных заведений |
20кВ/м 15кВ/м |
Для снижения воздействия этих видов излучения рекомендуется применять мониторы с пониженным уровнем излучения (MPR-II, TCO-92, TCO-99), устанавливать защитные экраны, а также соблюдать регламентированные режимы труда и отдыха.
4.2 Эргонометрические характеристики рабочего места
Большое значение в создании оптимальных условий труда имеет планировка рабочего места, которая должна удовлетворять требованиям удобства выполнения работ, экономии энергии и времени оператора.
Сидячая продолжительная работа вредна человеку в принципе: работник сутулится или подается вперед и его позвоночник деформируется, травмируя диски; он поднимает плечи и сгибает руки, держа их в напряжении - и естественно они начинают болеть. Пережимая сосуды, он перегружает сердце; ну а о хронических растяжениях сухожилий кистей рук и постоянно ухудшающемся зрении можно не говорить. Поза, а следовательно и здоровье, зависят, в конечном итоге, от размеров и дизайна рабочего места.
Рабочее пространство.
Научная организация рабочего пространства (Рис.4.1) базируется на данных о средней зоне охвата рук человека - 35-40 см. Ближней зоне соответствует область, охватываемая рукой с прижатым к туловищу локтем, дальней зоне - область вытянутой руки. Тонкой линией изображено фактическое положение монитора на рабочем столе сотрудника - на углу стола с левой стороны. Это приводит к значительному неудобству при работе. При работе с компьютером приходится постоянно поворачивать голову влево, что ведет к усталости шейных мышц.
Значимым фактором является пространство под столешницей. Высота столов, использующихся на предприятии соответствует общепринятым стандартам, и составляет 74 см. Конструкция столов обеспечивает требования СанПин 2.2.2.542-96 по ширине и высоте необходимого пространства для ног.
Взаимное расположение предметов на рабочем месте :
1 - угол обзора по вертикали, 35
2 - угол наклона клавиатуры, 10
h1 - высота рабочей поверхности, 79 см
h2 - высота сиденья стула, регулируется под конкретного человека
h3 - расстояние от края стола до клавиатуры, 10 см
h4 - расстояние от органов зрения оператора до экрана, 65 см
Взгляд человека направлен перпендикулярно центру экрана монитора.
При компоновке рабочего места не следует забывать о том, что наиболее важные из орудий труда следует располагать спереди и справа от человека.
Клавиатура, как наиболее часто используемое устройство ввода. Параметры этой зоны: угол - 70, глубина - 30-40 см.
Остальные устройства - угол - 130 градусов, глубина 70-80 см.
С учетом выше приведенных данных об углах обзора, а так же зная максимальный размер зоны досягаемости правой руки (70-100 см), можно считать, что расположение рабочих предметов в моторном поле правильное.
4.3 Электропожаробезопасность
Для обеспечения электробезопасности в помещении должны проверены следующие показатели:
- соответствие напряжения в сети тому на которое рассчитан ПК;
- наличие защитного заземления;
- меры защиты от перепадов в сети.
Приборы, находящиеся в помещении работают от номинального напряжения 220 В. В нашем случае применим заземление с изолированной нейтралью. Заземление выведено на заземляющий контур с сопротивлением 4 Ома. Заземление дисплеев осуществляется через системный блок ЭВМ.
Соединение ПК с сетью выполнено с помощью трехжильного медного силового кабеля с вилкой, имеющей клеммы заземления. Все провода в рабочем помещении имеют характеристики, соответствующие токам и напряжениям в сети.
При эксплуатации ЭВМ возможны возникновения следующих аварийных ситуаций:
- короткие замыкания;
- перегрузки;
- повышение переходных сопротивлений в электрических контактах;
- перенапряжение;
- возникновение токов утечки.
Обязательно наличие порошкового огнетушителя в помещении серверной станции.
4.4 Режим труда
Как уже было неоднократно отмечено, при работе с персональным компьютером очень важную роль играет соблюдение правильного режима труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках.
В табл. 4.5 представлены сведения о регламентированных перерывах, которые необходимо делать при работе на компьютере, в зависимости от продолжительности рабочей смены, видов и категорий трудовой деятельности с ВДТ (видеодисплейный терминал) и ПЭВМ (в соответствии с САнНиП 2.2.2 542-96 «Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работ»).
Таблица 4.5 - Время регламентированных перерывов при работе на компьютере
Категория работы с ВДТ или ПЭВМ |
Уровень нагрузки за рабочую смену при видах работы с ВДТ, количество знаков |
Суммарное время регламентированных перерывов, мин |
||
При 8-часовой смене |
При 12-часовой смене |
|||
Группа А |
до 20000 |
30 |
70 |
|
Группа Б |
до 40000 |
50 |
90 |
|
Группа В |
до 60000 |
70 |
120 |
Примечание. Время перерывов дано при соблюдении указанных Санитарных правил и норм. При несоответствии фактических условий труда требованиям Санитарных правил и норм время регламентированных перерывов следует увеличить на 30%.
В соответствии со САнНиП 2.2.2 546-96 все виды трудовой деятельности, связанные с использованием компьютера, разделяются на три группы: группа А: работа по считыванию информации с экрана ВДТ или ПЭВМ с предварительным запросом; группа Б: работа по вводу информации; группа В: творческая работа в режиме диалога с ЭВМ.
Эффективность перерывов повышается при сочетании с производственной гимнастикой или организации специального помещения для отдыха персонала с удобной мягкой мебелью, аквариумом, зеленой зоной и т.п.
4.5 Расчет освещенности
Расчет освещенности рабочего места сводится к выбору системы освещения, определению необходимого числа светильников, их типа и размещения. Исходя из этого, рассчитаем параметры искусственного освещения.
Обычно искусственное освещение выполняется посредством электрических источников света двух видов: ламп накаливания и люминесцентных ламп. Будем использовать люминесцентные лампы, которые по сравнению с лампами накаливания имеют ряд существенных преимуществ:
- по спектральному составу света они близки к дневному, естественному свету;
- обладают более высоким КПД (в 1,5-2 раза выше, чем КПД ламп накаливания);
- обладают повышенной светоотдачей (в 3-4 раза выше, чем у ламп накаливания);
- более длительный срок службы.
Расчет освещения производится для комнаты площадью 15м2 , ширина которой - 5м, высота - 3 м. Воспользуемся методом светового потока.
Для определения количества светильников определим световой поток, падающий на поверхность по формуле:
F = E•S•Z•К / n , (4.1)
ГдеF - рассчитываемый световой поток, Лм;
Е - нормированная минимальная освещенность, Лк (определяется по таблице). Работу программиста, в соответствии с этой таблицей, можно отнести к разряду точных работ, следовательно, минимальная освещенность будет Е = 300Лк;
S - площадь освещаемого помещения (в нашем случае S = 15м2);
Z - отношение средней освещенности к минимальной (обычно принимается равным 1,1-1,15 , пусть Z = 1,1);
К - коэффициент запаса, учитывающий уменьшение светового потока лампы в результате загрязнения светильников в процессе эксплуатации (его значение зависит от типа помещения и характера проводимых в нем работ и в нашем случае К = 1,5);
n - коэффициент использования, (выражается отношением светового потока, падающего на расчетную поверхность, к суммарному потоку всех ламп и исчисляется в долях единицы; зависит от характеристик светильника, размеров помещения, окраски стен и потолка, характеризуемых коэффициентами отражения от стен (РС) и потолка (РП)), значение коэффициентов РС и РП были указаны выше: РС=40%, РП=60%. Значение n определим по таблице коэффициентов использования различных светильников.
Для этого вычислим индекс помещения по формуле:
I = A•B / h (A+B), (4.2)
где h - расчетная высота подвеса, h = 2,92 м;
A - ширина помещения, А = 3 м;
В - длина помещения, В = 5 м.
Подставив значения получим:
I= 0,642.
Зная индекс помещения I, по таблице 7 [23] находим n = 0,22.
Подставим все значения в формулу (4.1) для определения светового потока F, получаем F = 33750 Лм.
Для освещения выбираем люминесцентные лампы типа ЛБ40-1, световой поток которых Fл = 4320 Лк.
Рассчитаем необходимое количество ламп по формуле:
N = F / Fл, (4.3)
где N - определяемое число ламп;
F - световой поток, F = 33750 Лм;
Fл- световой поток лампы, Fл = 4320 Лм.
N = 8 ламп.
При выборе осветительных приборов используем светильники типа ОД. Каждый светильник комплектуется двумя лампами.
Значит требуется для помещения площадью S = 15 м2 четыре светильника типа ОД.
Расчет естественного освещения помещений
Организация правильного освещения рабочих мест, зон обработки и производственных помещений имеет большое санитарно-гигиеническое значение, способствует повышению продуктивности работы, снижения травматизма, улучшения качества продукции. И наоборот, недостаточное освещение усложняет исполнения технологического процесса и может быть причиной несчастного случая и заболевания органов зрения.
Освещение должно удовлетворять такие основные требования:
- быть равномерным и довольно сильным;
- не создавать различных теней на местах работы, контрастов между освещенным рабочем местом и окружающей обстановкой;
- не создавать ненужной яркости и блеска в поле взора работников;
- давать правильное направление светового потока;
Все производственные помещения необходимо иметь светлопрорезы, которые дают достаточное природное освещение. Без природного освещения могут быть конференц-залы заседаний, выставочные залы, раздевалки, санитарно-бытовые помещения, помещения ожидания медицинских учреждений, помещений личной гигиены, коридоры и проходы.
Коэфициент естественного освещения в соответствии с ДНБ В 25.28.2006, для нашого III пояса светового климата составляет 1,5.
Исходя из этого произведем расчет необходимой площади оконных проемов.
Расчет площади окон при боковом освещении определяется, по формуле:
Sо = (Ln*Кз.*N0*Sn*Кзд.)/(100 *T0*r1) (4.4)
где:Ln - нормированное значение КЕО
Кз - коэффициент запаса (равен 1,2)
N0 - световая характеристика окон
Sn - площадь достаточного естественного освещения
Кзд. - коэффициент, учитывающий затенение окон противостоящими зданиями
r1 - коэффициент, учитывающий повышение КЕО при боковом освещении
T0 - общий коэффициент светопропускания, который рассчитывается по формуле:
T0 = T1 * T2 * T3 * T4 * T5, (4.5)
где T1 - коэффициент светопропускания материала;
T2 - коэффициент, учитывающий потери света в переплетах светопроема;
T3 - коэффициент, учитывающий потери света в несущих конструкциях;
T4 - коэффициент, учитывающий потери света в солнцезащитный устройствах;
T5 - коэффициент, учитывающий потери света в защитной сетке, устанавливаемой под фонарями, принимается равным 1;
Теперь следует рассчитать боковое освещение для зоны, примыкающей к наружной стене. По разряду зрительной работы нужно определить значение КЕО. КЕО = 1,5 нормированное значение КЕО с учетом светового климата необходимо вычислить по формуле:
Ln=l*m*c, (4.6)
где l - значение КЕО (l=1.5);
m - коэффициент светового климата (m=1);
c - коэффициент солнечности климата (c=1)
Ln=1,5
Теперь следует определить отношение длины помещения Ln к глубине помещения B:
Ln/B=3/5 =0,6;
Отношение глубины помещения В к высоте от уровня условной рабочей поверхности до верха окна h1 (в данном случае h1=1,8) :
B/h1=5/1,8 = 2,77.
Световая характеристика световых проемов N0=9.
Кзд=1
Значение T0=0,8*0,7*1*1*1=0,56.
Ln для 4 разряда зрительных работ равен 1,5 при мытье окон два раза в год.
Определяем r1, r1=1,5.
Кз.=1,2.
Теперь следует определить значение Sп:
Sп=Ln*В=3*10=30 м2.
Кзд.=1.
На данном этапе следует рассчитать необходимую площадь оконных проемов: (Ln* Кз.*N0*Sn*Кзд.) / (100*T0*r1)
Sо = (1,5*1,2*9*30*1)/(100*0,56*1,5)=486/84= 5,78 м2;
Принимаем количество окон 1 штука:
S1=5,78 м2 площадь одного окна
Высота одного окна составляет - 2,5 м, ширина 2,3 м.
4.6 Расчет вентиляции
В зависимости от способа перемещения воздуха вентиляция бывает естественная и принудительная.
Параметры воздуха, поступающего в приемные отверстия и проемы местных отсосов технологических и других устройств, которые расположены в рабочей зоне, следует принимать в соответствии с ГОСТ 12.1.005-76. При размерах помещения 3 на 5 метров и высоте 3 метра, его объем 45 куб.м. Следовательно, вентиляция должна обеспечивать расход воздуха в 90 куб.м/час. В летнее время следует предусмотреть установку кондиционера с целью избежания превышения температуры в помещении для устойчивой работы оборудования. Необходимо уделить должное внимание количеству пыли в воздухе, так как это непосредственно влияет на надежность и ресурс эксплуатации ЭВМ.
Мощность (точнее мощность охлаждения) кондиционера является главной его характеристикой, от неё зависит на какой объем помещения он рассчитан. Для ориентировочных расчетов берется 1 кВт на 10 м2 при высоте потолков 2,8 - 3 м (в соответствии со СНиП 2.04.05-86 "Отопление, вентиляция и кондиционирование").
Для расчета теплопритоков данного помещения использована упрощенная методика:
Q=S·h·q (4.8)
где:Q - Теплопритоки
S - Площадь помещения
h - Высота помещения
q - Коэффициент равный 30-40 вт/м3 (в данном случае 35 вт/м3)
Для помещения 15 м2 и высотой 3 м теплопритоки будут составлять:
Q=15·3·35=1575 вт
Кроме этого следует учитывать тепловыделение от оргтехники и людей, считается (в соответствии со СНиП 2.04.05-86 "Отопление, вентиляция и кондиционирование") что в спокойном состоянии человек выделяет 0,1 кВт тепла, компьютер или копировальный аппарат 0,3 кВт, прибавив эти значения к общим теплопритокам можно получить необходимую мощность охлаждения.
Qдоп=(H·Sопер)+(С·Sкомп)+(P·Sпринт) (4.9)
где:Qдоп - Сумма дополнительных теплопритоков
C - Тепловыделение компьютера
H - Тепловыделение оператора
D - Тепловыделение принтера
Sкомп - Количество рабочих станций
Sпринт - Количество принтеров
Sопер - Количество операторов
Дополнительные теплопритоки помещения составят:
Qдоп1=(0,1·2)+(0,3·2)+(0,3·1)=1,1(кВт)
Итого сумма теплопритоков равна:
Qобщ1=1575+1100=2675 (Вт)
В соответствии с данными расчетами необходимо выбрать целесообразную мощность и количество кондиционеров.
Для помещения, для которого ведется расчет, следует использовать кондиционеры с номинальной мощностью 3,0 кВт.
4.7 Расчет уровня шума
Одним из неблагоприятных факторов производственной среды в ИВЦ является высокий уровень шума, создаваемый печатными устройствами, оборудованием для кондиционирования воздуха, вентиляторами систем охлаждения в самих ЭВМ.
Для решения вопросов о необходимости и целесообразности снижения шума необходимо знать уровни шума на рабочем месте оператора.
Уровень шума, возникающий от нескольких некогерентных источников, работающих одновременно, подсчитывается на основании принципа энергетического суммирования излучений отдельных источников:
?L = 10·lg (Li•n), (4.10)
где Li - уровень звукового давления i-го источника шума;
n - количество источников шума.
Полученные результаты расчета сравнивается с допустимым значением уровня шума для данного рабочего места. Если результаты расчета выше допустимого значения уровня шума, то необходимы специальные меры по снижению шума. К ним относятся: облицовка стен и потолка зала звукопоглощающими материалами, снижение шума в источнике, правильная планировка оборудования и рациональная организация рабочего места оператора.
Уровни звукового давления источников шума, действующих на оператора на его рабочем месте представлены в табл. 4.6.
Таблица 4.6 - Уровни звукового давления различных источников
Источник шума |
Уровень шума, дБ |
|
Жесткий диск |
40 |
|
Вентилятор |
45 |
|
Монитор |
17 |
|
Клавиатура |
10 |
|
Принтер |
45 |
|
Сканер |
42 |
Обычно рабочее место оператора оснащено следующим оборудованием: винчестер в системном блоке, вентилятор(ы) систем охлаждения ПК, монитор, клавиатура, принтер и сканер.
Подставив значения уровня звукового давления для каждого вида оборудования в формулу (4.4) , получим:
?L=10·lg(104+104,5+101,7+101+104,5+104,2)=49,5 дБ
Полученное значение не превышает допустимый уровень шума для рабочего места оператора, равный 65 дБ (ГОСТ 12.1.003-83). И если учесть, что вряд ли такие периферийные устройства как сканер и принтер будут использоваться одновременно, то эта цифра будет еще ниже. Кроме того при работе принтера непосредственное присутствие оператора необязательно, т.к. принтер снабжен механизмом автоподачи листов.
Выводы
В данном проекте было разработано устройство для чтения электронных книг.
В процессе работы были рассмотрены общие вопросы разработки устройств на микроконтроллерах, рассмотрены этапы разработки, разработка программного обеспечения, внедрения в производство. На основании изученной литературы и сети Интернет получили теоретические знания в области проектирования устройств на микроконтроллерах, приобрели теоретические о принципе работы устройств для чтения электронных книг.
В практической части были разработаны структурная, функциональная и принципиальная схемы устройства, составлен алгоритм работы микроконтроллера, выбран микроконтроллер удовлетворяющий требованиям ТЗ, произведен расчет элементной базы устройства, произведено подробное описание программы.
В технико-экономическом обосновании объекта разработки были произведены расчеты стоимости составления ПО микроконтроллера и КД для разрабатываемого устройства, произведен сравнительный анализ устройств-аналогов. Разработанное устройство может создать конкуренцию на рынке, может быть предложено для внедрения в производство.
В последнем разделе дипломной работы были изложены требования охраны труда. Созданные условия должны обеспечивать комфортную работу. На основании изученной литературы по данной проблеме, были указаны оптимальные размеры рабочего стола и кресла, рабочей поверхности, а также проведен выбор системы и расчет оптимального освещения производственного помещения, произведен расчет рационального кондиционирования помещения, а также расчет уровня шума на рабочем месте.
Перечень ссылок
1. "Dimmable Fluorescent Ballast" - User Guide, 10/07, Atmel Corporation, http://www.atmel.com/dyn/resources/prod_documents/doc7597.pdf
2. ГОСТ13109-97. Нормы качества электрической энергии в системах электроснабжения общего назначения.
3. G. Howell "Five questions about resistors" // EDN, 9/28/2006, http://www.edn.com/contents/images/6372835.pdf
4. П. Хоровиц, У. Хилл "Искусство схемотехники" - Изд. 6-е, М.: Мир, 2003.
5. C. Hillman "Common mistakes in electronic design" // EDN, 12/14/2007 http://www.edn.com/contents/images/6512156.pdf
6."Frequently asked questions about dimmers" // http://www .lutron.com/product_technical/faq.asp
7. Л. Н. Кечиев, Е. Д. Пожидаев "Защита электронных средств от воздействия статического электричества" - М.: ИД "Технологии", 2005.
8. Жидецкий В.Ц., Джигирей В.С., Мельников А.В. Основы охраны труда: Учебник - Львов, Афиша, 2008 - 351с.
9. Денисенко Г.Ф. Охрана труда: Учебн.пособие - М., Высшая школа, 1989 - 319с.
10. Самгин Э.Б. Освещение рабочих мест. - М.: МИРЭА, 1989. - 186с.
11. Справочная книга для проектирования электрического освещения. / Под ред. Г.Б. Кнорринга. - Л.: Энергия, 1976.
12. Борьба с шумом на производстве: Справочник / Е.Я. Юдин, Л.А. Борисов;
Под общ. ред. Е.Я. Юдина - М.: Машиностроение, 1985. - 400с., ил.
13. Зинченко В.П. Основы эргономики. - М.: МГУ, 1979. - 179с.
14.Методичні вказівки до виконання дипломної роботи для учнів спеціальності «Оператор комп'ютерного набору; оператор комп'ютерної верстки»/ Упоряд.: Д.О. Дяченко, К.О. Ізмалкова, О.Г. Меркулова. - Сєверодонецьк: СВПУ, 2007. - 40 с.
15. Н. Заец. Многофункциональные часы. -- Схемотехника, 2006, № 2,с. 41,42.
16. Н. Заец. Термометр - часы с датчиками фирмы Dallas Semiconductor. -- Схемотехника, 2005, № 5, с. 52 - 55.
17. Н. Заец. Радиолюбительские конструкции на Р1С-микроконтроллерах. Книга 3. -- М.: СОЛОН-Пресс, 2005, с. 248.
18. Н. Заец. Отечественные жидкокристаллические индикаторы TIC9162 с драйверами по технологии COG. - Схемотехника, 2005, №9, с. 9-11.
19. Н. Заец. Таймеры десятичного счета. -- Электрик, 2006, № 7-8, с. 36 -39.
20. Мощные полевые переключательные транзисторы фирмы International Rectifier. -- Радио, 2001, № 5, с. 45.
21. А. Долгий. Разработка и отладка устройств на микроконтроллерах. -- Радио, 2001 ,№ 5-12, 2002, № 1.
22. А. Долгий. Программаторы и программирование микроконтроллеров. -- Радио, 2004, № 1-12.
23. Н. Заец. Универсальный таймер. -- Схемотехника, 2003, № 1, с. 53.
24. Н. Заец. Электронные самоделки для быта, отдыха и здоровья.-- М.: СОЛОН-Пресс, 2009, 423 с.
Приложение А
Файл reader.asm
;Описание и распиновка.
;Порт B это данные индикатора и памяти.
;D0 -RxD, D1 - TxD, D6 - RS, D5 - R/W, D4 - E, D2 - adr. latch,
;D3 - общий #OE,D7 - общий #WE
;Порт С - адресный порт
;Порт А: А0-А2 - старшие линии адреса, А3 - #СЕ1, А4 - #СЕ2
;А5 - красная кнопка, А6 - зелёная кнопка "вниз", А7 - зелёная кнопка "вверх"
;-----------------------------------------------------------------------
.include "d:\Program Files\Atmel\AVR Studio\Appnotes\8515def.inc"
.include "d:\seagull\Depot\AVR\reader\rus.inc"
;-----------------------------------------------------------------------
.def rsym=r0
.def storel=r1
.def storeh=r2
.def book=r3
.def storead0=r4
.def storead1=r5
.def all_book=r6
.def rus=r14
.def store=r15
.def work=r16
.def data=r17
.def char=r18
.def pauseh=r19
.def pausel=r20
.def count=r21
.def address0=r22
.def address1=r23
.def address2=r24
.def flag=r25
.def key=r26
.def loz=r30
.def hiz=r31
;-----------------------------------------------------------------------
;flag: бит0 = 1-переполнение адреса; бит1 =1-команда ко 2-й памяти; бит2 =1 -питание только подано
;бит3 = 1-нужен pop
;-----------------------------------------------------------------------
.set E=4
.set RW=5
.set RS=6
.set C = 2
.set WE=7
.set OE=3
.set CE1=3
.set CE2=4
.equ TSYM=80;Всего символов на экране
;-----------------------------------------------------------------------
.org 0x000
;.org 0x007
;rjmp RXcomplete
.org 0x010
main:
bclr 7;неразрешение прерываний
ldi work, 0x5f;загрузка адреса стека
out spl,work
ldi work, 0x02;загрузка старшего адреса стека
out sph,work
ldi work,0b11111110
out ddrd, work
ldi work,0b10001011
out portd, work
ser work
out ddrb, work;выходы индикатора
ldi work, 0b00011000;8-битный режим, приём/передача, RX-~прерывание
out ucr, work
ldi work, 4
out ubrr, work;115200 при кварце 9,216 МГц
ser work
out ddrc, work;выходы порта С
ldi work, 0b00011111
out ddra, work;выходы порта A
clr work
out portc,work
ldi work, 0b11111000
out porta,work
clr address0
clr address1
clr address2
ser count
ldi flag,0b00000100
clr book
;-----------------------------------------------------------------------
;модуль инициализации индикатора
;rjmp tst_loop
rcall precharge
ldi char, 0b00111000;8-разр. шина,2 строки,5х8
rcall write_cmd
ldi char, 0b00001100;вкл. изобр., курсор-подчерк. выкл, курсор-блок выкл
rcall write_cmd
ldi char, 0b00000110;сдвиг курсора вправо.
rcall write_cmd
ldi char, 0b00000001
rcall write_cmd
in char,udr
in char,udr
in char,udr
;-----------------------------------------------------------------------
;Тестовый участок
tst_loop:
;ldi char,0x55
;out eedr,work
;clr work
;out eearl,work
;rcall write_flash
;rcall module_write
;rcall inc_addr
;rcall wait_busy
;rjmp read_begin
;rjmp tst_loop
;rjmp command
;----------------------------------------------------------------------
ldi hiz,(high(hello*2))
ldi loz,(low(hello*2))
rcall message
rcall push_button
main_menu:
rcall menu;Ответ: 0-начать читать, 1- закладку, 2- связь с компом, 3- кто сделал
cpi count,0
breq read_begin
cpi count,1
breq pre_goto_bookmark
cpi count,2
breq pre_comp_mes
ldi hiz,(high(about_develop*2))
ldi loz,(low(about_develop*2))
rcall message
rcall push_button
rjmp main_menu
pre_goto_bookmark:
rjmp goto_bookmark
read_begin:
cbr flag,0x04
rcall choose_text
rcall get_address_text_begin
continue_read:
rcall blank_screen
rcall show_to_screen
menu_2:
rcall menu
rcall sub_string
cpi count,0
breq continue_read
cpi count,1
breq pre_goto_bookmark
cpi count,2
breq set_bookmark
listing_subreturn:
rcall listing
push_list_page:
push count
list_page:
rcall blank_screen
ser count
read_page:
rcall read_flash
mov rus,data
mov char,data
rcall write_char
rcall inc_addr
cpi count,TSYM-1
brne read_page
pop count
rcall push_button
cpi key,3
breq sub_page
cpi key,2
breq add_page
rjmp menu_2
add_page:
push count
lsl count
lsl count
add address1,count
brcc no_add_adr2
inc address2
cpi address2,0x10
brlo no_add_adr2
ser address0
ser address1
ldi address2,0x0f
no_add_adr2:
pop count
rjmp push_list_page
pre_comp_mes:
rjmp comp_mes
sub_page:
push count
lsl count
lsl count
sub address1,count
brsh no_sub_adr2
dec address2
brpl no_sub_adr2
clr address2
clr address1
clr address0
no_sub_adr2:
pop count
rjmp push_list_page
read_current:
rcall show_to_screen
rjmp read_current
set_bookmark:
push work
write_current:
clr work
out eearh,work
rcall wait_write_internal_eeprom
mov work,book
lsl work
lsl work
inc work
out eearl,work
out eedr,address2
rcall write_internal_eeprom
rcall wait_write_internal_eeprom
inc work
out eearl,work
out eedr,address1
rcall write_internal_eeprom
rcall wait_write_internal_eeprom
inc work
out eearl,work
out eedr,address0
rcall write_internal_eeprom
pop work
rjmp continue_read
goto_bookmark:
sbrc flag,2
rcall choose_text
push work
clr work
out eearh,work
mov work,book
lsl work
lsl work
inc work
out eearl,work
rcall read_internal_eeprom
push work
in work,eedr
cpi work,0xff
brne no_return_from_gtb
ldi hiz,(high(no_bookmark*2))
ldi loz,(low(no_bookmark*2))
rcall message
rcall push_button
pop work
pop work
sbrc flag,0x02
rjmp main_menu
rjmp continue_read
no_return_from_gtb:
mov address2,work
pop work
inc work
out eearl,work
rcall read_internal_eeprom
in address1,eedr
inc work
out eearl,work
rcall read_internal_eeprom
in address0,eedr
pop work
cbr flag,0x04
rjmp continue_read
;-----------------------------------------------------------------------
read_internal_eeprom:
sbic eecr,eewe;Жду, пока не закончится цикл записи
rjmp read_internal_eeprom
sbi eecr,eere
ret
wait_write_internal_eeprom:
sbic eecr,eewe
rjmp wait_write_internal_eeprom
ret
write_internal_eeprom:
sbi eecr,eemwe
sbi eecr,eewe
ret
;-----------------------------------------------------------------------
comp_mes:
ldi hiz,(high(i_love_my_computer*2))
ldi loz,(low(i_love_my_computer*2))
rcall message
loop:
sbis usr,rxc
rjmp loop
rcall blank_screen
rcall RXcomplete
cpi data,0xe5
breq loop_ex
cpi data,0x5e
breq command
rjmp loop
;-----------------------------------------------------------------------
loop_ex:
sbis usr,rxc
rjmp loop_ex
rcall RXcomplete
rcall write_char
rcall confirm
rjmp loop_ex;зацикливание
;-----------------------------------------------------------------------
write_char:
push work
inc count
cpi count,TSYM/2
breq next_row
cpi count,TSYM
breq new_screen
send:
sbrc char,7
rcall decode
rcall write_data
pop work
ret
next_row:
mov store,char
ldi char, 0b11000000
rcall write_cmd
mov char,store
rjmp send
new_screen:
clr count
mov store,char
ldi char, 0b00000001
rcall write_cmd
mov char,store
rjmp send
recognize:
;inc count
;cpi char,0xa
;brge nodig
;ldi work,0x30
;add char,work
;rcall write_char
;ret
nodig:
;ldi work,0x37
;add char,work
;rcall write_char
;ret
;-----------------------------------------------------------------------
command:
sbis usr,rxc
rjmp command
rcall RXcomplete
cpi data,0x10
breq _module_erase1
cpi data,0x20
breq _module_erase2
cpi data,0x30
breq _module_write
cpi data,0x40
breq _module_read
cpi data,0x50
breq _module_address_set
rjmp command
_module_erase1:
cbr flag,0x02
rcall module_erase
rjmp command
_module_erase2:
sbr flag,0x02
rcall module_erase
rjmp command
_module_write:
rcall module_write
rjmp command
_module_read:
rcall blank_screen
rcall module_read
rjmp command
_module_address_set:
rcall module_address_set
rjmp command
;-----------------------------------------------------------------------
;индикаторные модули чтения/записи
write_cmd:
push work
rcall wait_busy
cbi portd,RS
cbi portd,RW
out portb,char
rcall latch
pop work
ret
write_data:
push work
rcall wait_busy
sbi portd,RS
cbi portd,RW
out portb,char
rcall latch
pop work
ret
wait_busy:
push char
clr work
out ddrb, work;входы
ser work;Включил подтяжку к единице
out portb,work
cbi portd,RS
sbi portd,RW
busy:
nop
sbi portd,E
rcall nop_wait
in char,pinb
cbi portd,E
sbrc char,7
rjmp busy
ser work
out ddrb, work;выходы
cbi portd,RS
pop char
ret
latch:
rcall nop_wait
sbi portd,E
rcall nop_wait
cbi portd,E
ret
nop_wait:
ldi work, 0x1f
_wait:
dec work
brne _wait
ret
precharge:;Подпрограмма начальной предустановки
ser work
out ddrb, work;выходы
cbi portd,RS
cbi portd,RW
rcall pause
rcall pause
rcall pause
rcall pause
rcall pause
rcall ldi30
rcall pause
rcall pause
rcall ldi30
rcall pause
rcall pause
rcall ldi30
rcall pause
ldi30:
ldi work,0x30
out portb,work
rcall latch
ret
;-----------------------------------------------------------------------
pause:
clr pauseh
clr pausel
_pauseh:
rcall pause_1
dec pauseh
brne _pauseh
ret
pause_1:
dec pausel
brne pause_1
ret
;-----------------------------------------------------------------------
RXcomplete:
in char,udr
mov rus,char
mov data,char
ret
;-----------------------------------------------------------------------
decode:
cpi char,0xa8
breq yob
cpi char,0xb8
breq yol
cbr char,0xc0;два старших бита не нужны
ldi hiz,(high(rus_letters*2))
ldi loz,(low(rus_letters*2))
add loz,char
brcc read_code
inc hiz
read_code:
lpm
mov char,rsym
ret
yob:
ldi char,0xa2
ret
yol:
ldi char,0xb5
ret
.cseg
rus_letters:
;Большие буквы
.db 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,0xa5,0xa6,0x4b,0xa7,0x4d,0x48
.db 0x4f,0xa8,0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,0xac,0xe2,0xad,0xae
.db 0x62,0xaf,0xb0,0xb1
;Маленькие буквы
.db 0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd
.db 0x6f,0xbe,0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0,0xc1,0xe6,0xc2,0xc3
.db 0xc4,0xc5,0xc6,0xc7
;-----------------------------------------------------------------------
confirm:
;sbi usr,txc
wait_txc:
sbis usr,udre
rjmp wait_txc
out udr,rus
ret
;-----------------------------------------------------------------------
adr_latch:
sbis portd,WE;либо запись
out portb,data
out portc,address0
sbi portd,C
nop
cbi portd,C
out portc,address1
push work
in work,porta;считали с защёлок порта А
cbr work,0x07
or work,address2
sbrc address2,3
rjmp ce2_set
sbr work,0x10;CE2
cbr work,0x08;CE1
rjmp ce1_set
ce2_set:
sbr work,0x08
cbr work,0x10
ce1_set:
out porta,work
pop work
nop
sbic portd,WE
in data,pinb;либо чтение
sbi porta,CE1;операция завершена
sbi porta,CE2
ret
;-----------------------------------------------------------------------
inc_addr:
clz
inc address0
brne ret_inc
inc address1
brne ret_inc
inc address2
cpi address2,0x10
brlo ret_inc
sbr flag,0x01
ret_inc:
ret
;-----------------------------------------------------------------------
erase_flash:
cbi portd,WE
sbi portd,OE
push work
ldi work, 0x55
mov address0,work
mov address1,work
clr address2
sbrc flag,1
sbr address2,0x08;если стирается вторая флешь
ldi data,0xaa
rcall adr_latch
ldi work, 0xaa
mov address0,work
ldi work, 0x2a
mov address1,work
ldi data,0x55
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0x80
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0xaa
rcall adr_latch
ldi work, 0xaa
mov address0,work
ldi work, 0x2a
mov address1,work
ldi data,0x55
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0x10
rcall adr_latch
sbi portd,WE
pop work
mov store,work
ldi work,10
wait_10s:;память стирается 10 секунд. Максимум, правда.
rcall wait_1s
dec work
brne wait_10s
mov work,store
sbi portd,WE
ret
;-----------------------------------------------------------------------
read_flash:
sbi portd,WE
cbi portd,OE
push work
clr work
out ddrb,work
rcall adr_latch
ser work
out ddrb,work
pop work
sbi portd,OE
ret
;-----------------------------------------------------------------------
write_flash:
mov store,address0
mov storel,address1
mov storeh,address2
cbi portd,WE
sbi portd,OE
push work
ldi work, 0x55
mov address0,work
mov address1,work
cbr address2,0xf7;если пишется во вторую флешь
ldi data,0xaa
rcall adr_latch
ldi work, 0xaa
mov address0,work
ldi work, 0x2a
mov address1,work
ldi data,0x55
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0xa0
rcall adr_latch
mov address0,store
mov address1,storel
mov address2,storeh
mov data,char
rcall adr_latch
push char
rcall data_polling
pop char
pop work
sbi portd,WE
ret
;-----------------------------------------------------------------------
wait_1s:
push work
ldi work,0x47
pause_1s_l:
rcall pause
dec work
brne pause_1s_l
pop work
ret
;-----------------------------------------------------------------------
module_write:
clr work
clr book
clr address0
clr address1
clr address2
find_empty_slot:
rcall read_flash
cpi data,0x5e
brne empty_slot
rcall inc_addr
inc book
mov work,book
cpi work,0x08
brne find_empty_slot
ldi hiz,(high(no_slot*2))
ldi loz,(low(no_slot*2))
rcall message
rcall push_button
ret
empty_slot:
ldi char,0x5e
rcall write_flash
ldi hiz,(high(type_header*2))
ldi loz,(low(type_header*2))
rcall message
clr address2
clr address1
ldi address0,0x0b;смещение=8 + адрес=3
mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
ldi work,55
ret_enter_name:
sbis usr,rxc
rjmp ret_enter_name
rcall RXcomplete
rcall write_flash
rcall inc_addr
dec work
breq stop_write_header
cpi char,0x07
brne ret_enter_name
rjmp type_status_reciev
stop_write_header:
ldi char,0x07
rcall write_flash
type_status_reciev:
ldi hiz,(high(reciev_file*2))
ldi loz,(low(reciev_file*2))
rcall message
rcall get_address_text_begin
module_write_cont:
sbis usr,rxc
rjmp module_write_cont
rcall RXcomplete
cpi char,0x07
breq ret_module_write
mov data,char
rcall write_flash
rcall confirm
rcall inc_addr
sbrs flag,0;если память переполнена.
rjmp module_write_cont
ldi hiz,(high(memory_full*2))
ldi loz,(low(memory_full*2))
rcall message
rcall push_button
ret
ret_module_write:
mov char,address2
mov storead1,address1
mov storead0,address0
clr address2
clr address1
ldi address0,0x08
mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
rcall write_flash
rcall inc_addr
mov char,storead1
rcall write_flash
rcall inc_addr
mov char,storead0
rcall write_flash
ldi hiz,(high(file_recieved*2))
ldi loz,(low(file_recieved*2))
rcall message
ret
;-----------------------------------------------------------------------
module_read:
ПРИЛОЖЕНИЕ А (Продолжение)
;clr address0
;clr address1
;clr address2
show_to_screen:
rcall read_flash
mov rus,data
mov char,data
rcall write_char
rcall inc_addr
cpi count,TSYM-1
breq branch
rjmp show_to_screen
branch:
rcall push_button
cpi key,1
breq ret_module_read
cpi key,2
breq show_to_screen
minus_tsym:
subi address0,low(TSYM*2)
sbci address1,high(TSYM*2)
brsh show_to_screen
dec address2
brpl show_to_screen
clr address0
clr address1
clr address2
rjmp show_to_screen
ret_module_read:
ret
;-----------------------------------------------------------------------
module_erase:
clr work;Вначале стираются закладки в ЭППЗУ
clr count
out eearh,work
rcall wait_write_internal_eeprom
ldi work,0x01
erase_bookmark:
out eearl,work
ser data
out eedr,data
rcall write_internal_eeprom
rcall wait_write_internal_eeprom
subi work,0xfc
inc count
cpi count,8
brne erase_bookmark
ldi hiz,(high(memory_erased_process*2))
ldi loz,(low(memory_erased_process*2))
rcall message
rcall erase_flash
ldi hiz,(high(memory_erased*2))
ldi loz,(low(memory_erased*2))
rcall message
ret
;-----------------------------------------------------------------------
;Нажатие кнопки. Возвращаемый код: 1-красная кнопка, 2-зелёная вниз, 3-зелёная вверх
push_button_no_wait:
push work
clr key
sbis pina,5
rjmp red
sbis pina,6
rjmp green_down
sbis pina,7
rjmp green_up;ЭЄю рэрыюушўэыщ єўрёЄюъ ъюфр,
ret;Єюы№ъю схч юцшфрэш эрцрЄш ъэюяъш
push_button:
;ret
push work
clr key
wait_push_button:
clr work
sbis pina,5
rjmp red
sbis pina,6
rjmp green_down
sbis pina,7
rjmp green_up
rjmp wait_push_button;ЗрЎшъыхэю: эрцрЄ№ яЁшфёЄё
red:
dec work
nop
breq pull_red
sbis pina,5
rjmp red
rjmp wait_push_button
clr_pull_red:
clr work
pull_red:
dec work
nop
breq red_quit
sbic pina,5
rjmp pull_red
rjmp clr_pull_red
red_quit:
pop work
ldi key,1
ret
green_down:
dec work
nop
breq pull_green_down
sbis pina,6
rjmp green_down
rjmp wait_push_button
clr_pull_green_down:
clr work
pull_green_down:
dec work
nop
breq green_down_quit
sbic pina,6
rjmp pull_green_down
rjmp clr_pull_green_down
green_down_quit:
pop work
ldi key,2
ret
green_up:
dec work
nop
breq pull_green_up
sbis pina,7
rjmp green_up
rjmp wait_push_button
clr_pull_green_up:
clr work
pull_green_up:
dec work
nop
breq green_up_quit
sbic pina,7
rjmp pull_green_up
rjmp clr_pull_green_up
green_up_quit:
pop work
ldi key,3
ret
;-----------------------------------------------------------------------
blank_screen:
ser count
ldi char, 0b00000001
rcall write_cmd
ret
;-----------------------------------------------------------------------
message:
;ret
push work
sbr flag,0x08
rcall blank_screen
message_loop:
lpm
mov work,rsym
cpi work,0x0
breq go_away
cpi work,0x1
brne no_return
ldi char, 0b11000000
rcall write_cmd
rjmp message_adr_inc
no_return:
mov char,work
push loz
push hiz
rcall write_data
pop hiz
pop loz
message_adr_inc:
inc loz
brne message_loop
inc hiz
rjmp message_loop
go_away:
sbrc flag,3
pop work
cbr flag,0x08
ret
;Выводимые сообщения. AVR Studio некорректно понимает коды русских симолов, так что пришлось извратиться.
hello:
.db ' ',bS,_i,_s,_t,_e,_m,_a,' ',' ','"',bK,_n,_i,_g,_o,_ch,_e,_j,'"',0x01,' ',bV,_e,_r,_s,_i,_ya,' ','1','.','3','7',0x00
begin:
.db ' ',bN,_a,_ch,_a,_t,_q,' ',_ch,_i,_t,_a,_t,_q,' ',_k,_n,_i,_g,_u,0x01,0x00
ret_cursor:
.db 0x7e,0x00
zakladka:
.db ' ',bD,_o,_s,_t,_a,_t,_q,' ',_z,_a,_k,_l,_a,_d,_k,_u,0x01,0x00
about:
.db ' ',bR,_e,_a,_l,_i,_z,_o,_v,_a,_n,_o,'.','.','.',0x0
about_develop:
.db ' ','R','&','D',' ','7','-',_ya,' ',bZ,_a,_s,_t,_a,_v,_a,'.',' ',bS,_o,_z,_d,_a,_l,' ','S','e','a','G','u','l','l','.',0x01,' ',bE,_s,_l,_i,' ',_ch,_t,_o,',',' ',_p,_i,_sh,_i,_t,_e,' ',_n,_a,' ','"','s','e','a','g','u','l','l','@','m','a','i','l','.','r','u','"',0x00
computer:
.db ' ',bS,_v,_ya,_z,_a,_t,_q,_s,_ya,' ',_s,' ',bEE,bV,bM,0x01,0x00
i_love_my_computer:
.db ' ',bZH,_d,_u,' ',_s,_v,_ya,_z,_i,' ',_n,_a,' ','1','1','5','2','0','0',0x01,' ',bP,_o,_d,_k,_l,_yu,_ch,_i,_t,_e,' ',_p,_o,_r,_t,'.',0x00
continue:
.db ' ',bP,_r,_o,_d,_o,_l,_zh,_i,_t,_q,' ',_ch,_i,_t,_a,_t,_q,0x01,0x00
pop_zakl:
.db ' ',bP,_o,_l,_o,_zh,_i,_t,_q,' ',_z,_a,_k,_l,_a,_d,_k,_u,0x01,0x00
high_inc:
.db ' ',bL,_i,_s,_t,_a,_t,_q,0x01,0x00
memory_erased:
.db ' ',bP,_a,_m,_ya,_t,_q,' ',_s,_t,_yo,_r,_t,_a,'!',0x00
list_kb:
.db ' ',bV,_v,_e,_d,_i,_t,_e,' ',_sh,_a,_g,' ',_p,_r,_o,_l,_i,_s,_t,_y,_v,_a,_n,_i,_ya,0x01,' ','(',_v,' ',_t,_y,_s,_ya,_ch,_a,_h,' ',_s,_i,_m,_v,_o,_l,_o,_v,')',':',0x00
address_set:
.db ' ',bA,_d,_r,_e,_s,' ',_v,_y,_s,_t,_a,_v,_l,_e,_n,0x00
memory_erased_process:
.db ' ',bS,_t,_i,_r,_a,_yu,'.','.','.',0x00
reciev_file:
.db ' ',bP,_r,_i,_yo,_m,' ',_i,_n,_f,_o,_r,_m,_a,_ts,_i,_i,0x00
file_recieved:
.db ' ',bI,_n,_f,_o,_r,_m,_a,_ts,_i,_ya,' ',_p,_r,_i,_n,_ya,_t,_a,'!',0x00
no_text:
.db ' ',bK,_n,_i,_g,_i,' ',_n,_e,' ',_b,_y,_l,_i,' ',_z,_a,_p,_i,_s,_a,_n,_y,'!',0x00
no_slot:
.db ' ',bN,_e,_t,' ',_m,_e,_s,_t,_a,' ',_v,' ',_t,_a,_b,_l,_i,_ts,_e,' ',_p,_o,_d,' ',_k,_n,_i,_g,_u,'!',0x01,' ',bK,_n,_i,_g,' ',_n,_e,' ',_b,_o,_l,_q,_sh,_e,' ','8','-',_m,_i,'!',0x00
type_header:
.db ' ',bV,_s,_t,_u,_ch,_i,_t,_e,' ',_z,_a,_g,_o,_l,_O,_v,_o,_k,'.',0x00
memory_full:
.db ' ',bP,_a,_m,_ya,_t,_q,' ',_z,_a,_p,_o,_l,_n,_e,_n,_a,' ',_p,_o,_l,_n,_o,_s,_t,_q,_yu,'!',0x00
no_bookmark:
.db ' ',bZ,_a,_k,_l,_a,_d,_k,_a,' ',_d,_l,_ya,' ',_ee,_t,_o,_j,' ',_k,_n,_i,_g,_i,' ',_o,_t,_s,_u,_t,_s,_t,_v,_u,_e,_t,'!',0x00
;-----------------------------------------------------------------------
menu:
;ret
clr count
choose_menu:
sbrs flag,2
rjmp current
ring_menu:
push count
rcall blank_screen
pop count
cpi count,2
breq start_pos_1
cpi count,3
breq start_pos_2
start_pos_0:
cpi count,0
brne end_pos_01
rcall show_cur
rjmp end_pos_02
end_pos_01:
rcall show_space
end_pos_02:
ldi hiz,(high(begin*2))
ldi loz,(low(begin*2))
rcall message_loop
start_pos_1:
cpi count,1
brne end_pos_11
rcall show_cur
rjmp end_pos_12
end_pos_11:
rcall show_space
end_pos_12:
ldi hiz,(high(zakladka*2))
ldi loz,(low(zakladka*2))
rcall message_loop
cpi count,2
brlo polling
start_pos_2:
cpi count,2
brne end_pos_21
rcall show_cur
rjmp end_pos_22
end_pos_21:
rcall show_space
end_pos_22:
ldi hiz,(high(computer*2))
ldi loz,(low(computer*2))
rcall message_loop
cpi count,2
breq polling
start_pos_3:
cpi count,3
brne end_pos_31
rcall show_cur
rjmp end_pos_32
end_pos_31:
rcall show_space
end_pos_32:
ldi hiz,(high(about*2))
ldi loz,(low(about*2))
rcall message_loop
polling:
rcall push_button
cpi key,2
breq add_count
cpi key,3
breq sub_count
ret
add_count:
cpi count,3
breq choose_menu
inc count
rjmp choose_menu
sub_count:
cpi count,0
breq choose_menu
dec count
rjmp choose_menu
;Меню, вылазиющее при чтении
current:
push count
rcall blank_screen
pop count
cpi count,2
breq start_cur_1
cpi count,3
breq start_cur_2
start_cur_0:
cpi count,0
brne end_cur_01
rcall show_cur
rjmp end_cur_02
end_cur_01:
rcall show_space
end_cur_02:
ldi hiz,(high(continue*2))
ldi loz,(low(continue*2))
rcall message_loop
start_cur_1:
cpi count,1
brne end_cur_11
rcall show_cur
rjmp end_cur_12
end_cur_11:
rcall show_space
end_cur_12:
ldi hiz,(high(zakladka*2))
ldi loz,(low(zakladka*2))
rcall message_loop
cpi count,2
brlo polling
start_cur_2:
cpi count,2
brne end_cur_21
rcall show_cur
rjmp end_cur_22
end_cur_21:
rcall show_space
end_cur_22:
ldi hiz,(high(pop_zakl*2))
ldi loz,(low(pop_zakl*2))
rcall message_loop
cpi count,2
breq polling
start_cur_3:
cpi count,3
brne end_cur_31
rcall show_cur
rjmp end_cur_32
end_cur_31:
rcall show_space
end_cur_32:
ldi hiz,(high(high_inc*2))
ldi loz,(low(high_inc*2))
rcall message_loop
rjmp polling
show_cur:
ldi hiz,(high(ret_cursor*2))
ldi loz,(low(ret_cursor*2))
rcall message_loop
ret
show_space:
ldi char,' '
rcall write_data
ret
;-----------------------------------------------------------------------
listing:
push work
rcall blank_screen
ldi count,1
ldi hiz,(high(list_kb*2))
ldi loz,(low(list_kb*2))
rcall message_loop
select_kbyte:
ldi char, 0b11010111
rcall write_cmd
cpi count,0x0a
brsh big_gid
mov work,count
rcall dec_itoa
ldi char,' '
rcall write_data
rjmp after_show
big_gid:
ldi char,'1'
push count
rcall write_data
pop count
ldi char, 0b11011000
rcall write_cmd
mov work,count
subi work,0x0a
rcall dec_itoa
after_show:
rcall push_button
cpi key,3
breq inc_kbyte
cpi key,2
breq dec_kbyte
pop work
ret
inc_kbyte:
cpi count,16
breq select_kbyte
inc count
rjmp select_kbyte
dec_kbyte:
cpi count,1
breq select_kbyte
dec count
rjmp select_kbyte
dec_itoa:
ldi char,0x30
add char,work
push count
rcall write_data
pop count
ret
;-----------------------------------------------------------------------
module_address_set:
sbis usr,rxc
rjmp module_address_set
rcall RXcomplete
mov address2,data
wait1:
sbis usr,rxc
rjmp wait1
rcall RXcomplete
mov address1,data
wait2:
sbis usr,rxc
rjmp wait2
rcall RXcomplete
mov address0,data
ldi hiz,(high(address_set*2))
ldi loz,(low(address_set*2))
rcall message
ret
;-----------------------------------------------------------------------
get_address_text_begin:
push work
mov work,book
cpi work,0
brne address_calc
clr address2
ldi address1,0x02
ldi address0,0x08
rjmp end_get_address_text_begin
address_calc:
dec work;То есть dec book!
clr address1
ldi address0,0x08
;mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
rcall read_flash
mov storeh,data
rcall inc_addr
rcall read_flash
mov storel,data
rcall inc_addr
rcall read_flash
mov address0,data
mov address1,storel
mov address2,storeh
end_get_address_text_begin:
pop work
ret
;-----------------------------------------------------------------------
choose_text:
push work
clr address0
clr address1
clr address2
rcall read_flash
cpi data,0x5e
breq calk_name
ldi hiz,(high(no_text*2))
ldi loz,(low(no_text*2))
rcall message
rcall push_button
rjmp choose_text_ret
calk_name:
inc address0;гораздо быстрее, чем подпрограммой inc_addr
rcall read_flash
cpi data,0x5e
breq calk_name
dec address0
mov all_book,address0
show_name:
clr address1
ldi address0,0x0b;смещение=8 + адрес=3
mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
rcall blank_screen
ser count
mov work,all_book
cpi work,0
breq one_book
cp work,book
breq book_down
ldi char,0xda
rcall write_data
inc count
mov work,book
cpi work,0
breq one_book
book_down:
ldi char,0xd9
rcall write_data
inc count
one_book:
ldi char,' '
rcall write_char
ldi work,55
name_loop:
rcall read_flash
cpi data,0x07
breq end_show_name_ent
push work
mov char,data
rcall write_char
rcall inc_addr
pop work
dec work
brne name_loop
end_show_name_ent:
ldi char,' '
rcall write_char
ldi char,0x7e
rcall write_char
end_show_name:
rcall push_button
cpi key,3;то есть в минус
breq minus_text
cpi key,2;то есть в плюс
breq plus_text
rjmp choose_text_ret
minus_text:
mov work,book
cpi work,0
breq end_show_name
dec book
clr address2
clr address1
mov address0,book
rcall read_flash
cpi data,0x5e
breq ret_minus_text
inc book
ret_minus_text:
rjmp show_name
plus_text:
mov work,book
cpi work,7
breq end_show_name
inc book
clr address2
clr address1
mov address0,book
rcall read_flash
cpi data,0x5e
breq ret_plus_text
dec book
ret_plus_text:
rjmp show_name
choose_text_ret:
pop work
ret
;-----------------------------------------------------------------------
sub_string:
subi address0,low(TSYM)
sbci address1,high(TSYM)
brsh ret_sub_string
dec address2
ret_sub_string:
ret
;-----------------------------------------------------------------------
data_polling:
clr work
out ddrb,work
sbi portd,WE
sbrc address2,3
rjmp ce2_pol
sbi porta,CE2;CE2
cbi porta,CE1;CE1
rjmp repeat_dp
ce2_pol:
sbi porta,CE1
cbi porta,CE2
repeat_dp:
cbi portd,OE
nop
nop
in data,pinb
sbi portd,OE
cbr data,0x7f
cbr char,0x7f
cp data,char
brne repeat_dp; Собссно, это и есть #data polling по 7-му биту
ser work
out ddrb,work
sbi porta,CE1
sbi porta,CE2
ret
;-----------------------------------------------------------------------
Приложение Б
Файл rus.inc
.set _a=0x61
.set _b=0xb2
.set _v=0xb3
.set _g=0xb4
.set _d=0xe3
.set _e=0x65
.set _yo=0xb5
.set _zh=0xb6
.set _z=0xb7
.set _i=0xb8
.set _j=0xb9
.set _k=0xba
Подобные документы
История разработки узкоспециализированного устройства для чтения электронных документов. Плюсы и минусы электронных книг, их применение в образовании. Подъем рынка электронных книг подъем в связи с появлением экранов с технологией электронной бумаги.
презентация [601,3 K], добавлен 10.12.2016История появления электронных книг, их виды, характеристика. Использование электронных книг в библиотеках, их достоинства и недостатки. Формирование электронных библиотек и коллекций. Критерии предоставления электронных книг пользователям, хранение фонда.
курсовая работа [66,9 K], добавлен 05.02.2017Анализ вариантов проектных решений и выбор на его основе оптимального решения. Синтез функциональной схемы микропроцессорной системы на основе анализа исходных данных. Процесс разработки аппаратного и программного обеспечения микропроцессорной системы.
курсовая работа [469,1 K], добавлен 20.05.2014История развития и популярные модели электронных книг. Характеристика электронных книг c LCD-, ChLCD-дисплеем, E-Ink дисплеем. Преимущества и недостатки электронных книг по сравнению с бумажными, перспективы их развития и популярность у потребителей.
реферат [2,9 M], добавлен 09.04.2014Тематический план курса разработки цифрового образовательного ресурса по технологии создания электронных графических документов (электронных книг). Особенности сканирования, программное обеспечение. Основные возможности программы ABBYY Fine Reader.
дипломная работа [3,7 M], добавлен 07.07.2011Описание области применения устройства релаксационного воздействия на человека "Лампа хорошего настроения". Выбор микроконтроллера устройства. Алгоритм функционирования программы, её тестирование. Правила и нормы охраны труда при работе с компьютером.
дипломная работа [5,8 M], добавлен 28.09.2015Целесообразность применения МП-устройства. Архитектура микропроцессорной системы. Структурная организация БИС ВТ с изолированными шинами. Содержание и возможная направленность микроконтроллера. Обобщенная структура простого встраиваемого микроконтроллера.
реферат [224,5 K], добавлен 28.04.2011Назначение и устройство микропроцессорной системы контроля. Описание функциональной схемы микропроцессорной системы контроля. Расчет статической характеристики канала измерения. Разработка алгоритма функционирования микропроцессорной системы контроля.
курсовая работа [42,0 K], добавлен 30.08.2010Электронные книги, их достоинства и недостатки. Традиционные технологии создания электронных книг. Защита авторских прав при распространении электронных книг. Наиболее распространенные форматы. Информационная безопасность и информационные технологии.
курсовая работа [1,3 M], добавлен 03.06.2019Необходимость существования, критерии анализа и выбора электронных библиотек. Виды электронных библиотек - универсальные, электронные библиотеки периодических изданий и книг. Особенности распространения информационно-коммуникационных технологий.
курсовая работа [5,6 M], добавлен 04.05.2013