{"id":13613204,"url":"https://github.com/mcauser/micropython-pcd8544","last_synced_at":"2025-10-29T15:20:48.896Z","repository":{"id":57441497,"uuid":"95032300","full_name":"mcauser/micropython-pcd8544","owner":"mcauser","description":"MicroPython driver for Nokia 5110 PCD8544 84x48 LCD modules","archived":false,"fork":false,"pushed_at":"2018-08-23T00:04:01.000Z","size":605,"stargazers_count":71,"open_issues_count":2,"forks_count":14,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-19T01:57:33.742Z","etag":null,"topics":["esp8266","micropython","nokia-5110","nokia5110","pcd8544","wemos-d1-mini"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcauser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-21T18:06:10.000Z","updated_at":"2025-05-15T02:50:34.000Z","dependencies_parsed_at":"2022-09-06T02:21:46.262Z","dependency_job_id":null,"html_url":"https://github.com/mcauser/micropython-pcd8544","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mcauser/micropython-pcd8544","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fmicropython-pcd8544","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fmicropython-pcd8544/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fmicropython-pcd8544/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fmicropython-pcd8544/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcauser","download_url":"https://codeload.github.com/mcauser/micropython-pcd8544/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fmicropython-pcd8544/sbom","scorecard":{"id":631715,"data":{"date":"2025-08-11","repo":{"name":"github.com/mcauser/micropython-pcd8544","commit":"791d4239d77b0d06192c7ab7903d81a72a53f992"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/9 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-21T08:07:02.639Z","repository_id":57441497,"created_at":"2025-08-21T08:07:02.639Z","updated_at":"2025-08-21T08:07:02.639Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276439792,"owners_count":25642751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-22T02:00:08.972Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp8266","micropython","nokia-5110","nokia5110","pcd8544","wemos-d1-mini"],"created_at":"2024-08-01T20:00:41.503Z","updated_at":"2025-09-23T19:56:09.296Z","avatar_url":"https://github.com/mcauser.png","language":"Python","readme":"# MicroPython PCD8544\n\nA MicroPython library for the Philips PCD8544 84x48 monochrome LCD, used by the Nokia 5110 display.\n\n![demo](docs/demo.jpg)\n\n#### Pinout\n\n| ![demo](docs/nokia5110_pinout.jpg) | ![demo](docs/esp8266_pinout.jpg) |\n|-|-|\n\nPin | Name | Description\n:--:|:----:|:--------------------------------\n1   | RST  | External reset input, active low\n2   | CE   | Chip enable, active low\n3   | D/C  | Data high / Command low\n4   | DIN  | Serial data input\n5   | CLK  | Serial clock, up to 4 Mbits/s\n6   | VCC  | Supply voltage 2.7-3.3V\n7   | BL   | Backlight\n8   | GND  | Ground\n\n## Example\n\nCopy the file to your device, using ampy, webrepl or compiling and deploying. eg.\n\n```bash\n$ ampy put pcd8544.py\n```\n\n**Basic Example**\n\n```python\nimport pcd8544\nfrom machine import Pin, SPI\n\nspi = SPI(1)\nspi.init(baudrate=2000000, polarity=0, phase=0)\ncs = Pin(2)\ndc = Pin(15)\nrst = Pin(0)\n\n# backlight on\nbl = Pin(12, Pin.OUT, value=1)\n\nlcd = pcd8544.PCD8544(spi, cs, dc, rst)\n\n# test pattern (50% on)\nlcd.data(bytearray([0x55, 0xAA] * 42 * 6))\n\n# bitmap smiley (horzontal msb)\nlcd.clear()\n# draw 8x16 in bank 0 (rows 0..7)\nlcd.position(0, 0)\nlcd.data(bytearray(b'\\xE0\\x38\\xE4\\x22\\xA2\\xE1\\xE1\\x61\\xE1\\x21\\xA2\\xE2\\xE4\\x38\\xE0\\x00'))\n# draw 8x16 in bank 1 (rows 8..15)\nlcd.position(0, 1)\nlcd.data(bytearray(b'\\x03\\x0C\\x10\\x21\\x21\\x41\\x48\\x48\\x48\\x49\\x25\\x21\\x10\\x0C\\x03\\x00'))\n\n# toggle display, image persists in DDRAM\nlcd.power_off()\nlcd.power_on()\n\n# nokia logo bitmap\nlcd.clear()\nlcd.data(bytearray(b'\\x80\\x00\\x00\\x80\\x00\\x00\\x80\\x00\\x00\\x80\\x00\\x00\\x80\\x00\\x00\\x80\\x00\\x00\\x80\\x80\\x40\\x40\\x40\\x80\\x80\\xC0\\xC0\\x40\\xC0\\xA0\\xE0\\xC0\\xE0\\xE0\\xF0\\xF0\\xF8\\xF8\\xF8\\xFC\\xFC\\xFE\\xEE\\xF4\\xF0\\xF0\\x70\\x30\\x00\\x80\\x00\\x00\\x80\\x00\\x0C\\x9C\\x1C\\x38\\xB8\\x38\\x38\\xB8\\xF8\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xF8\\xF8\\xF8\\xF8\\x88\\x20\\x8A\\x20\\x08\\x22\\x08\\x00\\x0A\\x00\\x00\\x02\\x80\\x71\\xBA\\xDA\\xFD\\xDD\\xED\\xDE\\xEE\\xF7\\xFF\\xFB\\xFD\\xFD\\xFE\\xFF\\x7F\\x3F\\x1F\\x9F\\x3F\\x7F\\x6F\\x0F\\xAF\\x1F\\xBF\\x3E\\x3C\\x7A\\x78\\x70\\x22\\x88\\xA0\\x2A\\x80\\x08\\x62\\xE0\\xE0\\xF2\\xF0\\x58\\xDA\\xF8\\xFC\\x92\\xFE\\xFF\\xFF\\xD3\\xFF\\xFD\\xF3\\xE1\\xF0\\xF9\\x7F\\xBF\\x3F\\x8F\\x2F\\x4F\\xAF\\x0F\\x4F\\xA7\\x0F\\xAF\\x87\\x2F\\x82\\x80\\x20\\xC0\\x80\\x80\\x50\\x40\\xC4\\xD0\\xA0\\xE8\\xE4\\xEA\\xFF\\xFB\\xFD\\xFF\\xFF\\xFF\\xFF\\xFF\\xEF\\x4F\\x27\\x53\\xA8\\x54\\x29\\x4A\\xB5\\x82\\xAC\\xA1\\x8A\\xB6\\x50\\x4D\\x32\\xA4\\x4A\\xB4\\xA9\\x4A\\x52\\xB4\\xAA\\x45\\xA8\\xDA\\x22\\xAC\\xD2\\x2A\\x52\\xA8\\x52\\x4C\\xB0\\xAD\\x43\\x5B\\xB3\\x45\\xA8\\x5B\\xA3\\xAB\\x55\\xA8\\x52\\x54\\xA9\\x56\\xA8\\x45\\xBA\\xA4\\x49\\x5A\\xA2\\x54\\xAA\\x52\\xFE\\xFF\\xFF\\xFE\\xFD\\xFF\\xFF\\xFF\\xFE\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\x7F\\xFF\\xFE\\xBF\\x7F\\xBF\\xBF\\xFF\\xDF\\xBF\\x5F\\xDF\\x7F\\xDF\\x7F\\xDF\\xAF\\x7F\\xEE\\x8E\\xF1\\x6E\\x99\\xF7\\x6A\\xDD\\xB2\\x6E\\xD5\\x7A\\xD7\\xAC\\x75\\xDB\\x6D\\xD5\\x7A\\xD7\\xAC\\x7B\\xE5\\xDE\\xA9\\x77\\xDA\\xB5\\xEE\\x59\\xB6\\xEB\\xDD\\xB6\\x69\\xD6\\xBF\\xE8\\x55\\xEF\\xB9\\xD6\\xED\\xB5\\x5B\\xAB\\xFF\\xFD\\xF7\\xFF\\x01\\x01\\x01\\x01\\xE1\\xC1\\x81\\x03\\x05\\x0F\\x1D\\x2F\\x7E\\x01\\x00\\x01\\x01\\xFF\\xFE\\x03\\x01\\x01\\x00\\xF1\\xF0\\xF1\\x71\\xF1\\xF1\\xB1\\xF1\\x01\\x01\\x01\\x03\\xFE\\xFF\\x01\\x01\\x01\\x01\\xBE\\x1B\\x0D\\x07\\x03\\x41\\xE1\\xF1\\xF9\\x6D\\xFF\\xFF\\x00\\x01\\x01\\x01\\xFF\\xFF\\xEB\\x3E\\x0D\\x03\\x01\\x41\\x71\\x70\\x41\\x01\\x03\\x0E\\x3B\\xEF\\xFE\\xFB\\xEE\\x7D\\xF7\\xFF\\xFF\\xFF\\xFF\\xFE\\xFF\\xF0\\xF0\\xF0\\xF0\\xFF\\xFF\\xFF\\xFF\\xFE\\xFC\\xF8\\xF0\\xF0\\xF0\\xF0\\xF0\\xF0\\xFF\\xFF\\xF8\\xF0\\xF0\\xF0\\xF1\\xF1\\xF1\\xF1\\xF1\\xF1\\xF1\\xF1\\xF0\\xF0\\xF0\\xF8\\xFF\\xFF\\xF0\\xF0\\xF0\\xF0\\xFF\\xFF\\xFE\\xFC\\xF8\\xF0\\xF0\\xF1\\xF3\\xF7\\xFF\\xFF\\xF0\\xF0\\xF0\\xF0\\xFF\\xF3\\xF0\\xF0\\xF0\\xFC\\xFC\\xFC\\xFC\\xFC\\xFC\\xFC\\xFC\\xF0\\xF0\\xF0\\xF3\\xFF\\xFF\\xFF\\xFF\\xFF'))\n\nlcd.invert(True)\nlcd.invert(False)\n\nlcd.reset()\nlcd.init()\n\n# swtich to vertical addressing\nlcd.init(horizontal=False)\n\n# adjust contrast, bias and temp\nlcd.contrast(0x1f, pcd8544.BIAS_1_40, pcd8544.TEMP_COEFF_0)\nlcd.contrast(0x3f, pcd8544.BIAS_1_48, pcd8544.TEMP_COEFF_0)\nlcd.contrast(0x3c, pcd8544.BIAS_1_40, pcd8544.TEMP_COEFF_0)\nlcd.contrast(0x42, pcd8544.BIAS_1_48, pcd8544.TEMP_COEFF_0)\nlcd.contrast(0x3f, pcd8544.BIAS_1_40, pcd8544.TEMP_COEFF_2)\n```\n\nSee [/examples](/examples) for more.\n\n## Addressing\n\nEach animation frame represents 1 of 504 bytes written to the DDRAM. `lcd.data(bytearray(b'\\xFF'))`\n\nIn horizontal mode you can use framebuf with MONO_VLSB format. Vertical mode does not have a compatible framebuf format.\n\n**Horizontal**\n\n![Horizontal](docs/pcd8544-horizontal.gif)\n\n**Vertical**\n\n![Vertical](docs/pcd8544-vertical.gif)\n\nSee [/examples/addressing](/examples/addressing) for more details.\n\n## Parts\n\n* [WeMos D1 Mini](https://www.aliexpress.com/store/product/D1-mini-Mini-NodeMcu-4M-bytes-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266/1331105_32529101036.html) $4.00 USD\n* [Nokia 5110 LCD Display](https://www.aliexpress.com/item/1pcs-High-Quality-84-48-84x48-LCD-Module-White-backlight-adapter-PCB-for-Nokia-5110-for/32609308327.html) $2.00 USD\n\n## Connections\n\nWeMos D1 Mini | PCD8544 LCD\n------------- | ----------\nD3 (GPIO0)    | 1 RST\nD4 (GPIO2)    | 2 CE\nD8 (GPIO15)   | 3 DC\nD7 (GPIO13)   | 4 Din\nD5 (GPIO14)   | 5 Clk\n3V3           | 6 Vcc\nD6 (GPIO12)   | 7 BL\nG             | 8 Gnd\n\n## Links\n\n* [WeMos D1 Mini](https://wiki.wemos.cc/products:d1:d1_mini)\n* [micropython.org](http://micropython.org)\n* [Adafruit Ampy](https://learn.adafruit.com/micropython-basics-load-files-and-run-code/install-ampy)\n* [PCD8544 Datasheet](docs/PCD8544.pdf)\n\n## License\n\nLicensed under the [MIT License](http://opensource.org/licenses/MIT).\n","funding_links":[],"categories":["Libraries","精选驱动库"],"sub_categories":["Display","显示类"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcauser%2Fmicropython-pcd8544","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcauser%2Fmicropython-pcd8544","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcauser%2Fmicropython-pcd8544/lists"}