关闭

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

标签: 电子设计单片机
1527人阅读 评论(0) 收藏 举报
分类:

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);
        }
    }
}



最后是成品展示:


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:104017次
    • 积分:1829
    • 等级:
    • 排名:千里之外
    • 原创:83篇
    • 转载:0篇
    • 译文:0篇
    • 评论:16条
    最新评论