论坛» 企业专区» Cypress

zhzhx66的进程帖

菜鸟
2013-09-15 09:58 1楼

项目名称

基于PSoC4 Pioneer kit温度采集及控制

u功 功能应用

1、 利用定时器制作软件时钟,实时显示小时、分钟、星期。

2、利用内部温度传感器和ADC采集检测芯片温度。

3、利用Segment LCD显示小时、分钟、星期和当前芯片温度等信息。

4、PWM驱动RGB三色LED。设置温度小于当前温度5℃时,绿色LED亮;设置温度大于当前温度5℃时,红色LED亮;其他温度条件,蓝色LED亮。

5、5个CapSense容式触摸按键,分别是上键、下键、确定键、设置键、时钟键。通过这5个按键可以设置当前时间,改变当前设置温度。

6、 利用仿真型Em_EEPROM存储掉电时的时间和设置温度。

7、 利用外部中断检测一个机械按键,按一下该机械按键RGB三色LED全部点亮,呈现白色,再按一下该机械按键RGB三色LED按照功能4规律点亮。


u利用的内部资源

该项目利用了以下内部资源:

1、时钟源:

该项目用到了多处时钟源,如定时器,PWM,Segment LCD,其中定时器的时钟源用的是1KHz,PWM的 时钟源用的是100KHz,Segment LCD的时钟源用的是12MHz,时钟源的设置只是频率不同。

2、定时器Timer

定时器模块的clock输入1KHz的时钟信号,开启定时器中断interrput,设定每20mS产生一次中断。

3、PWM模块

该项目利用了3个PWM模块,分别驱动R、G、B三色LED。

4、Segment LCD模块

利用Segment LCD显示小时、分钟、星期和当前芯片温度等信息。

5、CapSense触摸感应

5个CapSense容式触摸按键,通过这5个按键可以设置当前时间,改变当前设置温度

6、ADC和内部温度传感器

利用内部温度传感器和ADC采集检测芯片温度

7、外部中断

利用外部中断来检测机械按键。

8、仿真型Em_EEPROM

利用仿真型Em_EEPROM存储掉电时的时间和设置温度。


关于项目的其他资料请下载查看以下附件。



1

z

项目说明Word文档:

PSoC4 Pioneer kit项目说明.doc

项目软件工程文件:

PSoC4 Pioneer kit项目软件_ThermostatControl.rar

项目相关照片:

PSoC4 Pioneer kit项目照片.rar

项目相关视频:

http://v.youku.com/v_show/id_XNjQxODEyNDY0.html

http://v.youku.com/v_show/id_XNjQxODE2Mjg4.html

专家
2013-09-15 10:21 2楼
看后来的精华贴
菜鸟
2013-09-15 10:47 3楼
什么时候收到的?
专家
2013-09-15 12:30 4楼
看来星期一去单位就可以拿得到
菜鸟
2013-09-15 15:55 5楼
PSoC4 Pioneer Kit Broad
专家
2013-09-15 19:15 6楼
板子 漂亮~! 楼主赶紧来一个实例给大伙瞧瞧
菜鸟
2013-09-17 21:56 7楼
板子原理图分享。 CY8CKIT-042_Schematic.pdf
菜鸟
2013-09-17 22:04 8楼
CY8C42xx系列的片子包括电源和地引脚最多只有44脚,资源真是非常紧张。
专家
2013-09-17 22:04 9楼
原理图啸风已分享至论坛了 楼主开始进程吧
菜鸟
2013-09-23 20:13 10楼

软件时钟

CY_ISR(isr_Timer)
{
SecondFlag=1;
Second++;
if(Second>59)
{
Second=0;
Minute++;
if(Minute>59)
{
Minute=0;
Hour++;
if(Hour>23)
{
Hour=0;
Week++;
if(Week>6)
{
Week=0;
}
}
}
}

Timer_ClearInterrupt(Timer_INTR_MASK_TC);
}

void main()
{
/* Enable the global interrupts */
CyGlobalIntEnable;
/* Enable the Interrupt component connected to the Timer interrupt */
isr_Timer_StartEx(isr_Timer);

/* Start the Timer component */
Timer_Start();

/* Start the Segment LCD component */
LCD_Seg_Start();


for(;;)
{
if(SecondFlag==1)
{
SecondFlag=0;
LCD_Seg_WriteBargraph_2(Week+1u, 0u);
LCD_Seg_Write7SegNumber_0(10000+Hour*100+Minute, 0u, LCD_Seg_NO_LEADING_ZEROES);
LCD_Seg_WritePixel(LCD_Seg_COL, Second%2);
LCD_Seg_Write7SegNumber_1(100+Second, 0u, LCD_Seg_NO_LEADING_ZEROES);
}
}
}

共19条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]