您的位置:首页 > 其它

CYPRESS psoc4初次使用感想三 —— 电子温度计

2013-12-03 15:46 453 查看
PsoC4内置了温度传感模块,因此可以使用此模块取得环境温度并将结果输出到显示屏上,实现同时显示摄氏温度和绝对温度的功能。

要用到的材料:

公头杜邦线12根;

1602液晶屏一个;

PsoC4开发板一块;

1.1KOhm电阻一枚;

USB线一条。

温度信息在1602上这样显示,上方显示绝对温度, 下方显示摄氏温度:

TempK = 300.15 °K

TempS = 27 °C

然后设计需要用到的组件:



根据针脚定义图确定接线位置:
http://blog.csdn.net/firedom/article/details/17028489 http://pan.baidu.com/s/1f7r3B 第13页说明



连接好后会像这个样子:



然后链接电源和背光线和对比度控制线:



将一个1.1KOhm电阻接在对比度控制端,使文字更容易辨认。

然后是程序:

#include <device.h>
#include <stdio.h>
#define CH0_N           0x00u
#define TEMP_CH         0x01u
#define DELAY_1SEC      1000u
volatile uint32 dataReady = 0u;
volatile int16 result[ADC_SAR_SEQ_TOTAL_CHANNELS_NUM];
volatile uint32 timer_delay = 0u;

void main()
{
float temperature;
LCD_Start();
LCD_Position(0u,0u);
LCD_PrintString("TempK =       ");
LCD_PutChar(LCD_CUSTOM_0);
LCD_PutChar('K');
LCD_Position(1u,0u);
LCD_PrintString("TempS =       ");
LCD_PutChar(LCD_CUSTOM_0);
LCD_PutChar('C');
PWM_Start();
PWM_TriggerCommand(PWM_MASK, PWM_CMD_START);
ADC_SAR_SEQ_Start();
ADC_SAR_SEQ_StartConvert();
ADC_SAR_SEQ_IRQ_StartEx(ADC_SAR_SEQ_ISR_LOC);
ISR_TIMER_StartEx(ISR_TIMER_LOC);
CyGlobalIntEnable;

while(1)
{
if((dataReady & ADC_SAR_SEQ_INJ_EOC_MASK) != 0u)
{
dataReady &= ~ADC_SAR_SEQ_INJ_EOC_MASK;
temperature = DieTemp_CountsTo_Celsius(result[TEMP_CH]);
LCD_Position(0u,8u);
LCD_PrintString("    ");
LCD_Position(0u,8u);
LCD_PrintNumber(temperature + 273);
LCD_PutChar('.');
LCD_PrintNumber(15);
LCD_Position(1u,8u);
LCD_PrintString("     ");
LCD_Position(1u,8u);
LCD_PrintNumber((float)temperature);
}
}
}


最后是成品展示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: