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! |
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! |
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 |
#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("?"); } } } |
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!
|
1 Attachment(s)
Hì, có gì đâu!!!!!. Mấy cái file đó cơ bản mà!!!!!!!.
|
Múi giờ GMT. Hiện tại là 09:34 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam