![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#1 |
|
Đệ tử 4 túi
Tham gia ngày: Oct 2008
Bài gửi: 71
: |
Mình đang làm mạch giao tiếp giữa PIC877A với LCD 16x2,viết ở chế độ 4 bit.Đọc giá trị ADC từ kênh AN0 rồi hiển thị lên LCD.Mình đọc trên forum/net,và viết lại như sau:
Code:
while(1)
{
i++;
value =(float) read_adc();
value = value*0.48828125;
if (i==500)
{
convert_bcd((int16)value);
i=0;
}
{
lcd_gotoxy(1,1);
printf(LCD_putc,"Nhiet do:");
LCD_putc(high);
LCD_putc(low);
LCD_putc(".");
LCD_putc(digit);
}
delay_ms(3000);
}
// void convert_bcd(int16 x)
{
high=x/100;
medium=x%100;
low=medium/10;
digit=medium%10;
low = low + 0x30;
high = high + 0x30;
digit=digit+0x30;
}
Và nếu viết trực tiếp như cách dưới có được ko??? Code:
lcd_init();
read=read_adc();
read =read*0.48828125;
printf(lcd_putc,"\rHien thi: %u",read);
delay_us(20);
Mình đã nạp thử ct nhưng chạy ko đúng! Thanks ! thay đổi nội dung bởi: tienchuan, 26-10-2009 lúc 11:14 AM. |
|
|
|
|
|
#2 |
|
Đệ tử 3 túi
Tham gia ngày: Feb 2009
Bài gửi: 47
: |
- LCD chỉ hiển thị ký tự. Với các số đếm bạn muốn hiển thị lên LCD thì phải chuyến nó thành mã ASCII mà mã ASCII của một số đếm = chính số đó + 0x30 (=> mục đích của việc cộng thêm 0x30 là để chuyển số đó thành ký tự chứ ko phải là số đếm).
- VD: Muốn hiển thị số 0 thì cần 0 + 0x30 để thành ký tự "0". - Còn với Code:
read =read*0.48828125; printf(lcd_putc,"\rHien thi: %u",read); |
|
|
|
|
|
#3 | |
|
Đệ tử 4 túi
Tham gia ngày: Oct 2008
Bài gửi: 71
: |
Trích:
Thanks all! |
|
|
|
|
![]() |
|
|