这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » safe910的dry 功放进程贴

共19条 1/2 1 2 跳转至

safe910的dry 功放进程贴

菜鸟
2015-02-12 09:48:03     打赏

大家好 


我的功放进程贴开始了,我会记录我的每一步动向,谢谢大家的分享。

2


菜鸟
2015-02-12 09:51:35     打赏
2楼

收到快递开始焊接,跟大家分享下吧 。


3


菜鸟
2015-02-12 11:55:09     打赏
3楼

焊接完成,通电测试12V  ,5V电压正常,LED灯闪烁。

注意供电的适配器用12V1A  功率大于10W以上的最好。

焊接完成通电正常


菜鸟
2015-02-12 12:40:28     打赏
4楼

由于原PCB板上没有丝印位号,我将PCB的丝印做了一份PDF文档,方便焊接。

jpg文档和pdf文档同时上传,欢迎下载。

电路板(PCB).pdf




菜鸟
2015-02-12 13:34:10     打赏
5楼

开始我的程序设计,一点一滴记录,欢迎大家指正。


/************* 功能说明 **************


本文件为STC15xxx系列的端口初始化程序,用户几乎可以不修改这个程序.




******************************************/


#include "GPIO.h"




//========================================================================
// 函数: u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
// 描述: 初始化IO口.
// 参数: GPIOx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
{
if(GPIO > GPIO_P5) return 1; //空操作
if(GPIOx->Mode > GPIO_OUT_PP) return 2; //错误
if(GPIO == GPIO_P0)
{
if(GPIOx->Mode == GPIO_PullUp) P0M1 &= ~GPIOx->Pin, P0M0 &= ~GPIOx->Pin; //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ) P0M1 |=  GPIOx->Pin, P0M0 &= ~GPIOx->Pin; //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD) P0M1 |=  GPIOx->Pin, P0M0 |=  GPIOx->Pin; //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP) P0M1 &= ~GPIOx->Pin, P0M0 |=  GPIOx->Pin; //推挽输出
}
if(GPIO == GPIO_P1)
{
if(GPIOx->Mode == GPIO_PullUp) P1M1 &= ~GPIOx->Pin, P1M0 &= ~GPIOx->Pin; //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ) P1M1 |=  GPIOx->Pin, P1M0 &= ~GPIOx->Pin; //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD) P1M1 |=  GPIOx->Pin, P1M0 |=  GPIOx->Pin; //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP) P1M1 &= ~GPIOx->Pin, P1M0 |=  GPIOx->Pin; //推挽输出
}
if(GPIO == GPIO_P2)
{
if(GPIOx->Mode == GPIO_PullUp) P2M1 &= ~GPIOx->Pin, P2M0 &= ~GPIOx->Pin; //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ) P2M1 |=  GPIOx->Pin, P2M0 &= ~GPIOx->Pin; //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD) P2M1 |=  GPIOx->Pin, P2M0 |=  GPIOx->Pin; //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP) P2M1 &= ~GPIOx->Pin, P2M0 |=  GPIOx->Pin; //推挽输出
}
if(GPIO == GPIO_P3)
{
if(GPIOx->Mode == GPIO_PullUp) P3M1 &= ~GPIOx->Pin, P3M0 &= ~GPIOx->Pin; //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ) P3M1 |=  GPIOx->Pin, P3M0 &= ~GPIOx->Pin; //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD) P3M1 |=  GPIOx->Pin, P3M0 |=  GPIOx->Pin; //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP) P3M1 &= ~GPIOx->Pin, P3M0 |=  GPIOx->Pin; //推挽输出
}
if(GPIO == GPIO_P4)
{
if(GPIOx->Mode == GPIO_PullUp) P4M1 &= ~GPIOx->Pin, P4M0 &= ~GPIOx->Pin; //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ) P4M1 |=  GPIOx->Pin, P4M0 &= ~GPIOx->Pin; //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD) P4M1 |=  GPIOx->Pin, P4M0 |=  GPIOx->Pin; //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP) P4M1 &= ~GPIOx->Pin, P4M0 |=  GPIOx->Pin; //推挽输出
}
if(GPIO == GPIO_P5)
{
if(GPIOx->Mode == GPIO_PullUp) P5M1 &= ~GPIOx->Pin, P5M0 &= ~GPIOx->Pin; //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ) P5M1 |=  GPIOx->Pin, P5M0 &= ~GPIOx->Pin; //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD) P5M1 |=  GPIOx->Pin, P5M0 |=  GPIOx->Pin; //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP) P5M1 &= ~GPIOx->Pin, P5M0 |=  GPIOx->Pin; //推挽输出
}
return 0; //成功


菜鸟
2015-02-12 13:35:32     打赏
6楼

时钟控制


/************* 功能说明 **************


本文件为STC15xxx系列的定时器初始化和中断程序,用户可以在这个文件中修改自己需要的中断程序.




******************************************/






#include "timer.h"


/********************* Timer0中断函数************************/
//void timer0_int (void) interrupt TIMER0_VECTOR
//{


//}


/********************* Timer1中断函数************************/
void timer1_int (void) interrupt TIMER1_VECTOR
{


}


/********************* Timer2中断函数************************/
void timer2_int (void) interrupt TIMER2_VECTOR
{
P10 = ~P10;
}




//========================================================================
// 函数: u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
// 描述: 定时器初始化程序.
// 参数: TIMx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
{
if(TIM > Timer2) return 1; //空操作


if(TIM == Timer0)
{
TR0 = 0; //停止计数
if(TIMx->TIM_Interrupt == ENABLE) ET0 = 1; //允许中断
else ET0 = 0; //禁止中断
if(TIMx->TIM_Polity == PolityHigh) PT0 = 1; //高优先级中断
else PT0 = 0; //低优先级中断
if(TIMx->TIM_Mode >  TIM_16BitAutoReloadNoMask) return 2; //错误
TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode; //工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3: 16位自动重装, 不可屏蔽中断
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) AUXR &= ~0x80; //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) AUXR |=  0x80; //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) TMOD |=  0x04; //对外计数或分频
else TMOD &= ~0x04; //定时
if(TIMx->TIM_ClkOut == ENABLE) INT_CLKO |=  0x01; //输出时钟
else INT_CLKO &= ~0x01; //不输出时钟

TH0 = (u8)(TIMx->TIM_Value >> 8);
TL0 = (u8)TIMx->TIM_Value;
if(TIMx->TIM_Run == ENABLE) TR0 = 1; //开始运行
return 0; //成功
}


if(TIM == Timer1)
{
TR1 = 0; //停止计数
if(TIMx->TIM_Interrupt == ENABLE) ET1 = 1; //允许中断
else ET1 = 0; //禁止中断
if(TIMx->TIM_Polity == PolityHigh) PT1 = 1; //高优先级中断
else PT1 = 0; //低优先级中断
if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //错误
TMOD = (TMOD & ~0x30) | TIMx->TIM_Mode; //工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) AUXR &= ~0x40; //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) AUXR |=  0x40; //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) TMOD |=  0x40; //对外计数或分频
else TMOD &= ~0x40; //定时
if(TIMx->TIM_ClkOut == ENABLE) INT_CLKO |=  0x02; //输出时钟
else INT_CLKO &= ~0x02; //不输出时钟

TH1 = (u8)(TIMx->TIM_Value >> 8);
TL1 = (u8)TIMx->TIM_Value;
if(TIMx->TIM_Run == ENABLE) TR1 = 1; //开始运行
return 0; //成功
}


if(TIM == Timer2) //Timer2,固定为16位自动重装, 中断无优先级
{
AUXR &= ~(1<<4); //停止计数
if(TIMx->TIM_Interrupt == ENABLE) IE2  |=  (1<<2); //允许中断
else IE2  &= ~(1<<2); //禁止中断
if(TIMx->TIM_ClkSource >  TIM_CLOCK_Ext) return 2;
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) AUXR &= ~(1<<2); //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) AUXR |=  (1<<2); //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) AUXR |=  (1<<3); //对外计数或分频
else AUXR &= ~(1<<3); //定时
if(TIMx->TIM_ClkOut == ENABLE) INT_CLKO |=  0x04; //输出时钟
else INT_CLKO &= ~0x04; //不输出时钟


TH2 = (u8)(TIMx->TIM_Value >> 8);
TL2 = (u8)TIMx->TIM_Value;
if(TIMx->TIM_Run == ENABLE) AUXR |=  (1<<4); //开始运行
return 0; //成功
}
return 2; //错误
}



工程师
2015-02-12 13:42:27     打赏
7楼
这个赞~!今天收到今天就做好了

菜鸟
2015-02-12 15:05:32     打赏
8楼

单片机烧掉了 ,上电很烫 


看来要重新买单片机了


工程师
2015-02-12 16:31:35     打赏
9楼

悲剧 ,希望下次嗜好的 ,


院士
2015-02-12 16:47:33     打赏
10楼
动作真快!!!

共19条 1/2 1 2 跳转至

回复

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