|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
|
15-07-2011, 12:13 AM | #1 |
Đệ tử 5 túi
Tham gia ngày: Aug 2010
Bài gửi: 116
: |
kỹ thuật bảng dùng ngôn ngữ C
chào các bạn!
các bạn cho mình hỏi chút về kỹ thuật lập bảng dùng ngôn ngữ C với. giả sử mình có 5 giá trị.(100,102,105,106,110) giờ mình muốn cho tất cả các giá trị đó vào 1 cái mảng aray[] chẳng hạn. sau đó mình sẽ đọc giá trị ở 1 chân VDk và so sánh với cái bảng trên nếu có giá trị 100 thì sẽ hiện chữ A lên LCD. nếu có giá trị 102 thì sẽ hiện chữ B lên LCD nếu có giá trị 105 thì sẽ hiện chữ c lên LCD. nếu có giá trị 106 thì sẽ hiện chữ D lên LCD nếu có giá trị 110 thì sẽ hiện chữ E lên LCD. ..... cứ như vậy đến hết thì thui. vậy mình sẽ phải lập trình như thế nào? các bạn cho mình cái thuật toán với có code vd thì càng tốt. P/S: nếu mình đọc giá trị 107 ko có trong bảng nhưng nó gần với giá trị 106 nhất thì sẽ vẫn hiển thị chữ D như giá trị 106 thì mình phải làm như thế nào? mong các bạn góp ý! cám ơn nhiều! |
25-07-2011, 01:06 PM | #2 |
Đệ tử 2 túi
Tham gia ngày: Feb 2011
Bài gửi: 45
: |
cai nay khoi tao mang de hien thi A,B....tuong ung.
ban khoi tao mang vd:int mang[5]={..........cac gia tri tuong ung A,B....}; vd neu co gia tri 100 thi portA=mang[1]; gia tri 102 thi portA=mang[2].. ban down vai code co san ve led 7 thanh ve lam thu vai cai la hieu thoi!than! |
26-07-2011, 01:51 AM | #3 |
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 24
: |
void lcd_put_int(int16 num){
int16 temp; unsigned char i = 0, c[5];???? temp = num; if (temp != 0) { while(temp){ c[i++] = temp%10; ???? temp /= 10;?????? } while(i) lcd_putc(c[--i] + '0');?????? } else lcd_putc('0');?????? } va lam the nao de hien thi so thap phan 123,4 len LCD ??? ai co the giai thick tung cho em danh dau ???? dc ko a.em moi hoc len chua hieu ro cho nay lam |
26-07-2011, 11:38 PM | #4 |
Đệ tử 7 túi
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
: |
#include <16F877A.h>
#include <DEFS_16F877A.h> #device *=16 ADC=10 #include <stdlib.h> #include <ctLCD.c> #include <ds1307_16F877A.c> #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG #use delay(clock=4000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8) //=========================functions use======================================== const unsigned char aray[5]={100,102,105,106,110}; int16 adc1,ad1,ad2; //======================================functions use=========================== //********************* Ham main ************************* void main() { set_tris_B(0xf9); set_tris_D(0); set_tris_E(0); set_tris_A(0xff); lcd_init(); setup_ADC(ADC_CLOCK_INTERNAL); set_ADC_channel(0); delay_us(10); While(true) { adc1=read_ADC(ADC_START_AND_READ); delay_us(10); ad1=adc1/100; ad2=adc1%100; lcd_gotoxy(1,2); lcd_putc(ad1/10+0x30); lcd_gotoxy(2,2); lcd_putc(ad1%10+0x30); lcd_gotoxy(3,2); lcd_putc(ad2/10+0x30); lcd_gotoxy(4,2); lcd_putc(ad2%10+0x30); if((adc1>=aray[0])&&(adc1<((aray[0]+aray[1])/2))) { lcd_gotoxy(1,1); lcd_putc("A"); } else if((adc1>=((aray[0]+aray[1])/2))&&(adc1<((aray[1]+aray[2])/2))) { lcd_gotoxy(1,1); lcd_putc("B"); } else if((adc1>=((aray[1]+aray[2])/2))&&(adc1<((aray[2]+aray[3])/2))) { lcd_gotoxy(1,1); lcd_putc("C"); } else if((adc1>=((aray[2]+aray[3])/2))&&(adc1<((aray[3]+aray[4])/2))) { lcd_gotoxy(1,1); lcd_putc("D"); } else if((adc1>=((aray[3]+aray[4])/2))&&(adc1<=aray[4])) { lcd_gotoxy(1,1); lcd_putc("E"); } else { lcd_gotoxy(1,1); lcd_putc("?"); } } } |
02-08-2011, 11:49 PM | #5 |
Đệ tử 1 túi
Tham gia ngày: Dec 2008
Bài gửi: 12
: |
bạn viết tới đây mà không cho thư viện. Chứ anh em mới nhập môn chép giống bạn rồi dịch ra--> không biết tại sao báo lỗi. Giúp thi giúp cho trót. Thanks!
|
20-08-2011, 10:51 AM | #6 |
Đệ tử 7 túi
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
: |
Hì, có gì đâu!!!!!. Mấy cái file đó cơ bản mà!!!!!!!.
|
|
|