Funpack第七期-使用curiosity board(DM164137)实现带全彩led的试轴器
DM164137,pic16f18446实现带全彩led的试轴器
标签
Funpack第七期
DM164137
试轴器
james
更新2021-04-21
736
1 实现功能介绍

这回根据硬禾的活动要求, 自己画了个mickrobus兼容板子, 实现了 一个试轴器应用.

这个试轴器支持热插拔, 可以检测轴和全彩led, 全彩led是通过 pwm(后续实现)控制的共阳RGB LED实现. 按下的时候出现炫彩, 松 开灯灭.

2 主要代码片段

主要代码为io pin初始化, 状态设置和读取数字量.

#include "main.h"

#include <xc.h>

#define _XTAL_FREQ 8000000
#define LED_TRIS_B TRISBbits.TRISB6 // BLUE
#define LED_TRIS_G TRISBbits.TRISB4 // Green
#define LED_TRIS_R TRISCbits.TRISC7 // RED
//#define LED_TRIS TRISAbits.TRISA2
#define LED_STATE_B LATBbits.LATB6
#define LED_STATE_G LATBbits.LATB4
#define LED_STATE_R LATCbits.LATC7

#define KEY_SCAN_TRIS TRISCbits.TRISC6
#define KEY_SCAN_STATE LATCbits.LATC6

#define KEY_TEST_TRIS TRISCbits.TRISC2
#define KEY_TEST_STATE PORTCbits.RC2
#define KEY_TEST_WEAK_PULL_UP WPUCbits.WPUC2

void initOSC(void) {
    OSCCON1 = 0x10;
    OSCCON3 = 0x00;
    OSCEN = 0x00;
    OSCFRQ = 0x03;
    OSCTUNE = 0x00;
    while (PLLR == 0);
}

void initWDT(void) {
    WDTCON0bits.SWDTEN = 0;
    WDTCON0bits.SEN = 0;
}

void initIO() {
    ANSELA = 0x00;
    ANSELB = 0x00;
    ANSELC = 0x00;

    LED_TRIS_R = 0; // output
    LED_STATE_R = 1;

    LED_TRIS_G = 0; // output
    LED_STATE_G = 1;

    LED_TRIS_B = 0; // output
    LED_STATE_B = 1;

    KEY_SCAN_TRIS = 0; // output
    KEY_SCAN_STATE = 1; // high

    KEY_TEST_WEAK_PULL_UP = 0;
    KEY_TEST_TRIS = 1; // input
    KEY_TEST_STATE = 0  ; // switch off
}

void main(void) {
    initOSC();
    initWDT();
    initIO();
    while (1) {
        if (KEY_TEST_STATE == 1) {
            LED_STATE_B = 0;
            __delay_ms(100);
            LED_STATE_B = 1;
            __delay_ms(100);
            LED_STATE_G = 0;
            __delay_ms(100);
            LED_STATE_G = 1;
            __delay_ms(100);
            LED_STATE_R = 0;
            __delay_ms(100);
            LED_STATE_R = 1;
            __delay_ms(100);
        }
    }
    return;
}
3 心得体会和建议
  1. 这个mplab x ide基于netbeans, 好看, 但是速度慢, 容易崩.
  2. 没有gcc编译器支持, 只能用microchip的xc8编译器或者sdcc(没试过)
  3. 本期还是很有意思的, 用最简单的方法实现了自己想要实现的项目.
团队介绍
james
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号