{"id":20956891,"url":"https://github.com/gmostofabd/8051-up-down-counter","last_synced_at":"2026-05-21T15:02:49.177Z","repository":{"id":152405465,"uuid":"570133519","full_name":"gmostofabd/8051-Up-Down-Counter","owner":"gmostofabd","description":"🛠️ A simple Up Down Counter using 8051 MCU, Seven Segment Display (SSD) and Push Buttons to Inc, Dec and Reset the value of the counter.","archived":false,"fork":false,"pushed_at":"2024-09-22T15:56:28.000Z","size":140,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-29T16:24:12.917Z","etag":null,"topics":["8051","anode","assembly","cathode","circuit","common","languageb","microcontrollers","programming","proteus","schematic","seven-segments-display","simulation","ssd"],"latest_commit_sha":null,"homepage":"https://gmostofabd.github.io/8051-Up-Down-Counter/","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gmostofabd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-24T12:15:29.000Z","updated_at":"2024-09-22T16:02:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"739c6708-7151-4410-a0be-a837f04ad473","html_url":"https://github.com/gmostofabd/8051-Up-Down-Counter","commit_stats":null,"previous_names":["gmostofabd/8051-up-down-counter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gmostofabd/8051-Up-Down-Counter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmostofabd%2F8051-Up-Down-Counter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmostofabd%2F8051-Up-Down-Counter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmostofabd%2F8051-Up-Down-Counter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmostofabd%2F8051-Up-Down-Counter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gmostofabd","download_url":"https://codeload.github.com/gmostofabd/8051-Up-Down-Counter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmostofabd%2F8051-Up-Down-Counter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33305277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"ssl_error","status_checked_at":"2026-05-21T12:22:11.673Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["8051","anode","assembly","cathode","circuit","common","languageb","microcontrollers","programming","proteus","schematic","seven-segments-display","simulation","ssd"],"created_at":"2024-11-19T01:28:21.019Z","updated_at":"2026-05-21T15:02:49.160Z","avatar_url":"https://github.com/gmostofabd.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚙️ **8051 Up-Down Counter using Seven-Segment Display (SSD)**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/78910261/203802195-3d1d0b39-7d0f-4a25-88e8-6e8e4f05cb55.png\" alt=\"AT89C51 UP DN COUNTER 7 Segment\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n---\n\n## 📖 **Overview**\n\nThis project demonstrates a **simple Up-Down Counter** using the **[AT89C51](https://www.atmel.com/products/microcontrollers/8051.aspx)** Microcontroller, part of the **[8051 MCU](https://en.wikipedia.org/wiki/Intel_MCS-51)** family. The counter output is displayed on a **Seven-Segment Display (SSD)** and controlled by external **push buttons** for incrementing, decrementing, and resetting.\n\nThe program is written in **[Assembly language](https://en.wikipedia.org/wiki/Assembly_language)**, and the circuit is simulated using **[Proteus](https://www.labcenter.com/)** (Version 8.9). This repository includes:\n- **[Assembly Code](https://en.wikipedia.org/wiki/Assembly_language)**\n- **Precompiled HEX File**\n- **[Proteus Simulation Circuit](https://www.labcenter.com/)**\n\nThe project has been successfully tested on both simulation and real hardware.\n\n---\n\n## 🔑 **Keywords**\n\n**[AT89C51 Microcontroller](https://www.atmel.com/products/microcontrollers/8051.aspx)** | \n**[8051](https://en.wikipedia.org/wiki/Intel_MCS-51)** | \n**[Assembly Language](https://en.wikipedia.org/wiki/Assembly_language)** | \n**[Simulation](https://www.labcenter.com/)** | \n**[Proteus](https://www.labcenter.com/)** | \n**[Microcontroller Programming](https://en.wikipedia.org/wiki/Microcontroller)**\n\n---\n\n## ⚙️ **Key Features**\n\n\u003cdiv align=\"center\"\u003e\n\n| Feature                      | Description                                                                 |\n|-------------------------------|-----------------------------------------------------------------------------|\n| 🔢 **Up-Down Counter**         | Real-time counting with a 7-segment display                                  |\n| 🎛️ **Push Button Controls**    | Buttons for incrementing, decrementing, and resetting the counter            |\n| 🖥️ **Proteus Simulation**      | Ready-to-use simulation circuit (Proteus 8.9 compatible)                     |\n| 💾 **Assembly Programming**    | Written entirely in **Assembly language** for the AT89C51                    |\n| 🛠️ **Real Hardware Support**   | Tested successfully on physical hardware                                    |\n\n\u003c/div\u003e\n\n---\n\n---\n\n## 📦 **Contents**\n\n\u003cdiv align=\"center\"\u003e\n\n| File                          | Description                                                                 |\n|-------------------------------|-----------------------------------------------------------------------------|\n| `AT89C51_Up_Down_Counter.asm`  | Assembly source code for the AT89C51 microcontroller                        |\n| `AT89C51_Up_Down_Counter.hex`  | Precompiled HEX file for direct microcontroller upload                      |\n| `Proteus_Simulation.pdsprj`    | Proteus Design Suite simulation file                                        |\n| **Screenshots**                | Demonstrations from the Proteus simulation                                  |\n\n\u003c/div\u003e\n\n---\n## 🛠️ **Hardware \u0026 Circuit Information**\n\n\u003cdiv align=\"center\"\u003e\n\n| Hardware Component             | Description                                                                 |\n|---------------------------------|-----------------------------------------------------------------------------|\n| **AT89C51 Microcontroller**     | Core of the project, controlling the up-down counting                        |\n| **Seven-Segment Display (SSD)** | A common cathode display for output                                          |\n| **Push Buttons**                | Used for incrementing, decrementing, and resetting the counter               |\n| **Transistors (e.g., NPN)**     | To drive the SSD segments                                                    |\n| **Resistors**                   | For current-limiting to protect the microcontroller and SSD                  |\n| **Power Supply**                | A 5V DC power supply for the microcontroller and SSD circuit                 |\n\n\u003c/div\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/78910261/203802987-13da40f2-8b33-4ebd-ad10-d2c8eb3dfa45.png\" alt=\"7 Segment Display (Common Cathode)\" width=\"70%\"\u003e\n\u003c/p\u003e\n\n### **Circuit Explanation**:\n\nThe **Seven-Segment Display** in this project is a **common cathode** type, meaning all cathodes are connected to ground. The microcontroller sends signals to the anode pins through **transistor drivers** to control which segments are illuminated, forming numbers 0–9.\n\nEach push button is connected to an input pin on the microcontroller, allowing the counter value to be incremented, decremented, or reset. **Resistors** ensure proper current control to prevent damage to the microcontroller and display.\n\n---\n\n## 🖥️ **Installation \u0026 Usage**\n\n### **Step-by-Step Guide:**\n\n1. **Clone this repository**:\n   ```bash\n   git clone https://github.com/gmostofabd/8051_Up_Down_Counter_SSD.git\n   ```\n\n2. **Compile the Assembly Code**:\n   Open the `AT89C51_Up_Down_Counter.asm` file in **MIDE-51** or a compatible IDE, and compile it to generate the **HEX file**.\n\n3. **Simulate in Proteus**:\n   Open **Proteus Design Suite**, load the provided simulation file, and run the simulation to observe the counter’s behavior.\n\n4. **Program the Microcontroller**:\n   For real hardware, upload the **HEX file** to the AT89C51 microcontroller using a programmer.\n\n5. **Test the Circuit**:\n   Assemble the hardware based on the provided circuit diagram, power it on, and test the push buttons for incrementing, decrementing, and resetting the counter.\n\n---\n\n## 🔗 **Additional Information**\n\n### **Seven-Segment Display**:\nThe **common cathode** display has 8 LEDs (7 segments and 1 decimal point) to represent digits 0-9. The microcontroller drives the LEDs through combinations of HIGH/LOW signals.\n\n### **Push Button Controls**:\n- **Increment Button**: Increases the counter by 1.\n- **Decrement Button**: Decreases the counter by 1.\n- **Reset Button**: Resets the counter to 0.\n\nFor a deeper understanding of the circuit and code, explore the **Proteus simulation** and the comments in the assembly source file.\n\n---\n\n## 🤝 **Contributing**\n\nWe welcome contributions! Feel free to submit pull requests or open issues for any bug fixes, feature enhancements, or optimizations to the assembly code.\n\n---\n\n## 📧 **Contact**\n\nFor any inquiries or assistance, reach out at [mostofa.melab@gmail.com](mailto:mostofa.melab@gmail.com).\n\n---\n\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"your-contact-graphic.png\" alt=\"Contact Graphic\" width=\"50%\"\u003e\n\u003c/p\u003e\n\nIf you found this project helpful, give it a ⭐ on GitHub!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmostofabd%2F8051-up-down-counter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgmostofabd%2F8051-up-down-counter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmostofabd%2F8051-up-down-counter/lists"}