CODES
Experiment
No.1
LED
FLASHING
#include<reg51.h>
#define
Del 3000
sfr
LED_PORT2=0xA0;
void
delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<=x;i++)
for(j=0;j<=100;j++);
}
void
main(void)
{
while(1)
{
LED_PORT2=0xff;
delay(Del);
LED_PORT2=0x00;
delay(Del);
}
}
Experiment
No.1
//BCD
Counter on PORT 1
BCD
COUNTER
#include<reg51.h>
#define
Del 2000
void
delay(unsigned int x) // delay
function
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<=100;j++);
}
void
main(void)
{
unsigned
char count[10]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6};
unsigned
int x;
P1=0x00;
while(1)
{
for(x=0;x<10;x++)
{
P1=count[x];
delay(Del);
}
}
}
Experiment
No.1
Binary
Counter
#include<reg51.h>
#define
Del 2000
void
delay(unsigned int x) // delay
function
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<=100;j++);
}
void
main(void)
{
unsigned
char count[16]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0};
unsigned
int x;
P1=0x00; //
Make P1 as output port
while(1) //
do it continuosly
{
for(x=0;x<10;x++)
{
P1=count[x];
delay(Del);
}
}
}
Experiment
No.2
Seven
Segment Display
#include<reg51.h>
#define
del 500
void
delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<=100;j++);
}
void
main(void)
{
while(1)
{
P2=0xEB;
P3=0x7F;
delay(del);
P2=0x4C;
P3=0xBF;
delay(del);
P2=0x49;
P3=0xDF;
delay(del);
P2=0x2B;
P3=0xEF;
delay(del);
}
}
Experiment
No.3
//Squarewave
using DAC with timer delay
#include
<reg51.h>
void
delay();
void
main()
{
while(1)
{
P2=0x00;
delay();
P2=0xFF;
delay();
}
}
void
delay() //20ms delay
{
TMOD=0x01;
// timer 0 ,mode 1(16 bit)
TL0=0x3E;//
load TL0
TH0=0xB8;
TR0=1;
while(TF0==0);//
wait for TF0 to roll over
TR0=0;
TF0=0;
}
//
Triangular waveform generation
#include<
reg51.h>
unsigned
char d;
void
main(void)
{
while(1)
{
for(d=0;
d<255; d++)
{ P2 = d;
}
for(d=255;
d>0; d--)
{
P2 = d;
}
}
}
Experiment
No.4
//Stepper
motor Anticlockwise
#include
<reg51.h>
void
delay(unsigned char del);
void
main()
{
while(1)
{
P0=0x0a;
delay(10);
P0=0x09;
delay(10);
P0=0x05;
delay(10);
P0=0x06;
delay(10);
}
}
void
delay(unsigned char del)
{
unsigned int i,j;
for(i=0;i<1275;i++)
for(j=0;j<del;j++);
}
Experiment
No.4
//Stepper
motor Clockwise
#include
<reg51.h>
void
delay(unsigned char del);
void
main()
{
while(1)
{
P0=0x06;
delay(10);
P0=0x05;
delay(10);
P0=0x09;
delay(10);
P0=0x0a;
delay(10);
}
}
void
delay(unsigned char del)
{
unsigned int i,j;
for(i=0;i<1275;i++)
for(j=0;j<del;j++);
}
Experiment
No.5
RAM-RAM
ORG 0000H
MOV R0, #20H
MOV R1, #40H
MOV R2, #05H
BACK: MOV A, @R0
MOV @R1, A
INC R0
INC R1
DJNZ R2, BACK
END
RAM-EX
ORG 0000H
MOV R0, #20H
MOV DPTR, #040H
MOV R2, #05H
BACK: MOV A, @R0
MOVX @DPTR, A
INC R0
INC DPTR
DJNZ R2, BACK
END
ROM-RAM
ORG 0000H
MOV R0, #20H
MOV R1, #05H
MOV DPTR, #0234H
BACK: CLR A
MOVC A, @A+DPTR
MOV @R0, A
INC R0
INC DPTR
DJNZ R1, BACK
ORG 0234H
DB 2H, 4H, 6H, 8H, 10H
END
Exp
6 :
Led
buzzer relay interfacing
#include <stdio.h>
#include <stdlib.h>
#include<PIC18F4550.h>
void delay()
{
unsigned int j;
for(j=0; j<30000; j++)
{
}
}
void main()
{
unsigned int key, i;
key=0;
TRISB=0x00;
TRISDbits.RD2=0;
TRISAbits.RA4=0;
TRISDbits.RD0=1;
TRISDbits.RD1=1;
while(1)
{
if(PORTDbits.RD0==0)
{
key=0;
}
if(PORTDbits.RD1==0)
{
key=1;
}
if(key==0)
{
LATDbits.LATD2=0;
LATAbits.LATA4=0;
for(i=0;i<8;i++)
{
LATB=0x01<<i;
delay();
}
}
if(key==1)
{
LATDbits.LATD2=1;
LATAbits.LATA4=1;
for(i=0;i<8;i++)
{
LATB=0x80>>i;
delay();
}
}
}
Exp 7 LCD 8 bit#include <stdio.h>#include <stdlib.h>#include<pic18f4550.h>#define RS LATCbits.LATC0#define E LATCbits.LATC1#define LCDPORT LATBvoid delay(){ for(int i=0; i<30000; i++) { }}void sendCommand(unsigned char command){ LCDPORT=command; RS=0; delay(); E=1; delay(); E=0; delay();}void sendData(unsigned char data){ LCDPORT=data; RS=1; delay(); E=1; delay(); E=0; delay();} void main(){ TRISB=0x00; TRISCbits.RC0=0; TRISCbits.RC1=0; sendCommand(0x38); sendCommand(0x01); sendCommand(0x0F); sendCommand(0x06); sendCommand(0x80); sendData('E'); sendData('&'); sendData('T'); sendData('C'); sendData(' '); sendData('S'); sendData('C'); sendData('O'); sendData('E'); sendCommand(0xC0); sendData('P'); sendData('U'); sendData('N'); sendData('E'); sendData('-'); sendData('4'); sendData('1');}
LCD
wit Keypad
#include <stdio.h>#include <stdlib.h>#include<pic18f4550.h>#define RS LATCbits.LATC0#define E LATCbits.LATC1#define LCDPORT LATB#define R1 LATDbits.LATD0#define R2 LATDbits.LATD1#define R3 LATDbits.LATD2#define R4 LATDbits.LATD3#define C1 PORTDbits.RD4#define C2 PORTDbits.RD5#define C3 PORTDbits.RD6#define C4 PORTDbits.RD7void delay(){ for(int i=0; i<30000; i++) { }}void sendCommand(unsigned char command){LCDPORT=command;RS=0;delay(); E=1; delay(); E=0; delay();}void sendData(unsigned char data){ LCDPORT=data; RS=1; delay(); E=1; delay(); E=0; delay(); }unsigned char keypad_read(void){ R1 = 0; R2 = 1; R3 = 1; R4 = 1; delay(); if (C1 == 0) return '1'; if (C2 == 0) return '2'; if (C3 == 0) return '3'; if (C4 == 0) return 'A'; R1 = 1; R2 = 0; R3 = 1; R4 = 1; delay(); if (C1 == 0) return '4'; if (C2 == 0) return '5'; if (C3 == 0) return '6';if (C4 == 0) return 'B';R1 = 1; R2 = 1;R3 = 0;R4 = 1; delay();if (C1 == 0) return '7';if (C2 == 0) return '8'; if (C3 == 0) return '9'; if (C4 == 0) return 'C'; R1 = 1; R2 = 1; R3 = 1 R4 = 0;delay();if (C1 == 0) return '0'; if (C2 == 0) return 'D'; if (C3 == 0) return 'E'; if (C4 == 0) return 'F'; return 0xFF; }unsigned char keypad_wait(){ unsigned char key_press = 0xFF do { key_press = keypad_read(); } while (key_press == 0xFF); while (keypad_read() != 0xFF); return key_press;}void main(){TRISB=0x00;TRISD=0xF0; TRISCbits.RC0=0; TRISCbits.RC1=0;unsigned char key_get;sendCommand(0x38); sendCommand(0x01); sendCommand(0x0F); sendCommand(0x06);sendCommand(0x80); while(1) { key_get = keypad_wait(); sendData(key_get); }}
Timer interupt#include<p18f4550.h>void timerInit(void){ T0CON = 0b00000111; TMR0H = 0xED; TMR0L = 0xB0;}void Interrupt_Init(void){ IPEN = 1; INTCON = 0b11100000; TMR0IP = 0;}void interrupt low_priority timerinterrupt(void){ if(TMR0IF == 1) { TMR0ON = 0; TMR0IF = 0; LATB =~LATB; TMR0H = 0xED; TMR0L = 0xB0; TMR0ON = 1; }}void main(void){ TRISB = 0x00; LATB = 0xFF; Interrupt_Init(); timerInit(); TMR0ON = 1; while(1); }
UART
#include<p18F4550.h>#include<stdio.h>void InitUART(){ TRISCbits.RC6 = 0; TRISCbits.RC7 = 1; SPBRG = 77; TXSTA = 0b00100000; RCSTA = 0b10010000;}void SendChar(unsigned char data){ while(TXIF == 0); TXREG = data; }unsigned char GetChar(void){ while(!RCIF); return RCREG; }void main(void){ unsigned char key; InitUART(); while(1) { key=GetChar(); SendChar(key); }}
ADC
#include<stdio.h>#include <p18f4550.h>#define RS LATCbits.LATC0#define E LATCbits.LATC1#define LCDPORT LATBvoid delay(){ unsigned int i; for(i=0;i<30000;i++) { }}void sendCommand(unsigned char command){ LCDPORT=command; delay(); RS=0; delay(); E=1; delay(); E=0; delay();}void sendData(unsigned char data){ LCDPORT=data; delay(); RS=1; delay(); E=1; delay(); E=0; delay();}void InitLCD(void){ sendCommand(0x38); sendCommand(0x01); sendCommand(0x0F); sendCommand(0x06);}void ADCInit(){ TRISEbits.RE2 = 1; ADCON0 = 0b00011101; ADCON1 = 0b00000111; ADCON2 = 0b10101110;}unsigned short Read_ADC(){ GODONE = 1; while(GODONE == 1 ); return ADRES; }void DisplayResult(unsigned short ADCVal){ unsigned char i,text[16]; unsigned short tempv; tempv = ADCVal; ADCVal = (5500/1024)*tempv; sprintf(text,"%04dmv",ADCVal); sendCommand(0x80); for(i=0;i<6;i++) { sendData(text[i]); } sendCommand(0xC0); for(i=0;i<10;i++) { if(tempv & 0x200) { sendData('1'); } else { sendData('0'); } tempv=tempv<<1; }}void main(){ unsigned short Ch_result; TRISB = 0x00; TRISCbits.RC0 = 0; TRISCbits.RC1 = 0; ADCInit(); InitLCD(); while(1) { Ch_result = Read_ADC(); DisplayResult(Ch_result); delay(); delay(); }}
Comments
Post a Comment