基于PIC单片机数字式温度计电路设计与仿真

2011-10-21 06:06田苗法
大众科技 2011年5期
关键词:北京航空航天大学电路设计液晶

田苗法

(安徽机电职业技术学院,安徽 芜湖 241000)

基于PIC单片机数字式温度计电路设计与仿真

田苗法

(安徽机电职业技术学院,安徽 芜湖 241000)

文章采用PIC单片机和数字温度传感器TC74设计数字式温度计,硬件电路设计简单,工作可靠,易于实现,程序设计采用C语言编程实现,最后利用电路仿真软件proteus对电路进行仿真。

PIC单片机;数字式温度计;电路设计

本设计主控制芯片采用 16F877A单片机,该单片机内置I2C总线模块,利用该模块可以更方便地跟 I2C芯片进行通信,简化了C程序代码设计。利用I2C器件TC-74将温度转变为电信号,然后发给单片机,单片机对数据进行分析和计算等处理,最后通过1602液晶显示屏显示温度值。

(一)各元件简介

1.PIC16F877A单片机

PIC16F877A单片机是美国Microchip公司生产的8位单片机,具有独特的RISC结构,即数据总线和指令总线分离的哈佛结构,该结构具有执行效率高和速度快等优点。另外,片内带有EEPROM、A/D转换器、USART通信模块、MSSP通信模块等,功能强大,可以简化外围硬件电路设计和程序设计。本次电路设计应用了其内部的 I2C通信功能模块,作为 I2C通信硬件电路中的主控制器件使用,按照I2C通信协议与I2C从控制器件TC-74进行数据通信,实现温度信号的传输。

图1 PIC16F877A引脚示意图

2.温度传感器TC-74

TC-74是适用于低成本和小尺寸应用场合的可串行读取的数字温度传感器,内部温度检测元件将周围环境温度转变为模拟信号,再通过内部电路转换成数字信号对外输出。该芯片为I2C芯片,内部置有I2C通信协议,作为I2C通信硬件电路中的从控制器件使用,数据按照该通信协议与主控制器件进行数据交换。图2为TC-74各引脚的功能说明,其中VDD和GND分别接电源正极和电源负极,SDA和SCLK为I2C数据传输接口。

图2 TC-74引脚示意图

3.字符型1602液晶

图3 1602液晶引脚示意图

字符型1602液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用的有16×1、16×2、20×2和40×2等模块,该电路设计采用的是16×1型号,该模块采用标准的16引脚接口,如图3所示。其中,DB0—DB7八个引脚为并行数据传输接口,各引脚功能见表1。

表1 1602液晶引脚接口说明表

(二)电路设计与仿真

1.硬件电路设计

应用 proteus电路仿真软件对硬件电路进行了设计与仿真,图4所示,1602液晶芯片的并行数据接口DB0—DB7与单片机B端口的8个引脚连接,TC74的数据接口SCLK和SDA分别与单片机SCL、SDA引脚连接。R1和R2为I2C总线上的上拉电阻。打开仿真按钮,液晶屏能够正确显示温度传感器上显示的模拟温度值。

图4 proteus电路设计图与仿真

2.程序设计

采用 C语言编程,按照结构化程序设计和模块化思想,

分别对1602液晶和TC74进行编程,C程序代码如下:

#include〈pic.h〉

#define uchar unsigned char

#define uint unsigned int

#define RS RD0

#define E RD1

const uchar a[]="temp:";

void port_init() //单片机端口初始化

{

TRISB=0; TRISD0=0;

TRISD1=0; PORTB=0;

RD0=0; RD1=0;

TRISC=0xff;

}

void delay(uchar x) //延时函数

{

uchar i;

while(x--) for(i=0;i〈110;i++);

}

void lcd_com(uchar dat) //向LCD写入命令函数

{

RS=0; PORTB=dat;

E=0; delay(2);

E=1; delay(2);

E=0; delay(2);

}

void lcd_date(uchar dat) //向LCD写入数据函数

{

RS=1; PORTB=dat;

E=0; delay(2);

E=1; delay(2);

E=0; delay(2);

}

void lcd_init() //LCD初始化

{

lcd_com(0x30); delay(2);

lcd_com(0x0c); delay(2);

lcd_com(0x01); delay(2);

}

void i2c_init() //单片机I2C控制寄存器初始化

{

SSPSTAT=0x80; SSPCON=0X38;

SSPCON2=0X00; SSPADD=0X09;

}

uchar i2c_read() //读取TC74中数据的函数

{

uchar dat; SSPIF=0;

SEN=1;

while(!SSPIF); SSPIF=0;

SSPBUF=0X9A;

while(!SSPIF); SSPIF=0;

SSPBUF=0X00;

while(!SSPIF); SSPIF=0;

RSEN=1;

while(!SSPIF); SSPIF=0;

SSPBUF=0X9B;

while(!SSPIF); SSPIF=0;

RCEN=1;

while(!(SSPSTAT & 0x01));

dat=SSPBUF; SSPIF=0;

ACKDT=1; SSPIF=0;

PEN=1;

while(!SSPIF); SSPIF=0;

return(dat);

}

void lcd_display(uchar dat) //液晶显示温度值函数

{

uchar shi,ge;

ge=dat % 10; shi=dat/10;

lcd_com(0x80+7); lcd_date(0x30+shi);

lcd_com(0x80+8); lcd_date(0x30+ge);

}

void main() //主函数

{

uchar i;

port_init(); i2c_init();

lcd_init(); lcd_com(0x80);

for(i=0;i〈8;i++)

{

lcd_date(a[i]);

}

while(1)

{

delay(500);

lcd_display((int)i2c_read());

}

}

(三)结论

通过对电路进行仿真,证明该电路设计是正确的,具有较强的实用性,并且电路硬件接线简单,测量精度高,温度测量范围广泛,抗干扰能力强,误差较小。可广泛应用于对温度的检测和控制等领域。

[1] 徐玮,沈建良,庄建清.PIC单片机快速入门[M].北京:北京航空航天大学出版社,2010.

[2] 李学海.PIC 单片机实用教程—提高篇[M].北京:北京航空航天大学出版社,2002.

[3] 张明峰.PIC 单片机入门与实战[M].北京:北京航空航天大学出版社,2004.

[4] 李广弟,朱月秀,冷祖祈.单片机基础(第三版)[M].北京:北京航空航天大学出版社,2007.

[5] 谭浩强.C 程序设计(第二版)[M].北京:清华大学出版社,2004.

TP311

A

1008-1151(2011)05-0027-02

2011-02-12

田苗法(1984-),男,山东定陶人,安徽机电职业技术学院汽车工程系助教,研究方向为汽车电子与电控技术。

猜你喜欢
北京航空航天大学电路设计液晶
《北京航空航天大学学报》征稿简则
《北京航空航天大学学报》征稿简则
不可压液晶方程组的Serrin解
《北京航空航天大学学报》征稿简则
《北京航空航天大学学报》征稿简则
《液晶与显示》征稿简则
Altium Designer在电路设计中的应用
负反馈放大电路设计
开漏输出比较器的峰值检测电路设计
液晶与显示2015年第30卷第1期 目录