打印
[应用方案]

参加活动的板子收到点下ws2812灯带测试下。以及遇到的问题

[复制链接]
1821|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
代码如下:/**
*   ************************************************************************************
*                                                                上海芯圣电子股份有限公司
*                                                                    www.holychip.cn
*        ************************************************************************************
*        @Examle Version                V1.0.1.0
*        @demo         Version                V1.0.2.0
*        @Date                                2017.12.21
*        ************************************************************************************
*                                                                         模块性能介绍
*        1、输入(无SMT)模式下VDD=5V时,低电平即输入低电压(VIL1)范围为0~1.5V、高电平即输入
*           高电压(VIH1)范围为3.5~5V。
*        2、输入(SMT)模式下VDD=5V时,低电平即输入低电压(VIL1)范围为0~1V、高电平即输入高电
*           压(VIH1)范围为4~5V。
*        3、P0xDBCT [5:0]配置的消抖时间是一个范围,分频系数*Tosc*P0xDBCT[5:0]-Tosc<消抖时间<
*           分频系数*Tosc*(P0xDBCT[5:0]+1)-Tosc。
*        4、MCU上电复位以及其它复位功能的复位,所有的IO相关寄存器都会恢复为默认值。
*        ************************************************************************************
*                                                                         应用注意事项
*        1、在使用仿真器时,与JTAG复用的IO口会有读取或写入数据异常,因此建议使用仿真器时不要
*           操作这几个IO口。断开仿真器使用电源供电即可以正常操作。
*        2、分配到P0.0/P0.1/P0.2这三个管脚上的功能脚、外部中断输入、故障检测引脚都受消抖控制。
*        ************************************************************************************
*                                                                         客户服务
*        感谢您使用我们的单片机,若发现错误或对函数的使用存在疑问。请添加上海芯圣电子官方QQ群
*        ****************************技术支持群:201030494***********************************
*   ************************************************************************************
**/

#define ALLOCATE_EXTERN
#include "HC89S003F4.h"
#include<intrins.h>

sbit Dout  = P1^0;  
unsigned char bdata LED_DAT;//可位操作的数据发送暂存变量声明
sbit LEDbit0 = LED_DAT^0; //被发送的数据各位定义
sbit LEDbit1 = LED_DAT^1;
sbit LEDbit2 = LED_DAT^2;
sbit LEDbit3 = LED_DAT^3;
sbit LEDbit4 = LED_DAT^4;
sbit LEDbit5 = LED_DAT^5;
sbit LEDbit6 = LED_DAT^6;
sbit LEDbit7 = LED_DAT^7;   
//================================================================
//发送RGB数据,一个nop为62.5ns, 刷新一次24*1.38us=33.2us
//================================================================

//1码 高电平850ns,低电平400ns 实测760,564
#define CODE1        {Dout = 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();Dout = 0;}
//0码 高电平400ns,低电平850ns 实测380,860
#define CODE0        {Dout = 1;_nop_();_nop_();_nop_();_nop_();Dout = 0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
unsigned char RGB[3]={0,0,0};
void delay(unsigned int time)
{
        while(time--);
}

void WS2812rst()//复位码:低电平>50us
{
        delay(65);
        Dout = 1;
        delay(1);
        Dout = 0;
}

void WS2812Send(unsigned char *dat)  //数据格式G7-G0-R7-R0-B7-B0
{
        LED_DAT = *dat++;
        if(LEDbit7) {CODE1} else {CODE0}   
        if(LEDbit6) {CODE1} else {CODE0}   
        if(LEDbit5) {CODE1} else {CODE0}   
        if(LEDbit4) {CODE1} else {CODE0}   
        if(LEDbit3) {CODE1} else {CODE0}   
        if(LEDbit2) {CODE1} else {CODE0}   
        if(LEDbit1) {CODE1} else {CODE0}   
        if(LEDbit0) {CODE1} else {CODE0}   
        LED_DAT=*dat++;
        if(LEDbit7) {CODE1} else {CODE0}   
        if(LEDbit6) {CODE1} else {CODE0}   
        if(LEDbit5) {CODE1} else {CODE0}   
        if(LEDbit4) {CODE1} else {CODE0}   
        if(LEDbit3) {CODE1} else {CODE0}   
        if(LEDbit2) {CODE1} else {CODE0}   
        if(LEDbit1) {CODE1} else {CODE0}   
        if(LEDbit0) {CODE1} else {CODE0}   
        LED_DAT=*dat;
        if(LEDbit7) {CODE1} else {CODE0}   
        if(LEDbit6) {CODE1} else {CODE0}   
        if(LEDbit5) {CODE1} else {CODE0}   
        if(LEDbit4) {CODE1} else {CODE0}   
        if(LEDbit3) {CODE1} else {CODE0}
        if(LEDbit2) {CODE1} else {CODE0}
        if(LEDbit1) {CODE1} else {CODE0}
        if(LEDbit0) {CODE1} else {CODE0}
}        

int main()
{
/************************************系统初始化****************************************/
        WDTCCR = 0x00;                                                //关闭看门狗
        while((CLKCON&0x20)!=0x20);                        //等待内部高频RC起振
        CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz          50 32Mhz
        while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
        CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
/***********************************设置IO口模式***************************************/
        P1M0 = P1M0 & 0xF0 | 0x08;   //P10 LED2

        while(1){
                for(RGB[0]=0;RGB[0]<250;RGB[0]+=2)
                {
                        WS2812Send(RGB);
                        WS2812Send(RGB);
                        WS2812Send(RGB);
                        WS2812rst();
                        delay(30000);
                }
                for(RGB[1]=0;RGB[1]<250;RGB[1]+=2)
                {
                        WS2812Send(RGB);
                        WS2812Send(RGB);
                        WS2812Send(RGB);
                        WS2812rst();
                        delay(30000);
                }
                for(RGB[2]=0;RGB[2]<250;RGB[2]+=2)
                {                               
                        WS2812Send(RGB);
                        WS2812Send(RGB);
                        WS2812Send(RGB);
                        WS2812rst();
                        delay(30000);
                }
        }
    return 0;
}

视频效果见附件。

有两问题:
一个是自己建的功能打开编辑下载完全没问题,打开官方的例程keil4直接卡死是怎么回事?

还有就是编程下载为什么只能用上电复位?reset管脚就一直下载失败?


视频: QQ视频20180321235048.zip (3.43 MB)




沙发
wx85105157|  楼主 | 2018-3-22 00:46 | 只看该作者
问题二已经解决,仿真器的rst没有连接到单片机上,飞线一根连上就可以了。下面坛友也是遇到一样的问题。
【原创】HC89S003F4软硬件开发环境的搭建和电路解析 - - 21ic电子技术论坛
https://bbs.21ic.com/icview-2486522-1-1.html

使用特权

评论回复
板凳
wakayi| | 2018-7-14 21:13 | 只看该作者
感谢楼主分享  问题一解决了没有

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

258

帖子

3

粉丝