PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 24-08-2010, 11:13 PM   #1
apiker
Đệ tử 1 túi
 
Tham gia ngày: Jul 2010
Bài gửi: 17
:
quả thực là chưa hiểu (newbie)

em có 1 chương trình như thế này:

#include <16f877A.h>
#include <def_877a.h>
#device *=16 ADC=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, LVP, NOCPD, NOWRT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9)
#include <lcd_lib_4bit.c>

int16 temp,high,low;
int8 nghin,tram,chuc,donvi;
int1 mili_volt;
float volt;
int8 const a1[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; // Khong co cham
int8 const a2[10] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10 }; // Co cham

#INT_EXT
void ngatngoai()
{

}
//==================================
void convert_bcd(int16 x)
{
nghin = x / 1000 + 0x30;
temp = x % 1000;
tram = temp / 100 + 0x30;
temp = temp % 100;
chuc = temp / 10 + 0x30;
donvi = temp % 10 + 0x30;
}
//===================================
void main() {

lcd_init();
printf(lcd_putchar,"CT Do dien ap");

setup_adc_ports(AN0);
chs0=0;chs1=0;chs2=0;
setup_adc(ADC_CLOCK_INTERNAL);
delay_us(10);

do {
temp = read_adc();
// Dang so thap phan
volt = (float)(temp*5)/1023;
if (volt < 1) mili_volt=1;
else mili_volt = 0;
// Dang so nguyen
high = (temp*5)/1023;
low = (temp*5)%1023;
// ====Truyen len may tinh
printf("\r\nGia tri ADC = %lu",read_adc());
Printf("\r\nGia tri dien ap = %f",volt);
//================
volt = volt * 1000;

convert_bcd((int16)volt);
lcd_putcmd(0xC0);

printf(lcd_putchar, "V = ");
if (!mili_volt) {lcd_putchar(nghin);lcd_putchar(".");}
lcd_putchar(tram);
lcd_putchar(chuc);
lcd_putchar(donvi);
if (mili_volt) printf(lcd_putchar," mV");
else printf(lcd_putchar," V");

printf("\r\n V = %lu",high);
if(low < 100)
printf(".0%2lu",low);
else
printf(".%lu",low);
} while(true);

}

các anh giải thích hộ em mục đích của chương trình này, và chức năng các câu lệnh trong vòng lặp do while (càng tỉ mỉ càng tốt ạ )
ngoài ra cho em hỏi là với chương trình này thì mình tạo mạch mô phỏng trên proteus như thế nào, và chung hơn là làm thế nào để biết nguyên lí mà tạo một mạch như thế, cần phải biết về những kiến thức gì?
Em mới học, rất mong nhận được những hướng dẫn quý báu của mọi người. có gì ngô nghê mong mọi người bỏ qua. (em cũng chưa biết cho 1 đoạn code vào khung như thế nào, chỉ giúp em với)
apiker vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:33 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam