Sample Code Library

PIC16F877 LCD demo on breadboard prototype

PIC16F877 Driving LCD using PIC16F877 with Proteus Simulation

Introduction This project demonstrates how a PIC16F877 microcontroller can be used to drive an Ampire 128×64 LCD in a Proteus simulation environment. It is a simple but useful microcontroller project for understanding LCD interfacing in embedded systems. The design also highlights interoperability between the Crownhill PIC BASIC Plus Compiler and Proteus VSM. For students and […]

PIC16F877 Driving LCD using PIC16F877 with Proteus Simulation Read More »

PIC18F4550 USB mass storage prototype setup

PICDEM FS USB Mass Storage Device using PIC18F4550 with Proteus Simulation

Introduction This microcontroller project demonstrates how to simulate a USB Mass Storage Device (MSD) using the PIC18F4550 in a Proteus simulation environment. The system mimics how a USB flash drive communicates with a computer, making it highly valuable for learning embedded systems and USB protocol basics. It is especially useful for students and engineers exploring

PICDEM FS USB Mass Storage Device using PIC18F4550 with Proteus Simulation Read More »

Matrix scankey 3×4 for Lcd 2 line For CSS Compiler

#include <16F877.h> #device adc=8 #FUSES NOWDT ,XT #use delay(clock=4000000) char const s[10]={‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’}; void init_mcu (void); void display (void); void display1 (void); void calculate (void); void hex_bcd2(int8 k); /*——-define keypad————*/ #define row0 pin_b0 // input #define row1 pin_b1 // input #define row2 pin_b2 // input #define row3 pin_b3 // input #define col0 pin_b4 // output #define

Matrix scankey 3×4 for Lcd 2 line For CSS Compiler Read More »

One wire bus DS1820 Control For CSS Compiler

One wire bus (DS1820) Control For CSS Compiler

#include <16F877A.h> #device adc=8 #FUSES NOWDT,XT //No Watch Dog Timer #use delay(clock=4000000) #include <Shift_595_C.c> // 25.5 C 0.5 to step #include <read_temp.c> void main(){ setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); set_tris_a(0xff); set_tris_b(0x00); value = 0; display(); delay_ms(100); while(true){ read_ds1820(); value = temp; hex_bcd(value*10); sent_data(); delay_ms(100); } }

One wire bus (DS1820) Control For CSS Compiler Read More »

External interrupt For CSS Compiler

External interrupt For CSS Compiler

#include <16F877.h> #device adc=8 #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #INT_EXT void EXT_ISR(void){ output_toggle(PIN_B7); delay_us(300); } void Init_MCU(void){ enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); ext_int_edge(H_TO_L); set_tris_B(0x01); output_low(pin_B7); } void main(){ Init_MCU(); while (TRUE) { output_toggle(PIN_B6); delay_ms(1000); } }  

External interrupt For CSS Compiler Read More »

Seven segment display 4 digit For CSS Compiler

#include <16F877.h> #device adc=8 #fuses NOWDT,HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG #use delay(clock=4000000) #define sw_up pin_a0 // SWITCH UP #define sw_down pin_a1 // SWITCH DOWN INT16 COUNT; int8 A,B,C,D; //int8 segment[10] ={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//common anode int8 num[10] ={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};//common cathode 0 1 2 3 4 5 6 7 8 9 // 0 1 2

Seven segment display 4 digit For CSS Compiler Read More »

Stepping Motor Control For CSS Compiler

#include <16F877.h> #fuses XT,NOLVP,NOWDT,NOPROTECT #use delay(clock = 4000000) #use fast_io(A) #use fast_io(B) byte num[5] = {0x00,0x01,0x02,0x04,0x08}; int8 disp,i; void Forward(){ for(i=0; i<=4;i++){ disp =num[i]; output_b(disp); delay_ms(200); } } void Backward(){ for(i=4;i>0;i–){ disp =num[i]; output_b(disp); delay_ms(200); } } void Stop(){ disp =0; output_b(disp); delay_ms(50); } void main(){ setup_adc(adc_off); set_tris_a(0xFF); set_tris_b(0B00000000); stop(); while(true){ if(!input(pin_a0)){ do{ Forward(); }

Stepping Motor Control For CSS Compiler Read More »

I2C bus for 24LC16 For CSS Compiler

  #include <16F877.h> #device adc=8 #FUSES NOWDT ,XT #use delay(clock=4000000) #use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3) #INCLUDE “LCD_4BIT.C” #include “I2C_24LCxx.c ” int8 value,setpoint=112; void main(){ setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); set_tris_c(0B10000000); // 1000 0000 PortC set_tris_d(0B00000000); // 0000 0000 Portd is Output lcd_init(); Write_eeprom_24LCxx(0x01,setpoint); lcd_init(); lcd_ROW_COL(1,0); // defind ddram address for put string lcd_putc(” KCHI_MICRO.PIC”); lcd_ROW_COL(2,0); lcd_putc(“READ EEPROM

I2C bus for 24LC16 For CSS Compiler Read More »