Chào mừng đến với Câu Lạc Bộ Sáng Tạo
Chia sẻ kinh nghiệm
Kết nối đam mê
Đang cập nhật thời gian...
BÀI VIẾT NỔI BẬT
Xin chào! Tôi là Ếch Sáng Tạo :-)
Chia sẻ trang




Chuyên mục
Bài mới
Xem nhiều
Thống kê
  • Bài viết: 334/334
  • Thành viên: 10.085
  • Đang online: 3
  • Khách hôm nay: 2.175
  • Khách hôm qua: 4.629
  • Tổng khách: 16.194.426
Bài viết
đo nhiệt độ dùng lm35 - SangTaoClub.Net
đo nhiệt độ dùng lm35
Đăng bởi: haphuong - Thời gian: 21-09-2015, 00:52
Chuyên mục: Thảo luận chung - Lượt xem: 1.712

em đang làm lm35 với pic hiển thị led 7 thanh. nhưng chạy chương trình nó chỉ hiện toàn số 0000 trên led 7thanh. anh chị sửa giúp em với ạ. em dùng mplabX.thanks all!

#include <htc.h>
#include <pic16f887.h>
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 20000000
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF);
__CONFIG(BOR4V_BOR21V & WRT_OFF);
const unsigned char ma_led[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
const unsigned maled[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
unsigned int i,nghin,tram,chuc,donvi;
unsigned int ADCvalue;
void port_init()
{
TRISA0=1;
TRISB=0;
TRISD=0;
PORTB=0xff;
PORTD=0xff;
}
void giatri()
{
nghin=i/1000;
tram=(i-nghin*1000)/100;
chuc=(i-nghin*1000-tram*100)/10;
donvi=i%10;
}
void hienthi()
{
PORTB = maled[donvi];
PORTD = 0b01111111;
__delay_ms(5);
PORTD=0xff;
PORTB= maled[chuc];
PORTD = 0b10111111;
__delay_ms(5);
PORTD=0xff;
PORTB= maled[tram];
PORTD = 0b11011111;
__delay_ms(5);
PORTD=0xff;
PORTB= maled[nghin];
PORTD = 0b11101111;
__delay_ms(5);
PORTD=0xff;
}
void ADCinit()
{
ADCS1 = 0;
ADCS0 = 1;
VCFG1 = 0;
VCFG0 = 0;
CHS3 = 0;
CHS2 = 0;
CHS1 = 1;
CHS0 = 1;
ADFM = 1;
ADON = 1;
__delay_ms (1);
}
void int_init()
{
GIE = 1; //Global Interrupt Enable
PEIE = 1; //Peripheral Interrupt Enable
ADIE = 1; //ADC Interrupt Enable
ADIF = 0; //Clear ADC Interrupt Flag
}
void main()
{
unsigned char TempValue;
unsigned int dien_ap;
port_init();
ADCinit();
int_init();
while(1)
{
dien_ap=5000/1023*ADCvalue;
TempValue=dien_ap/10;
hienthi(TempValue);
}
}


  • Bạn chưa đăng nhập, không thể viết bình luận!
    Bấm vào đây để Đăng nhập hoặc Đăng ký!
  • Vũ Văn Thái lúc 21-09-2015, 08:27
    Bạn viết lại hàm giá trị như sau:

    //Khai báo các biến này trong chương trình
    unsigned char nghin, tram, chuc, donvi;

    void giatri(unsigned int Temp)
    {
          nghin=Temp/1000; //Ngàn
          tram=(Temp%1000)/100; //Trăm
          chuc=(Temp%100)/10; //Chục
          donvi=Temp%10; //Đơn vị
    }

    /********** Khai báo trong MAIN --> while(1) ************************/

          dien_ap=(5000*ADCvalue)/1024;
          TempValue=dien_ap/10;
          giatri(TempValue); //Chuyển đổi sang số
          hienthi(); //Hiển thị lên led 7

    Còn cái nữa là chương trình ngắt đọc ADC của bạn đâu rồi
    Khi đọc thì gán vào biến ADCvalue là OK.
  • Trang 1/1: 1

    Bài viết cùng chuyên mục
    Truyền thông nối tiếp 8051 đọc giá trị ds1307 Truyền thông nối tiếp 8051 đọc giá trị ds1307
    Đăng bởi: philong123 - Thời gian: 13-11-2022, 12:12
    Chuyên mục: Thảo luận chung - Lượt xem: 1.217
    mạch chóp tắt dùng 555 mạch chóp tắt dùng 555
    Đăng bởi: huy1509 - Thời gian: 25-10-2022, 15:47
    Chuyên mục: Thảo luận chung - Lượt xem: 1.199
    mạch khuếch đại âm thanh TDA2030 mạch khuếch đại âm thanh TDA2030
    Đăng bởi: 0399829394 - Thời gian: 30-03-2022, 16:15
    Chuyên mục: Thảo luận chung - Lượt xem: 2.098
    mạch khuyếc đại âm thanh mạch khuyếc đại âm thanh
    Đăng bởi: nguyenvanluu11674 - Thời gian: 10-01-2022, 22:04
    Chuyên mục: Thảo luận chung - Lượt xem: 1.758
    Cần hướng dẫn giao tiếp module wifi esp8266 với AVR hoặc 8051 Cần hướng dẫn giao tiếp module wifi esp8266 với AVR hoặc 8051
    Đăng bởi: tanbinhzero - Thời gian: 30-11-2021, 18:24
    Chuyên mục: Thảo luận chung - Lượt xem: 2.908
    Lập trình AVR giao tiếp i2c Lập trình AVR giao tiếp i2c
    Đăng bởi: chutien1012 - Thời gian: 03-09-2020, 09:39
    Chuyên mục: Thảo luận chung - Lượt xem: 3.435
    Hiển thị LCD16x2 bằng giao thức I2C trong AVR Hiển thị LCD16x2 bằng giao thức I2C trong AVR
    Đăng bởi: lyhaospkt - Thời gian: 28-07-2020, 01:38
    Chuyên mục: Thảo luận chung - Lượt xem: 3.271
    mạch đếm sử dụng ic số mạch đếm sử dụng ic số
    Đăng bởi: lmhcdtk15 - Thời gian: 06-06-2020, 11:08
    Chuyên mục: Thảo luận chung - Lượt xem: 2.442
    LCD 16x2 hiển thị sai chữ LCD 16x2 hiển thị sai chữ
    Đăng bởi: thanh2771998 - Thời gian: 19-12-2019, 23:55
    Chuyên mục: Thảo luận chung - Lượt xem: 3.764
    Chữa máy tính VINACAL 570ES PLUS II liệt phím ON Chữa máy tính VINACAL 570ES PLUS II liệt phím ON
    Đăng bởi: Phamhieu72 - Thời gian: 22-06-2019, 22:02
    Chuyên mục: Thảo luận chung - Lượt xem: 3.294
    
    Chào mừng hieutrang đã tham gia câu lạc bộ sáng tạo!
    Vũ Văn Thái - vuthai
    Hôm nay là sinh nhật của asantasibite, ngoctuictu, anhtu230492, moonmoon, vanhopdt2, nguyenminhvy, huy12345, tuan1996, stepphen01, tuan_cho1999, cowboyamiable, dung2304, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** IP của bạn: 3.137.161.222 ***** Status: Cache Update thành công!