![]() |
Главная Микроконтроллеры [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
Рис. 6.11. Электрическая принципиальная схема разъема или переходника, подключенного к порту, а стоимость не превышает примерно 100 рублей. Для обмена данными применяется синхронный последовательный интерфейс, назначение линий приведено в таблице:
Питание берется с того же порта, при работающем принтере микросхема почти всегда находится в режиме 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.0008 |