![]() |
555 làm ADC điều khiển tốc độ nhấp nháy đèn led
1 Attachment(s)
Chào anh em. Mình đang viết cái code chạy led nhiều chế độ dùng 555 điều chỉnh tốc độ. Không hiểu sao khi 555 kích 4 xung thì nó lại có tình trạng như reset ban đầu. Ngồi đọc lại code mà dò k ra, chắc kiến thức còn non quá. Nhờ anh em chỉ giúp. Rất cám ơn anh em.
Code: (code này mình chưa viết lại cho gọn, mong anh em thông cảm nhé) ************************************************** ***** #include <16F877A.h> #fuses NOWDT, XT, NOLVP #device *=16 ADC=8 #use delay(clock=4000000) // 4 MHz int adc; void flash_pattern_0() { byte i; byte led; led = 0b10000000; for (i = 0; i < 8; i++) { output_b(led); delay_ms(adc+50); led >>= 1; } } void flash_pattern_1() { byte i; byte led; led = 1; for (i = 0; i < 8; i++) { output_b(led); delay_ms(adc+50); led <<= 1; } } void flash_pattern_2() { output_b(0b10000001); delay_ms(adc+50); output_b(0b01000010); delay_ms(adc+50); output_b(0b00100100); delay_ms(adc+50); output_b(0b00011000); delay_ms(adc+50); output_b(0b00100100); delay_ms(adc+50); output_b(0b01000010); delay_ms(adc+50); output_b(0b10000001); delay_ms(adc+50); } void flash_pattern_3() { output_b(0b10000000); delay_ms(adc+50); output_b(0b01000000); delay_ms(adc+50); output_b(0b10100000); delay_ms(adc+50); output_b(0b01010000); delay_ms(adc+50); output_b(0b10101000); delay_ms(adc+50); output_b(0b01010100); delay_ms(adc+50); output_b(0b10101010); delay_ms(adc+50); output_b(0b01010101); delay_ms(adc+50); output_b(0b00101010); delay_ms(adc+50); output_b(0b00010101); delay_ms(adc+50); output_b(0b00001010); delay_ms(adc+50); output_b(0b00000101); delay_ms(adc+50); output_b(0b00000010); delay_ms(adc+50); output_b(0b00000001); delay_ms(adc+50); } void sangdon() {output_b(0x01); delay_ms(adc+50); output_b(0x03); delay_ms(adc+50); output_b(0x07); delay_ms(adc+50); output_b(0x0F); delay_ms(adc+50); output_b(0x1F); delay_ms(adc+50); output_b(0x3F); delay_ms(adc+50); output_b(0x7F); delay_ms(adc+50); output_b(0xFF); delay_ms(adc+50); } void dung10s() {output_b(0xFF); delay_ms(10000); } void chop3lan() {int i; for(i=0;i<3;i++) {output_b(0x00); delay_ms(adc+500); output_b(0xFF); delay_ms(adc+500); } } void main() { //set_tris_b(0); // set as output int adc,read; output_b(0x00); setup_ADC(ADC_clock_internal); setup_ADC_ports(AN0); set_ADC_channel(0); while (true) { read=read_adc(); adc=(10000*read)/256; delay_ms(5); flash_pattern_0(); flash_pattern_1(); flash_pattern_2(); flash_pattern_3(); sangdon(); dung10s(); chop3lan(); } } ********************************************* Sơ đồ mạch: |
Múi giờ GMT. Hiện tại là 06:52 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam