Abstrak
Pada percobaan kali ini akan Memahami tentang bagaimana
membuat program yang menggunakan ADC pada AVR
ATMEGA8535, lalu mengubah hasil konversi dalam
satuan biner menjadi satuan BCD dan dikirmkan ke PC
melalui komunikasi serial USART..
1.
PENDAHULUAN
2.
Mampu
membuat
program
yang
menggunakan
ADC
pada
AVR
ATMEGA8535 untuk mengkonversi input
pada tegangan analog menjadi digital.
3.
Mampu
membuat
program
untuk
mengubah hasil konversi dalam satuan
biner menjadi satuan BCD dan dikirmkan
ke PC melalui komunikasi serial USART.
STUDI PUSTAKA
sambungkan dengan pc
jalankan program
.
inisalisai perangkat ke pc
jalankan program
4.
KESIMPULAN
DAFTAR PUSTAKA
[1]
[2]
http://elektronika-dasar.web.id/adc-analogto-digital-convertion/
Lampiran
[40]
[41]
40. kirim_perintah_lcd();
[42]
41. delay_ms(5);
[43]
42.
[44]
[45]
44. kirim_perintah_lcd();
[46]
45. delay_us(150);
[47]
46.
[48]
[49]
48. kirim_perintah_lcd();
[50]
49. delay_us(50);
[51]
50.
[52]
[53]
52. kirim_perintah_lcd();
[54]
53. delay_us(50);
[55]
54.
[56]
[57]
56. kirim_perintah_lcd();
[58]
57. delay_us(50);
[59]
58.
[60]
[61]
60. kirim_perintah_lcd();
[62]
61. delay_ms(2);
[63]
62.
[64]
[65]
64. kirim_perintah_lcd();
[66]
65. delay_us(50);
[67]
66.
[68]
67.
[69]
[70]
69. kirim_perintah_lcd();
[71]
70. delay_us(50);
[72]
71. }
[73]
72.
[74]
[75]
74.
[76]
[77]
76. {
[3]
2. #include <mega8535.h>
[4]
3. #include <delay.h>
[5]
4. #include <string.h>
[6]
5. #include <stdio.h>
[7]
6.
[8]
7. #define RS PORTD.5
[9]
8. #define RW PORTD.6
[10]
9. #define E PORTD.7
[11]
[12]
[13]
12.
[14]
[15]
14.
[16]
[17]
16. {
[18]
17. DDR_DATA=0xFF;
[19]
18. RS=0;
[20]
19. RW=0;
[21]
20. E=1;
[22]
21.
[23]
22. PORT_DATA=dataLCD;
[24]
23. E=0;
[25]
24. }
[26]
25.
[27]
[28]
27. {
[29]
28. DDR_DATA=0xFF;
[30]
29. RS=1;
[31]
30. RW=0;
[32]
31. E=1;
[33]
32. PORT_DATA=dataLCD;
[34]
33. E=0;
[35]
34. }
[36]
35.
[37]
[38]
37. {
[39]
38. delay_ms(20);
[78]
[79]
78. (((input%10000)/1000)*4096)+
[80]
79.
((((input%10000)%1000)/100)*256)
+
[81]
80.
(((((input%10000)%1000)%100)/10)
*16)+
char
i,
temp,
[82]
81.
((((input%10000)%1000)%100)%10)
;
[83]
82. return(hasil);
[84]
83. }
[85]
84.
[86]
[87]
86.
[88]
[89]
88. {
[90]
[91]
[92]
91.
ADMUX=adc_input|ADC_VREF
_TYPE;
[93]
92.
[94]
93. ADCSRA|=0x40;
[95]
94.
[96]
95.
[97]
[98]
[99]
98. data_adc=0x0000;
&
[129] 128.
temp=(hasil>>12
0x0F)+0x30;
&
0x0F)
[134] 133.
temp=(hasil>>4&
+0x30;
[105] 104. }
[106] 105.
0x0F)
[174] 35. }
[175] 36.
[176] 37. void init_lcd (void)
[177] 38. {
[178] 39. delay_ms(20);
[179] 40. dataLCD = 0x30;
Source code tugas 2
[142] #include <mega8535.h>
[143] 4. #include <delay.h>
[144] 5. #include <string.h>
[145] 6. #include <stdio.h>
[146] 7.
[147] 8. #define RS PORTD.5
[148] 9. #define RW PORTD.6
[149] 10. #define E PORTD.7
[150] 11. #define PORT_DATA PORTA
[151] 12. #define DDR_DATA DDRA
[152] 13.
[153] 14. unsigned char dataLCD;
[154] 15.
[155] 16. void kirim_perintah_lcd (void)
[156] 17. {
[157] 18. DDR_DATA=0xFF;
[158] 19. RS=0;
[159] 20. RW=0;
[160] 21. E=1;
[161] 22.
[162] 23. PORT_DATA=dataLCD;
[163] 24. E=0;
[164] 25. }
[165] 26.
[166] 27. void tulis_data_ram_lcd (void)
[167] 28. {
[168] 29. DDR_DATA=0xFF;
[169] 30. RS=1;
[170] 31. RW=0;
[171] 32. E=1;
[172] 33. PORT_DATA=dataLCD;
[173] 34. E=0;
[248] 109.{unsigned
adc_input=0x01;
[214] 75.
[215] 76. unsigned long int bin2BCD (unsigned
int input)
char
[250] 111.ADMUX=ADC_VREF_TYPE;
[251] 112.ADCSRA=0x87;
[252] 113.SFIOR&=0xEF;
[253] 114.UCSRA=0x00;
[254] 115.UCSRB=0x18;
[220] 81.
(((((input%10000)%1000)%100)/10)*16)+
temp,
[249] 110.DDRA=0x00;
[216] 77. {
i,
[223] 84. }
[259] 120.while(1)
[224] 85.
[226] 87.
[263] 124. }
[264] 125.hasil=read_adc(adc_input);
[265] 126.hasil=hasil*49;
[266] 127.hasil=bin2BCD(hasil);
[271] 132.putchar(temp);
[234] 95.
[235] 96.
[273] 134.putchar(temp);
[274] 135.putchar(',');
[275] 136.putchar('V');
[239] 100.temp=ADCL;
[277] 138.
[240] 101.data_adc=ADCH;
[241] 102.data_adc<<=8;
[279] 140.
[242] 103.data_adc|=temp;
[280] 141.
[281] 142.putchar(0x0D);
[244] 105.}
[282] 143.putchar(0x0A);
[245] 106.
[283] 144.delay_ms(1000);
145.}}