Toll-Free Customer Support 24/7

Serial 8 Channel AC 230V SSR and Dimmer


/*
* Project name:
Serial 8 Channel AC 230V SSR and Dimmer
* Copyright
(c) Researchdesignlab.com
* Test configuration:
MCU: PIC16F877A
Dev.Board: PIC
Oscillator: 20.0 MHz
Software: mikroC PRO for PIC v 4.6

*/


// LCD module connections
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;

sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;
// End LCD module connections

sbit S1 at RB0_bit;
sbit S2 at RB1_bit;
sbit S3 at RB2_bit;
sbit S4 at RB3_bit;
sbit S5 at RB4_bit;
sbit S6 at RB5_bit;
sbit S7 at RB6_bit;
unsigned char Channel=0,PER=0,ADD;

void CONVERT_DISPLAY(unsigned int d)
{

unsigned char dig1,dig2,dig3,dig[3];
unsigned char x;
unsigned char temp;
temp=d;
temp=temp/10;
dig1=d%10;
dig2=temp%10;
dig3=temp/10;


dig[0]=dig3;
dig[1]=dig2;
dig[2]=dig1;


for(x=0;x<3;x++)
{
temp=dig[x]|0x30;

Lcd_Chr_Cp(temp);
}


}

void CONVERT_DISPLAY1(unsigned int d)
{

unsigned char dig1,dig2,dig3,dig[3];
unsigned char x;
unsigned char temp;
temp=d;
temp=temp/10;
dig1=d%10;
dig2=temp%10;
dig3=temp/10;


dig[0]=dig3;
dig[1]=dig2;
dig[2]=dig1;


for(x=0;x<3;x++)
{
temp=dig[x]|0x30;

UART1_Write(temp);
}


}

void main() {


UART1_Init(9600); // Initialize UART module at 9600 bps
Delay_ms(100);
Lcd_Init(); // Initialize LCD
Delay_ms(200);

Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,2,"-- 3 Dimmer--");
Delay_ms(200);
Channel=0;
while(1)
{
if(S1==0)
{
if(Channel<8)
Channel++;
ADD=Channel+64;
Lcd_Out(2, 1, "Ch= ");
Lcd_Chr_Cp(ADD);
Delay_ms(200);
}
if(S2==0)
{
if(Channel>1)
Channel--;
ADD=Channel+64;
Lcd_Out(2, 1, "Ch= ");
Lcd_Chr_Cp(ADD);
Delay_ms(200);
}

if(S3==0)
{
if(PER<100)
PER++;
Lcd_Out(2, 7, "Per= ");
CONVERT_DISPLAY(PER);
Delay_ms(200);
}
if(S4==0)
{
if(PER>0)
PER--;
Lcd_Out(2, 7, "Per= ");
CONVERT_DISPLAY(PER);
Delay_ms(200);
}

if(S5==0)
{
ADD=Channel+64;
UART1_Write(ADD);
CONVERT_DISPLAY1(PER);
Delay_ms(200);
}


if(S6==0)
{
UART1_Write('N');
Lcd_Out(2, 2, " ALL ON 100% ");
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,2,"-- 3 Dimmer--");
}

if(S7==0)
{
UART1_Write('S');
Lcd_Out(2, 2, " ALL OFF 0% ");
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,2,"-- 3 Dimmer--");
}

}

}

Back to top