

The CD4518 is a dual 4-bit binary-coded decimal (BCD) up counter manufactured by Motorola. It is designed to count in binary up to 15 (1111 in binary) and features a reset function for clearing the count. The CD4518 is highly versatile and can be cascaded with other counters to extend its counting range. It operates over a wide voltage range, making it suitable for a variety of digital applications.








The following are the key technical details of the CD4518:
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 3V to 15V |
| Input Voltage Range | 0V to VDD |
| Maximum Clock Frequency | 6 MHz (at 10V supply) |
| Output Voltage (High) | VDD - 0.05V (typical) |
| Output Voltage (Low) | 0.05V (typical) |
| Propagation Delay | 200 ns (at 10V supply) |
| Power Dissipation | 500 mW |
| Operating Temperature Range | -55°C to +125°C |
The CD4518 is a 16-pin dual in-line package (DIP). Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | MR1 | Master Reset for Counter 1 (Active High) |
| 2 | CP1 | Clock Input for Counter 1 |
| 3 | Q1A | Counter 1 Output A (Least Significant Bit) |
| 4 | Q1B | Counter 1 Output B |
| 5 | Q1C | Counter 1 Output C |
| 6 | Q1D | Counter 1 Output D (Most Significant Bit) |
| 7 | VSS | Ground (0V) |
| 8 | Q2D | Counter 2 Output D (Most Significant Bit) |
| 9 | Q2C | Counter 2 Output C |
| 10 | Q2B | Counter 2 Output B |
| 11 | Q2A | Counter 2 Output A (Least Significant Bit) |
| 12 | CP2 | Clock Input for Counter 2 |
| 13 | MR2 | Master Reset for Counter 2 (Active High) |
| 14 | VDD | Positive Supply Voltage |
| 15 | NC | No Connection |
| 16 | NC | No Connection |
The following example demonstrates how to use the CD4518 with an Arduino UNO to count clock pulses and display the count on the serial monitor.
// CD4518 Example with Arduino UNO
// Connect CP1 (Pin 2) to Arduino Pin 3 for clock signal
// Connect Q1A, Q1B, Q1C, Q1D (Pins 3, 4, 5, 6) to Arduino Pins 8, 9, 10, 11
const int clockPin = 3; // Arduino pin connected to CP1
const int outputPins[] = {8, 9, 10, 11}; // Q1A, Q1B, Q1C, Q1D
void setup() {
pinMode(clockPin, OUTPUT); // Set clock pin as output
for (int i = 0; i < 4; i++) {
pinMode(outputPins[i], INPUT); // Set output pins as input
}
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Generate a clock pulse
digitalWrite(clockPin, HIGH);
delay(100); // 100 ms HIGH pulse
digitalWrite(clockPin, LOW);
delay(100); // 100 ms LOW pulse
// Read the counter outputs
int count = 0;
for (int i = 0; i < 4; i++) {
count |= digitalRead(outputPins[i]) << i; // Combine bits into a single number
}
// Print the count to the serial monitor
Serial.print("Count: ");
Serial.println(count);
}
Counter Not Incrementing:
Erratic Counting:
Incorrect Output:
Q: Can I use the CD4518 with a 5V power supply?
A: Yes, the CD4518 operates within a wide voltage range of 3V to 15V, so it is compatible with a 5V supply.
Q: How do I cascade multiple CD4518 counters?
A: Connect the MSB output (QxD) of one counter to the clock input (CPx) of the next counter. This allows the second counter to increment after the first counter completes a full cycle.
Q: What is the maximum counting range of a single CD4518?
A: Each counter in the CD4518 can count from 0 to 15 (4 bits). Since it is a dual counter, the total counting range is 0 to 15 for each counter.