这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Cypress » zhzhx66的进程帖

共11条 1/2 1 2 跳转至

zhzhx66的进程帖

菜鸟
2013-09-15 09:58:47     打赏

 项目名称

     基于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




关键词: Cypress     PSoC4     Pioneer ki    

菜鸟
2013-09-15 15:55:49     打赏
2楼
PSoC4 Pioneer Kit Broad

菜鸟
2013-09-17 21:56:19     打赏
3楼
板子原理图分享。CY8CKIT-042_Schematic.pdf

菜鸟
2013-09-17 22:04:39     打赏
4楼
CY8C42xx系列的片子包括电源和地引脚最多只有44脚,资源真是非常紧张。

菜鸟
2013-09-23 20:13:21     打赏
5楼

软件时钟

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


菜鸟
2013-09-25 19:42:36     打赏
6楼

软时钟_外部中断

CY_ISR(isr_Button)
{
    CyDelay(200u);
    state = 1u;
    Pin_ClearInterrupt();
}

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()
{
    volatile uint32 temp = 0u;
    /* Enable the global interrupts */
    CyGlobalIntEnable;
    /* Enable the Interrupt component connected to the Button interrupt */
    isr_Button_StartEx(isr_Button);
    /* 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(0u == state)
        {
            /* Displaying the timer value */
            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);           
            }
        }
        else
        {
            if (0u == temp)
            {
                /* Prepare the Timer component to Sleep mode */
                Timer_Sleep();
                temp = 1u;
                /* Put the chip into Deep Sleep mode */
                CySysPmDeepSleep();
            }
            else
            {
                /* Restore the Timer component after Sleep */
                Timer_Wakeup();
                temp = 0u;
                state = 0u;
            }
        }
    }
}


菜鸟
2013-10-09 17:39:46     打赏
7楼

CapSense 调校过程,以下是详尽步骤,供大家分享!

使用和调试CapSense 组件的典型过程如下:

1、将CapSense_CSD 组件从组件目录拖动到您的设计中。

2、双击可打开Configure 对话框,将Tuning method 选择为Auto(SmartSense)

CSD1

3、根据您应用的需要更改CapSense CSD 参数。在Widgets Config选项卡上添加并配置“widgets”。

CSD3CSD2

4、在Tune Helper选项卡上:必须选中Enable Tune Helper复选框,I2C address(7-bits):0x08。

CSD4

5、将调谐器初始化及通信代码添加到项目main.c文件中

void main() 
{
    /* Enable Global Interrupts */
    CyGlobalIntEnable;
    CapSense_TunerStart(); 
    for(;;)
    {
    CapSense_TunerComm();       
    }
}
6、配置引脚:SCL P3.0,  SDA P3.1

CSD5

7、编译下载程序。

8、右击CapSense CSD组件图标,然后从上下文菜单中选择Launch Tuner项。调谐器应用将打开。

csd6

9、点击Configuration,以打开Tuner Communication对话框,配置通信参数。属性必须与Tune Helper选项卡中的完全一致:I2C Speed、I2C Address。必须将Sub-address设置为1-Byte。

csd7

10、点击调试GUI上的Start,开始调试。所有CapSense元件开始显示其值。

csd9

点击Graphing可看到波形

csd8

11、编辑其中一个元件的参数值,按[Enter]键或转入另一个选项后,参数值会自动应用。

12、依次选择File->Apply Changes and Close,参数回写到 CapSense_CSD 实例。


菜鸟
2013-10-13 11:34:49     打赏
8楼
LCD and LED driver

菜鸟
2013-10-16 21:23:28     打赏
9楼
例程2是关于触摸按键的简单应用,供大家分享。

菜鸟
2013-11-30 14:43:22     打赏
10楼
好久没有更新了

共11条 1/2 1 2 跳转至

回复

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