papat96

lm35

Oct 18th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. #include <mega16.h>
  2. #include <delay.h>
  3. //deklarasi variabel global
  4.  
  5.  
  6. //ADC
  7. // Referensi AREF
  8. #define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR))
  9.  
  10. unsigned int read_adc(unsigned char adc_input)
  11. {
  12. ADMUX=adc_input | ADC_VREF_TYPE;
  13. delay_us(10);
  14. ADCSRA|=(1<<ADSC);
  15. while ((ADCSRA & (1<<ADIF))==0);
  16. ADCSRA|=(1<<ADIF);
  17. return ADCW;
  18. }
  19.  
  20.  
  21. //FUNGSI SEVEN SEGMENT
  22. void segment(int angka){
  23. if (angka==0){
  24. PORTD=0x3F;}
  25. if (angka==1){
  26. PORTD=0x6;}
  27. if (angka==2){
  28. PORTD=0x5B;}
  29. if (angka==3){
  30. PORTD=0x4F;}
  31. if (angka==4){
  32. PORTD=0x66;}
  33. if (angka==5){
  34. PORTD=0x6D; }
  35. if (angka==6){
  36. PORTD=0x7D; }
  37. if (angka==7){
  38. PORTD=0x7; }
  39. if (angka==8){
  40. PORTD=0x7F; }
  41. if (angka==9){
  42. PORTD=0x6F; }
  43.  
  44. }
  45.  
  46. //com
  47. void digit(int dig){
  48. if(dig==1){
  49. PORTB=0B0000111;}
  50. if(dig==2){
  51. PORTB=0B0001011;}
  52. if(dig==3){
  53. PORTB=0B0001101;}
  54. if(dig==4){
  55. PORTB=0B0001110;}
  56. }
  57.  
  58. void main(void)
  59. {
  60. int suhu,satuan,puluhan;
  61. int interval;
  62. // Input/Output Ports initialization
  63. // Port A initialization
  64. // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
  65. DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
  66. // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
  67. PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
  68.  
  69. // Port B initialization
  70. // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=Out Bit1=Out Bit0=Out
  71. DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
  72. // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=1 Bit2=1 Bit1=1 Bit0=1
  73. PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (1<<PORTB3) | (1<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);
  74.  
  75. // Port C initialization
  76. // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
  77. DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
  78. // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
  79. PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
  80.  
  81. // Port D initialization
  82. // Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
  83. DDRD=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
  84. // State: Bit7=1 Bit6=1 Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1
  85. PORTD=(1<<PORTD7) | (1<<PORTD6) | (1<<PORTD5) | (1<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (1<<PORTD1) | (1<<PORTD0);
  86.  
  87. // Timer/Counter 0 initialization
  88. // Clock source: System Clock
  89. // Clock value: Timer 0 Stopped
  90. // Mode: Normal top=0xFF
  91. // OC0 output: Disconnected
  92. TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
  93. TCNT0=0x00;
  94. OCR0=0x00;
  95.  
  96. // Timer/Counter 1 initialization
  97. TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
  98. TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
  99. TCNT1H=0x00;
  100. TCNT1L=0x00;
  101. ICR1H=0x00;
  102. ICR1L=0x00;
  103. OCR1AH=0x00;
  104. OCR1AL=0x00;
  105. OCR1BH=0x00;
  106. OCR1BL=0x00;
  107.  
  108. // Timer/Counter 2 initialization
  109. ASSR=0<<AS2;
  110. TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
  111. TCNT2=0x00;
  112. OCR2=0x00;
  113.  
  114. // Timer(s)/Counter(s) Interrupt(s) initialization
  115. TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
  116.  
  117. // External Interrupt(s) initialization
  118. // INT0: Off
  119. // INT1: Off
  120. // INT2: Off
  121. MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
  122. MCUCSR=(0<<ISC2);
  123.  
  124. // USART initialization
  125. // USART disabled
  126. UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
  127.  
  128. // Analog Comparator initialization
  129.  
  130. ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
  131.  
  132. // ADC initialization
  133. ADMUX=ADC_VREF_TYPE;
  134. ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
  135. SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
  136.  
  137. // SPI initialization
  138. // SPI disabled
  139. SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
  140.  
  141. // TWI initialization
  142. // TWI disabled
  143. TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
  144.  
  145. // Global enable interrupts
  146. #asm("sei")
  147.  
  148. while (1)
  149. {
  150. suhu = read_adc(0);
  151. suhu=suhu*0.4887; // 500/1023 (10mV tiap 1 derajat)
  152. puluhan=suhu/10;
  153. satuan=suhu%10;
  154. interval=0;
  155. for(interval; interval<10;interval++){
  156. //scanning
  157. digit(1);
  158. PORTD=0x58; //simbol celcius
  159. delay_ms(1);
  160. digit(2);
  161. PORTD=0x63; //simbol derajat
  162. delay_ms(1);
  163. digit(3);
  164. segment(satuan);
  165. delay_ms(1);
  166. digit(4);
  167. segment(puluhan);
  168. delay_ms(1);
  169.  
  170.  
  171. }
  172.  
  173. }
  174. }
Advertisement
Add Comment
Please, Sign In to add comment