1回答

0收藏

[原创] CYPRESS psoc4初次使用感想三 —— 电子温度计

英飞凌 英飞凌 4953 人阅读 | 1 人回复 | 2013-12-03

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电阻接在对比度控制端,使文字更容易辨认。

然后是程序:


[cpp] view plaincopy


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




最后是成品展示:


分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

xxnkexin

发表于 2013-12-12 20:59:47 | 只看该作者

本帖最后由 凯文 于 2013-12-12 21:24 编辑

LZ怎么设置的ADC啊?我这个怎么按你的连线之后编译的时候报错,ADC的0管脚没有连接。麻烦LZ把设置的ADC截图给我吧,1012688557@qq.com,谢谢楼主了,救急啊
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条