搜索
bottom↓
回复: 97

今天,天气好。拿出小太阳能板。成功驱动音乐播放器。播放器主要原件就是【ATMEGA8】

[复制链接]

出0入0汤圆

发表于 2010-4-17 15:26:08 | 显示全部楼层 |阅读模式
音乐播放器刚做好。仅仅能播放8位的WAV音乐。支持8khz-44.1khz,双声道。主要原件就ATMEGA8单片机和太阳能板。原理就是PWM_DA。。。。


(原文件名:DSC00572.JPG)


(原文件名:DSC00573.JPG)


视频效果连接:http://v.youku.com/v_show/id_XMTY1ODMyNDgw.html

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-4-17 15:37:06 | 显示全部楼层
楼主,好酷。

出0入0汤圆

发表于 2010-4-17 16:57:59 | 显示全部楼层
怎么没有背面的照片啊

出0入0汤圆

发表于 2010-4-17 17:57:36 | 显示全部楼层
背景不错!多少光圈?多少快门?

出0入0汤圆

 楼主| 发表于 2010-4-17 18:14:09 | 显示全部楼层
回复【3楼】yzl0208994
-----------------------------------------------------------------------


(原文件名:DSC00563.jpg)

出0入0汤圆

 楼主| 发表于 2010-4-17 18:16:25 | 显示全部楼层
回复【4楼】dengting 守望者
-----------------------------------------------------------------------

我看看。。。光圈F/5.6。。。。快门1/250秒

出0入0汤圆

发表于 2010-5-12 00:48:38 | 显示全部楼层
就这个了...AT16应该也一样做吧,不过PWM功能我还得补习一下额,

出235入8汤圆

发表于 2010-5-12 08:22:46 | 显示全部楼层
有原理图与程序吗?能贴一下,大家一起看~~~

出0入0汤圆

发表于 2010-5-12 09:35:13 | 显示全部楼层
楼主:开源一下吧。俺也想那个做一个学习学习。我看楼主这个好像没用其他芯片。。。。电路简单。料好像我都有...

出0入0汤圆

发表于 2010-5-12 10:06:05 | 显示全部楼层
楼主开源吧……求求你了……

出0入0汤圆

发表于 2010-5-12 12:49:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-12 13:21:18 | 显示全部楼层
LZ是女的吧?大头贴,红毛衣,右手中指上的钻戒。。。

出0入0汤圆

 楼主| 发表于 2010-5-12 20:08:38 | 显示全部楼层
原理图贴出来了。。。

(原文件名:电路原理图.gif)

这是烧录文件
点击此处下载 ourdev_553509.rar(文件大小:4K) (原文件名:FAT32烧录文件.rar)


仅仅支持FAT32文件系统
仅仅支持8位的WAV文件,频率8kHz-44.1kHz

先说明下:这仅仅是烧录文件。可以自己搭好电路,试试效果。

出0入0汤圆

发表于 2010-5-12 20:48:17 | 显示全部楼层
楼主的文件是不是弄错了,88字节?

出235入8汤圆

发表于 2010-5-12 20:52:31 | 显示全部楼层
下了,文件是空的,没有原代码吗?

出0入0汤圆

 楼主| 发表于 2010-5-12 21:01:50 | 显示全部楼层
已经重新上传了~~但仅仅是烧录文件~~可以试试效果、或直接使用~~

出0入0汤圆

发表于 2010-5-12 21:37:39 | 显示全部楼层
先mk了

出0入0汤圆

发表于 2010-5-12 22:02:34 | 显示全部楼层
回复【10楼】hz100
楼主开源吧……求求你了……
-----------------------------------------------------------------------

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3734436&bbs_page_no=1&search_mode=3&search_text=lzf713&bbs_id=1000
你不要求人家了!

出0入0汤圆

发表于 2010-5-13 11:32:36 | 显示全部楼层
熔丝如何配置?

出235入8汤圆

发表于 2010-5-13 11:54:10 | 显示全部楼层
回复【18楼】lzf713  
回复【10楼】hz100 
楼主开源吧……求求你了……
-----------------------------------------------------------------------

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3734436&bbs_page_no=1&search_mode=3&search_text=lzf713&bbs_id=1000
你不要求人家了!
-----------------------------------------------------------------------

谢谢【18楼】

出0入0汤圆

 楼主| 发表于 2010-5-13 12:03:30 | 显示全部楼层
to 19楼:


(原文件名:熔断丝配置.gif)

这是熔断丝配置截图~~

出0入0汤圆

发表于 2010-5-13 12:24:28 | 显示全部楼层
我有点搞不懂,淘宝上不是有卖SD卡模块的吗?这样子将MCU和SD卡通过几根导线简单连接起来就能用了吗?
模块的和简单连接最大的区别是什么?

出0入0汤圆

发表于 2010-5-13 13:43:12 | 显示全部楼层
学习一个

出0入0汤圆

发表于 2010-5-13 14:07:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-13 14:32:40 | 显示全部楼层

出0入0汤圆

发表于 2010-5-13 14:35:53 | 显示全部楼层
楼主不是凡人,鉴定完毕

出0入0汤圆

 楼主| 发表于 2010-5-13 15:57:57 | 显示全部楼层
回复【26楼】csformat
-----------------------------------------------------------------------

呵呵~~

出0入0汤圆

发表于 2010-5-13 18:14:33 | 显示全部楼层
这个是CHAN老师的项目。
  详见http://elm-chan.org/   (目前老师正在更新他的WEB,可能不能正常访问)

出0入0汤圆

发表于 2010-5-13 20:27:03 | 显示全部楼层
很好玩..mark

出0入0汤圆

发表于 2010-5-13 20:51:06 | 显示全部楼层
楼主用的也是SP200编程器,请问楼主用SP200烧写AVR单片机有什么新的吗?比如设置熔丝,烧写EEP文件。

出0入0汤圆

发表于 2010-5-13 21:34:31 | 显示全部楼层
好东西。有空搭一夏

出0入0汤圆

发表于 2010-5-13 22:00:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-13 22:19:27 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-5-14 11:08:43 | 显示全部楼层
回复【30楼】gps422129
-----------------------------------------------------------------------

呵呵~~以前,51单片机入门时买的~~
没有注意过~~

出0入0汤圆

 楼主| 发表于 2010-5-14 11:10:51 | 显示全部楼层
回复【28楼】zxttgg ゛限 量 蝂
-----------------------------------------------------------------------

本来我也想用ATTINY85做的。不过器件有点难买。

出0入0汤圆

发表于 2010-5-15 00:26:33 | 显示全部楼层
Mark

出0入8汤圆

发表于 2010-5-15 09:10:20 | 显示全部楼层
记号

出0入8汤圆

发表于 2010-5-16 11:08:42 | 显示全部楼层
记号

出0入0汤圆

 楼主| 发表于 2010-5-17 15:15:08 | 显示全部楼层
准备出售 avr 音乐播放器 零件包
所见即所得



(原文件名:准备-M8音乐播放器-15个零件.jpg)



购买地址:  
http://shop.ez-diy.cn  
http://shop35906585.taobao.com/  

QQ:670085129

出0入0汤圆

发表于 2010-5-18 22:01:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-3 01:29:18 | 显示全部楼层
好东西。
居然没有马克。
找到啦。
哈哈。

出0入0汤圆

发表于 2010-10-3 11:24:56 | 显示全部楼层
回复【楼主位】zbjzxc
-----------------------------------------------------------------------

请问太阳能板是从哪里买的?

出0入0汤圆

 楼主| 发表于 2010-12-9 21:30:22 | 显示全部楼层
回复【42楼】goodboy3021
-----------------------------------------------------------------------

是以前在淘宝上买的。现在,没有了~~

出0入0汤圆

发表于 2010-12-9 22:31:49 | 显示全部楼层
jh

出0入0汤圆

发表于 2010-12-9 23:32:00 | 显示全部楼层
niu markkkk

出0入0汤圆

发表于 2010-12-9 23:44:50 | 显示全部楼层
太阳能板现在还是很贵

出0入4汤圆

发表于 2010-12-10 07:13:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-22 10:42:35 | 显示全部楼层
程序有没有?

出0入0汤圆

发表于 2011-1-7 14:15:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-7 14:34:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-7 14:59:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-7 15:33:48 | 显示全部楼层
设计一个顶上有太阳能板,内置播放器的大耳机看来是一个可行的设计

出0入0汤圆

发表于 2011-1-7 15:57:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-7 16:33:00 | 显示全部楼层
感觉线有点乱

出0入0汤圆

发表于 2011-1-8 15:38:38 | 显示全部楼层
hao

出0入0汤圆

发表于 2011-3-17 21:32:11 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-3-25 21:36:14 | 显示全部楼层
楼主只会每次做完东西拿出来显摆!!!

出0入8汤圆

发表于 2011-3-25 21:52:09 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-3-25 22:00:08 | 显示全部楼层
好漂亮

出0入0汤圆

发表于 2011-3-25 22:13:05 | 显示全部楼层
回复【4楼】dengting 守望者
背景不错!多少光圈?多少快门?
-----------------------------------------------------------------------

汗!这跟背景有什么关系
背景虚化以突出主体,有的叫景深~跟焦距有关~

出0入0汤圆

发表于 2011-3-25 22:31:50 | 显示全部楼层
怎么变成讨论拍照技巧的贴了

出0入0汤圆

发表于 2011-3-26 14:48:01 | 显示全部楼层
问下楼主和各位做过的朋友,我现在想播放WINDOWS的启动铃声,但是遇到了几个细节问题:
1,WAVE音乐数据是双声道16位编码的,那么应该在WINHEX里可以看到该WAV音乐文件里有重复出现的数据,因为据说左右声道数据是一样的,但是我在查看的时候没有发现重复出现的数据。
2,16位双声道我是不是可以用如下的办法来把他变成8位的:隔两个数据位取两个数据,然后把地位抛弃,保留高位,用高位来控制PWM脉宽。或者谁能发我个8比特单声道的WAV音乐文件,我觉得那样好处理一点。
3,采样频率是22050HZ,那我是不是可以用快速PWM来达到这个频率,但是我觉得不会非常准,那是否会影响播放。
4,关于PWM后后级的两级低通滤波,是不是一定要,如果一定要,谁能共享一下原理图,我看楼主这里没有用到低通滤波的。

谢谢先!

出0入0汤圆

发表于 2011-3-26 19:16:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-26 21:54:24 | 显示全部楼层
看了zf713的程序,想来zf713是用T2的CTC模式产生一个22050HZ的采样频率,然后用OCCR1A产生一个PWM信号,频率为62.5KHZ,然后T2中断里面改变OCCR1A以产生不同脉宽的PWM来模拟DAC,但是我对这句不理解:     TCCR2=TCCR2 |(1<<WGM21) | (1<<CS22)| (1<<CS21)| (1<<CS20);//T2:匹配清0,1024分频
OCR2=0xff;  //匹配频率大概61Hz
61HZ是用来干什么啊?
我现在的想法是这样的,我用定时器一产生一个基频可变的快速PWM,这样的话我就可以只用一个定时器来做音频播放了,但是在实际波形输出的时候有点混,不知道有没有人用过类似方法,还请指教。

出0入0汤圆

 楼主| 发表于 2011-3-28 08:18:01 | 显示全部楼层
回复【62楼】IGO_AVR
-----------------------------------------------------------------------

1、立体声左右声道不一定一样
2、是的。16位抛掉低位。不过注意16位和8位的基准0电位不一样。
3、采样率是 定时给予 中断。PWM相当于是电压。
4、反正你的耳朵也听不到高频。呵呵~~

出0入0汤圆

 楼主| 发表于 2011-3-28 08:19:00 | 显示全部楼层
回复【60楼】QRAHAO 啊浩
-----------------------------------------------------------------------

你这头像给我留下深刻的影像啊~~

出0入0汤圆

发表于 2011-3-28 09:33:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-28 13:27:04 | 显示全部楼层
回复【65楼】zbjzxc
-----------------------------------------------------------------------

我的WAV播放器也能播放了,但是有低频信号干扰,突突突的声音很大,相比之下音频信号很小,需要加带通滤波吗?

出0入0汤圆

发表于 2011-3-28 17:49:02 | 显示全部楼层
用示波器看了下,波形出现断续状态,觉得这可能是突突突的声音的罪魁祸首,能帮我分析下我这个程序吗?
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "ATmega8_USART.h"
#include "type.h"
#include "SD.h"
#include "ATmega8_SPI.h"
#include "fat.h"
mUINT16 volatile Fifo=0;
ISR(TIMER0_COMP_vect)
{
OCR2=SECTORBUFF[Fifo]; //计数匹配值设为156
Fifo++;
}


void TIMER2_init()
{
//TIMSK=0X40;
OCR2=100; //计数匹配值设为156
TCCR2 = (1<<WGM21)|(1<<WGM20)|(0<<CS22)|(0<<CS21)|(1<<CS20)|(1<<COM21)|(0<<COM20);


//TCCR2|=0X80;
}

void TIMER2_over()
{
//TIMSK=0X40;
OCR2=100; //计数匹配值设为156
TCCR2 = (1<<WGM21)|(1<<WGM20)|(0<<CS22)|(0<<CS21)|(0<<CS20)|(1<<COM21)|(0<<COM20);


//TCCR2|=0X80;
}

void TIMER0_init()
{

TIMSK|=0x02;
OCR0=90; //计数匹配值设为156
TCCR0 = (1<<WGM01)|(0<<WGM00)|(0<<CS02)|(1<<CS01)|(0<<CS00)|(1<<COM01)|(0<<COM00);
}


int main()
{
//DDRA=0XFF;
DDRB=0XFF;
DDRD=0X80;
USART_init(416);
USART_sendstring("debug\n");
SD_init();
FAT32_GetBPB();
ShearchFile(1);
ShearchFile(1);
runintoFile();
TIMER0_init();
TIMER2_init();
sei();
while(readfileSector())
{
//sei();
while(Fifo<512);
Fifo=0;
//cli();
}

TIMER2_over();
USART_printf("EndOfItem:",EndOfItem);
}
我是这样来播放音乐的,先读音乐数据的一个扇区,然后在WHILE里等待,直到FIFO缓存里的数据全部被读完,然后读下一个音乐数据块的。发现波形有明显的断续:如图

时间档,50ms (原文件名:DSC01916.JPG)

出0入0汤圆

发表于 2011-3-28 21:08:56 | 显示全部楼层
顶一下,我的意思就是我在读数据这段时间内PWM的脉宽是定值,所以出现了图上的断续情况,该怎么解决呢,虽然我的SD卡的数据读取速度应该是够快的,但是读出来还是要一定时间的。所以还是有明显断续,无力中,求做过的朋友指条明路。

出0入0汤圆

 楼主| 发表于 2011-3-28 23:40:37 | 显示全部楼层
回复【70楼】IGO_AVR
-----------------------------------------------------------------------

用 FIFO 边读边写。即可~~

出0入0汤圆

发表于 2011-3-29 09:51:03 | 显示全部楼层
对楼主的FIFO不是太理解,我就是用在内存申请一块来做FIFO缓存,但是我是读一个扇区放一个扇区然后下一个扇区的,这样会有问题吗?

出0入0汤圆

 楼主| 发表于 2011-3-29 21:34:58 | 显示全部楼层
回复【72楼】IGO_AVR
-----------------------------------------------------------------------

这要看你的程序了~~

出0入0汤圆

发表于 2011-3-30 11:15:26 | 显示全部楼层
我的程序在69楼,我觉得问题出在这里:
while(readfileSector())
{
//sei();
while(Fifo<512);
Fifo=0;
//cli();
}

等待SD卡读一个扇区数据的时候PWM脉宽为固定值,如果这个等待时间太长,就会产生断续的情况,但是我不知道怎么解决,所以想知道楼主是怎么处理的。不是读一个扇区--播完--再读一个扇区--再播完---再读的吗?

在线等!谢谢

出0入0汤圆

发表于 2011-3-31 08:59:17 | 显示全部楼层
m

出0入0汤圆

发表于 2011-3-31 09:04:16 | 显示全部楼层
都是强人,MARK.

出0入0汤圆

发表于 2011-3-31 10:17:47 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-4-10 11:30:26 | 显示全部楼层
回复【74楼】IGO_AVR
-----------------------------------------------------------------------

readfileSector() 时,你就要重新计算 WAV数据 扇区地址了。这里花费的时间,可能会使512字节的缓冲变空。
出现问题。

出0入0汤圆

发表于 2011-4-11 08:14:17 | 显示全部楼层
嗯,我也觉得问题出在这里,而且照我的程序,肯定是缓冲区变空之后再填充,所以势必有突突声,可是我觉得只要要取数据,同时还要播放,在没上操作系统的情况下,肯定不能同时进行啊,那么我应该如何修改呢,个人认为可以这样:在20.5K的采样频率下即每次采样有40.8us的时隙,在这个时隙内我如果进行一定量的数据读写,比方说一个数据,这样就不会产生突突声了,但是区区40.8us能进行一次SD卡的读写操作吗?(也就600多个指令)。还是有其他什么处理方式呢?等~

出0入0汤圆

发表于 2011-4-17 10:19:13 | 显示全部楼层
朋友,回应一下嘛!

出0入0汤圆

发表于 2011-4-17 11:42:15 | 显示全部楼层
今天再仔细研究了一下楼主的代码,终于找到了问题的所在,我在簇跳转之间花了太长时间,代码如下:mUINT8 readfileSector()
{
mUINT8 Sector_count_Max=7;
mUINT16 i;
mLONG32 ItemSizeTemp;
if(ItemSize==0)
return 0;
SD_readsector(ClusterToSector(CurrentClusterNumber)+Sector_count,SECTORBUFF);  //读当前活动扇区
if(FlagSector==0)                                                    //|
        {                                                                //|这个计数标志用来控制每次读一个簇的时候只判断一次是否为最后簇
        FlagSector=1;                                                    //|
        if(GetNextCluster(CurrentClusterNumber)==0x0fffffff)             //判断当前簇是否为最后一簇
                {
                ItemSizeTemp=ItemSize%(BytesPerSector*SectorPerCluster);     //算出在最后一簇里面还有多少个扇区的数据是有效的
            Sector_count_Max=(ItemSizeTemp/BytesPerSector);              //将扇区计数器上限重新设定
                EndOfItem=ItemSizeTemp%BytesPerSector;                       //计算出最后一个有效扇区内的有效字节
                FlagEndOfItem=1;                                              //置位末端对齐标志
                }   
    }
if(Sector_count==Sector_count_Max)
        {
        Sector_count=0;
        FlagSector=0;
        CurrentClusterNumber=GetNextCluster(CurrentClusterNumber);   //如果不是最后簇,返回下一簇簇号
        if(CurrentClusterNumber==0X0fffffff)
        return 0;
        return 1;
        }
Sector_count++;
return 1;
}

后来把上面代码改成如下:
mUINT8 readfileSector()
{
mUINT8 Sector_count_Max=7;
//mUINT16 i;
//mLONG32 ItemSizeTemp;
if(ItemSize==0)
return 0;
SD_readsector(ClusterToSector(CurrentClusterNumber)+Sector_count,SECTORBUFF);  //读当前活动扇区
//if(FlagSector==0)                                                    //|
//        {                                                                //|这个计数标志用来控制每次读一个簇的时候只判断一次是否为最后簇
//        FlagSector=1;                                                    //|
//        if(GetNextCluster(CurrentClusterNumber)==0x0fffffff)             //判断当前簇是否为最后一簇
//                {
//                ItemSizeTemp=ItemSize%(BytesPerSector*SectorPerCluster);     //算出在最后一簇里面还有多少个扇区的数据是有效的
//            Sector_count_Max=(ItemSizeTemp/BytesPerSector);              //将扇区计数器上限重新设定
//                EndOfItem=ItemSizeTemp%BytesPerSector;                       //计算出最后一个有效扇区内的有效字节
//                FlagEndOfItem=1;                                              //置位末端对齐标志
//                }   
//    }
if(Sector_count==Sector_count_Max)
        {
        Sector_count=0;
        FlagSector=0;
        CurrentClusterNumber++;
//=GetNextCluster(CurrentClusterNumber);   //如果不是最后簇,返回下一簇簇号
        if(CurrentClusterNumber==0X0fffffff)
        return 0;
        return 1;
        }
Sector_count++;
return 1;
}


OK!

出0入0汤圆

发表于 2011-4-19 22:28:02 | 显示全部楼层
我觉得相比于大家,我还有很多要学习的

出0入0汤圆

发表于 2011-4-25 20:50:20 | 显示全部楼层
M

出0入0汤圆

发表于 2011-5-4 19:46:44 | 显示全部楼层
m

出0入0汤圆

 楼主| 发表于 2011-5-10 08:52:46 | 显示全部楼层
回复【80楼】IGO_AVR
-----------------------------------------------------------------------

不好意思,你回复了,我也没有消息提示呀。。。

出0入0汤圆

发表于 2011-5-10 12:51:31 | 显示全部楼层
不错,今天学习学习!1

出0入0汤圆

发表于 2011-5-11 22:16:20 | 显示全部楼层
学习中。。。

出0入0汤圆

发表于 2011-7-20 01:10:45 | 显示全部楼层
这也太NX了吧,PWM----DAC! 真是个好办法

出70入0汤圆

发表于 2011-8-20 16:31:31 | 显示全部楼层
无意进来此处,感觉这是个广告!!顺便也进了楼主的淘宝,搞笑,竟然在卖源代码...什么51、AVR之类的简单代码,你做的这些小东西本论坛早就有很多人做过了,而且跟人家几乎是一样的

出0入0汤圆

发表于 2014-7-31 09:39:57 | 显示全部楼层
很高端大气的样子 也想做一个

出0入0汤圆

发表于 2014-8-6 17:36:21 | 显示全部楼层
  好东东 mark一下

出0入0汤圆

发表于 2014-8-11 17:49:12 | 显示全部楼层
确实不错,可以自己DIY一下,好酷~~~

出0入0汤圆

发表于 2014-8-13 20:10:15 | 显示全部楼层
zy020503 发表于 2011-3-25 21:36
楼主只会每次做完东西拿出来显摆!!!

对别人也是一种启发,起码知道这样的方案可靠

出0入0汤圆

发表于 2014-8-13 20:28:55 | 显示全部楼层
IGO_AVR 发表于 2011-4-17 11:42
今天再仔细研究了一下楼主的代码,终于找到了问题的所在,我在簇跳转之间花了太长时间,代码如下:mUINT8 r ...

对下面代码的一点疑问:如果簇链是碎片化的呢?是不会读到无效数据?
CurrentClusterNumber++;//如果不是最后簇,返回下一簇簇号

出0入0汤圆

发表于 2014-9-19 15:02:16 | 显示全部楼层
MARK         

出0入0汤圆

发表于 2014-9-19 15:18:18 | 显示全部楼层
用STM32做过,效果不理想。上班时在产品上玩了一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-2 10:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表