Rev Author Line No. Line
2596 kaklik 1 #include ".\main.h"
2  
2600 kaklik 3 #define LED1 PIN_C6 //CHANGE PIN_XX TO YOUR LED PIN NUMBER, EX: PIN_A5
4 #define LED2 PIN_C5 //CHANGE PIN_XX TO YOUR LED PIN NUMBER, EX: PIN_A5
2743 kaklik 5 #define LED3 PIN_C4 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
6 #define LED4 PIN_D3 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
2596 kaklik 7  
2743 kaklik 8 #define S1 PIN_B0 //CHANGE PIN_XX TO YOUR LED PIN NUMBER, EX: PIN_A5
9 #define S2 PIN_B1 //CHANGE PIN_XX TO YOUR LED PIN NUMBER, EX: PIN_A5
10 #define S3 PIN_D0 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
11 #define S4 PIN_D1 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
2596 kaklik 12  
2743 kaklik 13 #define BEEP PIN_D2 //piezo beeper
14  
15 #define LCD_ENABLE_PIN PIN_E0 ////
16 #define LCD_RS_PIN PIN_E1 ////
17 #define LCD_RW_PIN PIN_E2 ////
18 #define LCD_DATA4 PIN_D4 ////
19 #define LCD_DATA5 PIN_D5 ////
20 #define LCD_DATA6 PIN_D6 ////
21 #define LCD_DATA7 PIN_D7
22 #include <lcd.c>
23  
24 void sound_beep( unsigned int lenght, int16 frequency)
2600 kaklik 25 {
2743 kaklik 26 unsigned int i;
27  
28 for(i=0;i<=lenght;i++)
29 {
30 output_toggle(BEEP);
31 delay_us(1/frequency);
32 }
2600 kaklik 33 }
34  
2596 kaklik 35 void main()
36 {
2744 kaklik 37 unsigned int16 setpoint=43;
2743 kaklik 38 unsigned int16 napeti;
2600 kaklik 39 unsigned int16 plneni=0;
2743 kaklik 40 unsigned int1 button_press; // semafor pro cteni tlacitek
2596 kaklik 41  
42 setup_adc_ports(sAN0|VSS_VDD);
43 setup_adc(ADC_CLOCK_DIV_32);
44 setup_spi(SPI_SS_DISABLED);
45 setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
46 setup_timer_1(T1_DISABLED);
47 setup_timer_2(T2_DIV_BY_1,255,1);
48 setup_ccp1(CCP_PWM);
49 setup_ccp2(CCP_PWM);
50 setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
51 setup_oscillator(OSC_8MHZ);
52  
53 set_pwm1_duty(0);
54 set_pwm2_duty(0);
55  
2600 kaklik 56 output_high(LED1);
57 output_high(LED2);
58 output_high(LED3);
59 output_high(LED4);
2744 kaklik 60 output_low(BEEP);
2600 kaklik 61  
2744 kaklik 62 lcd_init();
63  
64 lcd_putc("\fHVPS01A 2013 MLAB\n");
65 Delay_ms(1000);
2596 kaklik 66  
2743 kaklik 67 lcd_putc("\f");
2596 kaklik 68  
69 while(true)
70 {
2743 kaklik 71  
2596 kaklik 72 set_adc_channel(1);
73 delay_us(100);
2743 kaklik 74 napeti = (napeti+read_adc())/2;
2596 kaklik 75  
76 if (napeti <= setpoint)
77 {
2600 kaklik 78 if (plneni < 300) plneni++;
79 output_low(LED2);
2596 kaklik 80 }
81 else
82 {
83 if (plneni > 0) plneni--;
2600 kaklik 84 output_high(LED2);
2596 kaklik 85 }
2743 kaklik 86 set_pwm1_duty(plneni);
87 set_pwm2_duty(1023-plneni);
88  
89 lcd_gotoxy(1,1);
90 printf(lcd_putc,"Actual: %lu V ",napeti);
91 lcd_gotoxy(1,2);
92 printf(lcd_putc,"Set: %lu V ",setpoint);
2596 kaklik 93  
94  
2743 kaklik 95 if(button_press==false ) // tlacitka se ctou znovu pouze pokud v redchozim cyklu nebyla zmacknuta.
96 {
97 if(!input(S1))
98 {
99 delay_ms(20);
100 if(!input(S1))
101 {
102 button_press=true;
103 sound_beep(100,700);
104 if(setpoint < 0xfa )setpoint+=5;
105 }
106 }
107  
108 if(!input(S2))
109 {
110 delay_ms(20);
111 if(!input(S2))
112 {
113 button_press=true;
114 sound_beep(100,600);
115 if(setpoint > 0x05 ) setpoint-=5;
116 }
117 }
118  
119 if(!input(S3))
120 {
121 delay_ms(20);
122 if(!input(S3))
123 {
124 button_press=true;
125 sound_beep(100,500);
126 if(setpoint < 0xff )setpoint++;
127 }
128 }
129  
130 if(!input(S4))
131 {
132 delay_ms(20);
133 if(!input(S4))
134 {
135 button_press=true;
136 sound_beep(100,400);
137 if(setpoint > 0x00 ) setpoint--;
138 }
139 }
140 }
141  
142 if ( input(S1) && input(S2) && input(S3) && input(S4) ) button_press=false;
143  
2600 kaklik 144 output_toggle(LED1);
145 delay_ms(10);
2596 kaklik 146 }
147  
148 }