0% found this document useful (0 votes)
14 views6 pages

PDF 2

The document contains multiple experiments involving microcontroller programming, primarily focusing on controlling LEDs and 7-segment displays. Each experiment includes a main function and a delay function, with variations in logic for displaying numbers and responding to button presses. The code snippets illustrate basic operations such as arithmetic calculations and conditional statements within an infinite loop.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views6 pages

PDF 2

The document contains multiple experiments involving microcontroller programming, primarily focusing on controlling LEDs and 7-segment displays. Each experiment includes a main function and a delay function, with variations in logic for displaying numbers and responding to button presses. The code snippets illustrate basic operations such as arithmetic calculations and conditional statements within an infinite loop.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

EXPERIMENT 1;

void delay(){
unsigned int i, j;
for(i = 0; i < 100; i++)
for(j = 0; j < 1275; j++);
}

void main() {
P1 = 0xFF; // Set Port 1 as output (optional, but good practice)

while(1){
P1.F0 = 0; // Turn LED on (assuming active low)
delay();
P1.F0 = 1; // Turn LED off
delay();
}
}

EXPERIMENT 2;
void main() {
unsigned char a = 0x25, b = 0x30;
unsigned char sum, dif, pro, quo, rem;

sum = a + b;
dif = a - b;
pro = a * b;
quo = a / b;
rem = a % b;

while(1); // Infinite loop


}

EXPERIMENT 4;
void delay() {
int i, j;
for (i = 0; i < 1000; i++)
for (j = 0; j < 1275; j++);
}

void main() {
while (1) {
P1.F0 = 0; // LED ON (bit 0 of port 1)
delay();
P1.F0 = 1; // LED OFF
delay();
}
}

EXPERIMENT 5;
void main(){
if(P1.F0==0)
P2.F0==0;
else
P2.F0==1;
while(1);
}

EXPERIMENT 6 and 14 are same only change lookup table;


unsigned char seg_code[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x68, 0x7D, 0x07, 0x7F,
0x6F};

void delay() {
unsigned int i, j;
for (i = 0; i < 1000; i++)
for (j = 0; j < 1275; j++); // Fixed semicolon here
}

void main() {
unsigned int i;
while (1) {
for (i = 0; i < 10; i++) {
P1 = seg_code[i]; // Output to 7-segment display via Port 1
delay();
}
}
}

6 part c
unsigned char seg_code[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x68, 0x7D, 0x07, 0x7F,
0x6F};

void delay() {
unsigned int i, j;
for (i = 0; i < 1000; i++)
for (j = 0; j < 1275; j++);
}

void main() {
unsigned int i;

P2 = 0xFF; // Set P2 as input (especially P2.0)

while (1) {
if (P2.F0 == 0) { // If button on P2.0 is pressed (active low)
for (i = 0; i < 10; i++) {
P1 = seg_code[i]; // Output to 7-segment
delay();
}
}
}
}

EXPERIMENT 13 b and for descending same logic ;


unsigned char code7seg[10] = {
0xC0, // 0
0xF9, // 1
0xA4, // 2 (this works for some modules; A5 is more typical)
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90 // 9
};

void delay_ms(unsigned int time) {


unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 1275; j++);
}

void display_digit(unsigned char digit) {


// Cycle through all 4 digits (show same digit on all 4)
P2 = 0x08; // Enable digit 1
P1 = code7seg[digit];
delay_ms(5);

P2 = 0x04; // Enable digit 2


P1 = code7seg[digit];
delay_ms(5);

P2 = 0x02; // Enable digit 3


P1 = code7seg[digit];
delay_ms(5);

P2 = 0x01; // Enable digit 4


P1 = code7seg[digit];
delay_ms(5);
}

void main() {
unsigned char num;

while (1) {
for (num = 0; num <= 9; num++) {
unsigned int t;
for (t = 0; t < 100; t++) {
display_digit(num);
}
}
}
}

EXPERIMENT 13 c;

unsigned char code7seg[10] = {


0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90 // 9
};

void delay_ms(unsigned int time) {


unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 1275; j++);
}

void display_digit(unsigned char digit) {


// Show the same digit on all 4 positions (refresh to avoid flicker)
unsigned int i;
for (i = 0; i < 50; i++) { // Refresh ~50 times for visible display
P2 = 0x08;
P1 = code7seg[digit];
delay_ms(5);

P2 = 0x04;
P1 = code7seg[digit];
delay_ms(5);

P2 = 0x02;
P1 = code7seg[digit];
delay_ms(5);

P2 = 0x01;
P1 = code7seg[digit];
delay_ms(5);
}
}

void main() {
while (1) {
display_digit(4); // Show digit 4 on all displays
display_digit(5); // Then digit 5
display_digit(6); // Then digit 6
}
}

EXPERIMENT 13 d;

// 7-segment common cathode codes for 0-9


unsigned char code7seg[10] = {
0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90 // 9
};

void delay_ms(unsigned int time) {


unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 1275; j++);
}

// Display "130"
void display130(void) {
unsigned char i;
for (i = 0; i < 100; i++) {
P1 = 0x01; // Enable digit 1
P0 = code7seg[1]; // Display '1'
delay_ms(5);

P1 = 0x02; // Enable digit 2


P0 = code7seg[3]; // Display '3'
delay_ms(5);

P1 = 0x04; // Enable digit 3


P0 = code7seg[0]; // Display '0'
delay_ms(5);

P1 = 0x08; // Disable 4th digit or blank


P0 = 0xFF;
delay_ms(5);
}
}
// Display "0130"
void display0130(void) {
unsigned char i;
for (i = 0; i < 100; i++) {
P1 = 0x01; // Digit 1
P0 = code7seg[0]; // '0'
delay_ms(5);

P1 = 0x02; // Digit 2
P0 = code7seg[1]; // '1'
delay_ms(5);

P1 = 0x04; // Digit 3
P0 = code7seg[3]; // '3'
delay_ms(5);

P1 = 0x08; // Digit 4
P0 = code7seg[0]; // '0'
delay_ms(5);
}
}

void main() {
while (1) {
display130();
delay_ms(1000);
display0130();
delay_ms(1000);
}
}

You might also like