Mạch đo tốc độ động cơ dùng PIC 16F877a + led 7 thanh
Code mã nguồn:
#include <16F877A.h>
#fuses HS, NOWDT, NOPROTECT, PUT, NOLVP
#use delay(clock=24000000)
#use fast_io(c)
#use fast_io(d)
static unsigned char digit[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
unsigned int8 DV, CHU, TRA, NGH, CHN, TRN, TRI;
unsigned int16 Count=0;
unsigned int32 TanSo, Temp=0;
void Hienthi(unsigned int32 Tanso)
{
DV=Tanso%10;
CHU=(Tanso%100)/10;
TRA=(Tanso%1000)/100;
NGH=(Tanso%10000)/1000;
CHN=(Tanso%100000)/10000;
TRN=(Tanso%1000000)/100000;
TRI=Tanso/1000000;
output_d(0xfe);
output_c(digit[TRI]);
delay_ms(1);
output_d(0xfd);
output_c(digit[TRN]);
delay_ms(1);
output_d(0xfb);
output_c(digit[CHN]);
delay_ms(1);
output_d(0xf7);
output_c(digit[NGH]);
delay_ms(1);
output_d(0xef);
output_c(digit[TRA]);
delay_ms(1);
output_d(0xdf);
output_c(digit[CHU]);
delay_ms(1);
output_d(0xbf);
output_c(digitDiễn viA�n : );
delay_ms(1);
output_d(0xff);
output_c(0xff);
delay_ms(1);
}
#INT_EXT
void ngat_RB0()
{
Temp++;
}
#INT_RTCC
void ngat_timer0(void)
{
set_timer0(2);
Count++;
if(Count==92)
{
disable_interrupts(GLOBAL);
Tanso=Temp;
Count=0;
Temp=0;
enable_interrupts(GLOBAL);
}
}
void main()
{
set_tris_b(0xff);
set_tris_c(0x00);
output_c(0xff);
set_tris_d(0x00);
output_d(0xff);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_adc_ports(no_analogs);
set_timer0(2);
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_EXT);
ext_int_edge(H_to_L);
enable_interrupts(GLOBAL);
while(1)
{
Hienthi(Tanso);
}
}
( Full code C)
Khi nhấn nút "Tải Về Máy", bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút hiện ra ở góc phải phía trên, nhấn vào để đến trang download
Điện Tử | Tin Học - Chia sẻ kiến thức - Kết nối đam mê điện tử