View Full Version : kỹ thuật bảng dùng ngôn ngữ C
pucapuca123
15-07-2011, 12:13 AM
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!
dinhnambkhn
25-07-2011, 01:06 PM
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!
haneishun
26-07-2011, 01:51 AM
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
pstin
26-07-2011, 11:38 PM
#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("?");
}
}
}
king0205
02-08-2011, 11:49 PM
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!
pstin
20-08-2011, 10:51 AM
Hì, có gì đâu!!!!!. Mấy cái file đó cơ bản mà!!!!!!!.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.