Đo nhiệt độ hiển thị kết quả trên màn hình máy tính
Download Hyper terminal for Win7 tại đây
Code
Soure file Usart.c
#include
#include
#include "i2c.h"
__CONFIG(HS & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config. word
__CONFIG(BORV21); //2nd config. word
#define _XTAL_FREQ 4000000
//Global variables
unsigned char cmd_byte;
unsigned char temp;
//Interrupt Service Routine
void interrupt ISR(void)
{
}
//Required main function
void main(void)
{
char i,c;
char buf[10];
BRG16 = 0;
// BAUDCTL = BAUDCTL & 0xF7;
TXSTA = 0x24; //Che do high-speed, cho phep phat du lieu
RCSTA = 0x90; //Nhan du lieu lien tuc, dung cac chan TX/RX
//baud rate = Fosc / (16*(n+1))
//n = Fosc/((baud rate)*16) - 1
SPBRG = 25; //Gia tri ung voi baud rate = 9600, xtal 4 MHz
//SPBRGH khong can dung den
TRISC3 = 1; //configure PORTC<3> as input
TRISC4 = 1; //configure PORTC<4> as input
TRISB = 0; //make PORTB an output
//Set the slew rate and baud rate for 50 kHz operation
SMP = 1; //set for Standard speed slew rate
SSPADD = 19; //set the required baud rate (warning!)
//Configure as I2C master with Fosc/4 clock source
SSPM3 = 1; //set to I2C master mode with Fosc/4 clock source
SSPEN = 1; //Enable SDA and SCL pins to operate in I2C mode
SSPCON2 = 0; //ensure SSPCON2 is cleared
//Put '00000000' into variable cmd_byte.
//This is the read command that will be sent to the TC74
cmd_byte = 0x00;
while (1) {
// while(RCTF==0)
// C=RCREG;
// TXREG=c;
// while (TRMT==0)
SEN = 1; //Initiate a START condition
while (SEN); //
SSPBUF = 0x90; //send address of TC74 w/0 in the LSB (write action)
while (RW); //wait for write to complete
while (ACKSTAT); //Wait for ACK from TC74
while (TRMT == 0);
SSPBUF = cmd_byte; //send READ command
_delay(8);
while (RW);
//------------------
while (ACKSTAT); //Get ACK from TC74
while (TRMT == 0);
RSEN = 1; //send repeated start
while (RSEN);
SSPBUF = 0x91; //send TC74 address with READ bit set
_delay(8);
while (RW);
//------------------
while (ACKSTAT);
while (TRMT == 0); //Get ACK from TC74
RCEN = 1; //enable receive mode
while (RCEN); //wait until temperature data received
temp = SSPBUF;
//------------------
ACKDT = 1; //NACK
ACKEN = 1; //send NACK condition
while (ACKEN);
PEN = 1; //send STOP condition
while (PEN);
//------------------
// PORTB = temp;
// while (GODONE);
// temp = ADRESH;
//Gia su da co ket qua A/D
//Xoa bo dem ky tu
for (i = 0; i < 10; i++) buf[i] = 0;
//Chuyen doi tu unsigned char sang ky tu ASCII
utoa(buf, temp, 10);
i = 0;
while (buf[i] != 0) {
TXREG = buf[i];
i++;
while (TRMT == 0);
}
TXREG = '\n';
while (TRMT == 0);
TXREG = '\r';
for (i = 0; i < 10; i++) __delay_ms(100);
}
}
Header file i2c.h
#ifndef _I2C_H_
#define _I2C_H_
void i2c_start();
void i2c_stop();
void i2c_init();
unsigned char i2c_read(unsigned char ack);
unsigned char i2c_write(unsigned char d);
#endif
No comments:
Post a Comment
Cám ơn bạn đã ghé ngonnguc.blogspot.com. Bạn có ý kiến thắc mắc hay bình luận gì về bài viết này vui lòng click nhận xét. Để lưu bài viết vào trình duyệt web hoặc tài khoản lưu trữ và chia sẻ bookmark trực tuyến, hãy nhấn vào đây. Bạn cũng có thể đọc bài viết trên blog thông qua các công cụ đọc tin Feed bằng link này hoặc đăng ký nhận bài viết mới qua email. Ngoài ra bạn cũng có thể cho địa chỉ blog này vào Favorites (Internet Explorer) hoặc Bookmark (Mozilla Firefox) để tiện việc theo dõi. Nếu đang làm blog tại Google Blogger bạn cũng có thể lưu blog này ở chế độ theo dõi trong hồ sơ, đó cũng là cách mang lại nguồn khách viếng thăm blog bạn. Tôi hy vọng bạn tìm thấy những thú vị từ trang này.Bạn có thể gõ tiếng việt bằng công cụ có trên blog