Главная  Микроконтроллеры 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [ 63 ] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

Измерение потребляемой прибором мощности не производилось. Расчетно - 750 мкВт (ток около 500 мкА). Устройство имеет защиту от КЗ.

Файлы, относящиеся к проекту, находятся на компакт диске, прилагаемом к книге.

Автор: Алексей Кургузов (E-mail: kurguzov@unact.ru).

6.10. Ключ для защиты от копирования

Описываемая здесь схема предназначена для защиты программ от нелегального копирования. Ее использование позволяет практически полностью исключить эту возможность, так как часть защищаемой программы можно хранить в микроконтроллере с установленным битом защиты, не позволяющим ее считать, а значит, и скопировать. Ключ подключается к параллельному порту и может работать одновременно с принтером. Сразу замечу, что эта схема имеет два ограничения. Во-первых, программа микроконтроллера ничего не делает, кроме получения данных от компьютера, их хранения и отправки обратно. Этого достаточно, чтобы программно определить наличие или отсутствие ключа, но, если в микроконтроллер записать часть программы или перед возвращением данных их шифровать, степень защиты значительно увеличится. Я думаю, границей между двумя этими вариантами является цена защищаемой программы в несколько сотен долларов. И во-вторых, эта схема не всегда позволяет работать принтеру, подключенному к тому же порту. Epson Stylus Color 600 прекрасно работал и даже автоматически определился, а Epson LX 1050+ нет. Для исправления этого надо немного переделать схему. Но и этот вариант можно использовать с некоторыми принтерами или, если принтер нужен и он не работает, подключить переключатель порта DataSwitch. Если принтер не подключен, схема устойчиво работает.

Схема конструкции показана на рис. 6.11.

Комментарии к схеме

В целях уменьшения размера и стоимости устройства использован микроконтроллер AT90S1200 с внутренним RC-генератором. Это позволяет спокойно разместить всю собранную схему внутри



DB25

VD1-VD9- -Д9

II V У V V М V V

:С1 О.бвмк

DB25

D3 AT90S2313

PB0/AIN0

PB1/AIN1

Р02ЛЫТО РВ2

Р04Л-О

PB5/M0SI

РВбЛЛВО

PB7/SCK

XTAL1 XTAL2

Рис. 6.11. Электрическая принципиальная схема

разъема или переходника, подключенного к порту, а стоимость не превышает примерно 100 рублей. Для обмена данными применяется синхронный последовательный интерфейс, назначение линий приведено в таблице:

Вывод микроконтроллера

Вывод порта

Назначение сигхала

SIctIn

Выбор принтера или ключа

Vcc. RESET

D0...D7

Питание ключа

Strobe

Данные от компыотера

Busy

Данные от ключа

AutoLF

Импульсы синхронизации от компьютера



Питание берется с того же порта, при работающем принтере микросхема почти всегда находится в режиме Power Down и потребляет меньше 1 мА, для ее питания достаточно единицы на одном из выводов шины данных. В активном режиме на выводы данных должны быть программно выставлены единицы, благодаря чему обеспечивается ток, достаточный для питания микроконтроллера. Желательно использовать германиевые диоды, так как падение напряжения на них меньше. Есть два исполнения микросхемы AT90S1200 с максимальными частотами 4 или 12 МГц и минимальными напряжениями питания соответственно 2,7 и 4 В. Лучше применять первое, так как из-за существующего разброса параметров параллельных портов на разных компьютерах может оказаться, что на питание микросхемы будет подано напряжение менее 4 В. Например, AT90S1200A-4PC.

Программа микроконтроллера

.IMCLUDE 1200def.inc" ; AT90S1200 е 1 МГц .CSEG

.DEF Byte=r16

. DEF LoopCounter=r18

DEF Byte0=r19

DEF Byte1=r20

DEF Byte2=r21

.DEF Byte3=r22

.DEF Byte4=r23

.DEF Byte5=r24

.DEF Byte6=r25

.DEF Byte7=r26

ORG ООО

rjnp RESET ; Reset Handler .ORG 001

rjmp EXT.INTO ; IROO Handler

RESET:

; Настраиваем направление работы портов

; Все пинии портов после сброса настроены на работу в качестве входов

; а на неиспользуемых включены pull-up резисторы

Idi г31,0 out DDRB,г31 out DDRD,г 31 Idi r31,$ff out PORTB.r31 Idi r31,$72 out PORTD.Г31



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [ 63 ] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

0.0009