Современная электроника №1/2023

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 55 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 1 / 2023 бец дисплея шириной в 1 пиксел представляет собой 16- байтный мас - сив (MP[16]), поскольку по вертикали дисплей имеет разрешение 128 (128/8 = 16), а вывод осуществляется побайтно . Пусть , например , измеренное дав - ление равно 753 мм рт . ст . Во - первых , от этого давления необходимо отнять минимальное его значение (710 – см . рис . 5 а ), чтобы столбец строго вписы - вался в картинку : 753 – 710 = 43. Далее , поскольку столбец выводится побайт - но , необходимо выяснить , сколько целых байт содержится в числе 43. Для этого 43 надо просто нацело разделить на 8: 43/8 = 5, т . е . в данном случае полу - чим 5 нижних байт столбца , которые должны быть нулевыми , чтобы стол - бец выводился чёрными пикселами . А остаток от деления ( в данном случае это 3) определяет , что 3 младших бита верхнего байта столбца должны так - же быть нулевыми , чтобы они также выводились чёрными пикселами ( байт в столбец дисплея выводится сверху вниз старшим битом вперёд ). Как сфор - мировать байт , у которого количество младших бит в точности соответству - ет остатку ( в данном случае – 3)? Один из вариантов – взять число 0xff и сдви - нуть его влево на число остатка ( т . е . в данном случае на 3). Здесь необходи - мо напомнить , что при сдвиге байта влево освободившиеся от сдвига пра - вые ( младшие ) биты устанавливают - ся в ноль . Таким образом , если давле - ние равно 753, то столбец состоит из 5 полных нулевых байт и трёх млад - ших нулевых бит 6- го ( верхнего ) бай - та . Для того чтобы этот столбец шири - ной в 1 пиксел вывелся на своё место , соответствующее картинке , необходи - мо также вывести верхние и нижние пробелы ( равные 0xff). Теперь по поводу ширины столб - цов гистограммы . Здесь имеет смысл сегодняшний столбец сделать потолще , чтобы он выделялся на фоне осталь - ных , которые сделать тоньше . Ширина сегодняшнего столбца была выбрана равной 6 пикселам , ширина остальных – 3 пиксела , ширина пробелов между столбцами – 3 пиксела . Подпрограмма вывода столбца , соот - ветствующего давлению (P) и ширине в пикселах (N), с необходимым коли - чеством верхних и нижних пробелов приведена ниже . С учётом вышеска - занного , на взгляд автора , понять её достаточно просто . //--------------------- Рис .7. Общ ий вид приборавоткры том корпусе ( безкры шки ) void OUTSTOLB(uint8_t N, uint16_t P) { uint8_t xdata MP[16],i,CP,OSTP,BYTEOST,k,b; CP=(P-710)/8;// целая часть OSTP=(P-710)%8;// оста - ток if (OSTP != 0) { b=1; BYTEOST=0x ff << OSTP;// сдвиг 0x ff влево на OSTP бит } else b=0; for (i=0; i<(12-CP- b);i++) { MP[i]=0x ff ;// верх - ние пробелы } if (b != 0) // есть остаток MP[11-CP]=BYTEOST;// биты остатка for (i=12-CP; i<12;i++) { MP[i]=0x00; // чер - ные пикселы } MP[12]=0x7f; //P=710 MP[13]=MP[14]=MP[15]=0x ff ; // нижние пробелы for (k=0;k<N;k++) { for (i=0;i<16;i++) { EPD_WRITE_ DAT(MP[i]);// вывод столбца } } } //--------------------- Обращение к этой подпрограм - ме , если , например , требуется вывести сегодняшний столбец , равный давле - нию (press) и имеющий ширину в 6 пикселов , очень простое : OUTSTOLB(6, press); После трансляции всей програм - мы в среде Simplisity Studio V.4 на экран в специальном окне , отражаю - щем результат трансляции , выведет - ся сообщение : Program Size: data=118.1 xdata=38 const=0 code=9621 LX51 RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) Finished building target: EFM8SB20F16G-A-QFN24_4.omf Из этого сообщения можно заклю - чить , что в программе использована почти вся внутренняя оперативная память с прямой адресацией объё - мом 128 байт (data = 118,1), а внеш - няя оперативная память с косвенной адресацией объёмом 2 кбайт почти не использована (xdata = 38). Кодо - вая часть программы использует чуть более половины всей программной памяти объёмом 16 кбайт или 16 384 байта (code = 9621). Остаток программ - ной памяти составляет : 16 384 – 9621 = 6763 байт ≈ 6,6 кбайт . Кроме того , при трансляции применена так называе - мая small- модель , в которой данные располагаются в области памяти с пря - мой адресацией (data). В этом случае , во - первых , существенно экономится программная память , а во - вторых , про - грамма работает несколько быстрее . Разводка платы , конструкция прибора и результаты его работы Разводка платы сделана автором с помощью программы SprintLayOut v.6. Файл разводки в формате *.lay6 приве - дён в дополнительных материалах к статье на сайте журнала . Из рисунка разведённой платы можно заключить , что разводка очень проста , а сама плата ( рис . 6) небольшого размера (22×26 мм ). Прибор расположен в корпусе «20–22» размером 90×58×23 мм с защёлкива - ющейся крышкой ( рис . 7), в котором для дисплея прорезано окно по разме - ру видимой части его экрана . Для досту - па воздуха к внутреннему пространству прибора в крышке сверху и снизу сде - лано по 5 отверстий диаметром 4 мм . Сам дисплей приклеен к текстолитовой пластине толщиной 2 мм тонким скот - чем с двусторонним липким слоем , а пластина , в свою очередь , приклеена к внутренней поверхности корпуса пори -

RkJQdWJsaXNoZXIy MTQ4NjUy