搜索
bottom↓
回复: 45

刚做的Mega16学习板,请大家多提宝贵意见

[复制链接]

出0入0汤圆

发表于 2006-7-2 22:09:16 | 显示全部楼层 |阅读模式
发了两次都忘了提供原理图等技术资料,结果被移到水坛了:(,现在厚着脸皮再发一次

实验板包括以下资源:

8个LED显示(点亮单个灯/流水灯/花样灯)。

LCD显示(作各种显示实验,留有1602及12864LCD接口)。

8位数码管显示(可作数码管显示实验/电子钟)。

3个独立键盘(可作外部中断实验//普通键盘实验)。

四路独立PWM输出实验(可作为直流电机调速、buck变换及电池充电等)。

小型步进电机输出接口(最多可以驱动四相步进电机)。

红外线遥控接收输入(可作红外线遥控器的接收解码实验)。

DS1302万年历功能(板上可自带后备电池,掉电时钟仍然运行)。

RS232通信接口电路(可作单片机和电脑的通信实验)。

I2C EEPROM通信电路(通过实验24C02,可熟悉I2C读写外部器件的方法,时序)。

内部EEPROM读写实验(用Mega16内部EEPROM对数据进行存取实验)。

DS18B20数字测温电路(DS18B20芯片为选购器件,不在MCD-DEMO的范围内)。

一路电位器模拟A/D输入(板上提供8通道输入接口)。

板上留有ISP及JTAG接口,与标准ISP及JTAG接口兼容。

所有I/O口引出,方便用户扩展其它资源。



实验板原理图(时间关系没有经过整理)

点击此处打开armok01122168.pdf



再发几张特写,是调试用的第一块板,焊接时不是很讲究,清洗也不到位,仅作电性能检测用的,请见谅:)











还有一个问题要请教,各位在焊好后是怎么清洗的?我用清洗剂和绵签洗好发现上面还是有一层粘粘的,感觉不是很好,且清洗剂好像会洗掉器件上的字,如LED数码管上的字会被洗掉,各位是怎么洗的,有这方面经验的朋友和我联系,教我几招:)

出0入0汤圆

发表于 2006-7-2 22:15:23 | 显示全部楼层
发过啦!知道啦!

出0入0汤圆

发表于 2006-7-2 23:15:36 | 显示全部楼层
把PCB也压上来就更爽了,呵呵

出0入0汤圆

发表于 2006-7-3 09:11:05 | 显示全部楼层
酒精

出0入0汤圆

 楼主| 发表于 2006-7-3 20:31:28 | 显示全部楼层
酒精洗过后会发白,怎么办?
头像被屏蔽

出0入0汤圆

发表于 2006-7-4 02:03:21 | 显示全部楼层
你的酒精有问题,有水份。使用化学级别的吧。

出0入0汤圆

发表于 2006-7-4 06:25:38 | 显示全部楼层
几点意见



1、LED应加三极管驱动,一来不需要反相使用,二来可以减轻CPU负担,最起码,限流电阻应该够大,你现在用240的,如果LED压降0.5V,那么8个全亮就是150mA,再加上些其他东西,很容易超标



2、ISP应该做成6线制的,尤其当它和jtag接口在一起的时候,虽然说你现在的jtag口取消了VTref使得ISP接错不至于短路,但相应的,功能稍强的jtag仿真器也会因此失去对低电压的支持



3、既然是实验板,那么委实串口应该接全9根线——至不济也该把RTS/CTS加上,纯粹的两线制,很有些东西做不成的



4、一条附加的建议,MCU电源应该采用开关电源初步稳压、然后线性电源去除纹波的方式,并MCU电源应做成可调压式(最好还可以通过一片tiny26进行电压采样及PWM调压,并且t26可以通过串口与PC或I2C与主MCU通信改变电压输出),且与与LCD电源分离,然后采用电平转换芯片提供双方接口

出0入0汤圆

发表于 2006-7-4 06:30:58 | 显示全部楼层
最后,图画得很干净,不过建议把各个功能模块分开并用虚线隔离,另外,白底黑线在屏幕上对比不够明显而且看久了眼睛会累,建议改改

出0入0汤圆

 楼主| 发表于 2006-7-4 21:54:49 | 显示全部楼层
谢谢楼上宝贵建议,有时间会改进,因这是我的第一个版本,主要还是处于验证的阶段,所以很多没有经过整理,如原理图等,等这一版本全部调通了到时会改一版.最后定稿后公布所有资料

出0入0汤圆

发表于 2006-7-4 22:18:24 | 显示全部楼层
楼主板子做的不错

请问您

您可以把您的电源插座和那个电池插座的PCB得库文件给我吗

谢谢

我的邮箱是:xuepeng3000@163.com

谢谢

出0入0汤圆

 楼主| 发表于 2006-7-6 15:45:22 | 显示全部楼层
这几天电脑出问题,请楼上主动与本人联系,我发给你

出0入0汤圆

发表于 2006-7-6 19:29:15 | 显示全部楼层
不错的

出0入8汤圆

发表于 2006-7-6 20:01:53 | 显示全部楼层
要是我画PCB,我会将按键放到电源那个位置,电源放到LED那个位置,LED往MCU拿挪一下,呵呵,JTAG放到最上面,知道为什么吗,你要考虑到使用的方便。这叫什么来着,人机工程?瞎掰,呵呵,别介意。

想一想,面对一块PCB,按照大家的左右手习惯还有一般放在桌面上与电源、PC的连线,要是需要key,结果上面挂着一个10pin的连线扯着,我会懒得用的。你既然是做学习板,给大家用的,用来不方便,多麻烦?看看你的第三张图,放在桌上的话,多不方便。还有你的LCD连接座,不知道你有没有考虑过LCD的PCB会不会与JTAG座卡着?其实都是小事一件,不知你有没有考虑到?

出0入0汤圆

 楼主| 发表于 2006-7-7 20:12:38 | 显示全部楼层
Gran真是细心啊,把我内心的痛苦淋漓尽致地说了出来:)我布线时有两点是想到了,但不知道具体应该如何取舍,就是电源和RS232口,按键和ISP及JTAG确实没有想到,下一版吧,自己用用算了,呵呵

出0入0汤圆

发表于 2006-7-7 20:16:58 | 显示全部楼层
用洗板水和白电油就可以了。对塑料有影响注意。

出0入0汤圆

 楼主| 发表于 2006-7-8 13:33:33 | 显示全部楼层
洗板水??白电油???我一个都没有听说过啊:(

电子市场有卖吗?我是想用无水酒精多洗几次算了,反正是做几块自己用用,呵呵

出0入0汤圆

发表于 2006-7-8 20:55:07 | 显示全部楼层
楼主大哥,能否共享一下LED的封装?小弟还不会做封装,手头也没有实物。

先行谢过了!

出0入0汤圆

 楼主| 发表于 2006-7-9 11:14:33 | 显示全部楼层
不好意思,我不知道怎么导出单个封装:(你直接和我QQ联系吧

出0入0汤圆

发表于 2006-7-9 16:45:33 | 显示全部楼层
楼主,你的联系方式呢?谢谢

出0入0汤圆

 楼主| 发表于 2006-7-10 09:59:21 | 显示全部楼层
不好意思,忘了留下我自己的QQ了:)

OICQ:107437596

大家一起交流

出0入0汤圆

 楼主| 发表于 2006-7-17 22:51:21 | 显示全部楼层
学习板的第一阶段基本已定型,特发上调试程序,因工作忙,以后慢慢增加

先发个AD转换并在LED数码管上显示AD值的程序,程序已验证过,但程序只是作为调试用,写得较简单,请大家谅解:)

#include <iom16v.h>

#include <macros.h>

extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};



#define                sclon                  PORTB |=BIT(0);                   //时钟高

#define                scloff                  PORTB &=~BIT(0);

#define                dion                  PORTB |=BIT(1);                    //数据高

#define                dioff                  PORTB &=~BIT(1);

unsigned int adc_rel;

int dat;

void adc_init(void)

{



ADCSRA=0X00;                //关ADC

ACSR  =(1<<ACD);//关闭模拟比较器

ADMUX = (1<<REFS1)|(1<<REFS0); // 2.56V

ADCSRA = (1<<ADEN)|(1<<ADSC)|(ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1); // adc中斷許可,連續方式, 64分頻

      

}



#pragma interrupt_handler adc_isr:iv_ADC

void adc_isr(void)

{

int data_H,data_L;

ADCSRA = 0x00;  

adc_rel=ADC;

ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE);

}



void dataOUT(unsigned char temp)

{

    unsigned char i,temp1;

   temp1 = tab[temp];

    for(i = 0;i < 8;i++ )

        {

        scloff;

                if((temp1&0x80)!= 0x80)

              {

                  dioff;

                 }

        else

              {

                  dion;

                 }

                          sclon;

                        temp1 <<=1;

                        scloff;                                               

        }

}



void delay(void)

{

  int i;

  for(i=0;i<200;i++)

;

}



void display(unsigned int k)

{

         dataOUT(k/1000);

         PORTB &=0xC7;                            //DIG1

         delay();

         dataOUT(k/100%10);

         PORTB |=0x08;

         PORTB &=0xCF;                            //DIG2

         delay();

         dataOUT(k/10%10);

         PORTB &=0xD7;                            //DIG3

         PORTB |=0x10;

         delay();

         dataOUT(k%10);

         PORTB |=0x18;

         PORTB &=0xDF;                            //DIG4

         delay();

}







void main(void)

{

   DDRB=0xff;

  DDRA=0x00;

PORTA=0x00;

adc_init();

SEI();

while(1)

{

delay();

display(adc_rel);

}

}

出0入0汤圆

发表于 2006-7-19 13:38:05 | 显示全部楼层
楼上,给个注释可以吗?刚学看不懂。谢谢

出0入0汤圆

 楼主| 发表于 2006-7-20 22:46:56 | 显示全部楼层
再上传一个mega16内部EEPROM的读写范例

功能如下:

向EEPROM的01、02、03地址分别写入0x55、0xAA、0x00,然后读这三个中任一地址,将内容显示在数码管上验证,此程序以读02地址为例,02地址中写入了0xAA(170),所以LED数码管上显示170。





#include <iom16v.h>

#include <macros.h>

#include <eeprom.h>





extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};



//#define         osccal              0x7d                                   //内部RC校正常数

#define                sclon                        PORTB |=BIT(0);                   //时钟高

#define                scloff                        PORTB &=~BIT(0);

#define                dion                        PORTB |=BIT(1);                    //数据高

#define                dioff                        PORTB &=~BIT(1);

void delay(void)

{

  int i;

  for(i=0;i<200;i++)

;

}

void dataOUT(unsigned char temp)

{

    unsigned char i,temp1;

   temp1 = tab[temp];

    for(i = 0;i < 8;i++ )

    {

                  scloff;

                if((temp1&0x80)!= 0x80)

          { dioff;}

        else

          { dion;}

                          sclon;

                       temp1 <<=1;

                        scloff;

                  }

}

void display(unsigned int k)

{

dataOUT(k/1000);

PORTB &=0xC7;                            //DIG1

delay();

dataOUT(k/100%10);

PORTB |=0x08;

PORTB &=0xCF;                            //DIG2

delay();

dataOUT(k/10%10);

PORTB &=0xD7;                            //DIG3

PORTB |=0x10;

delay();

dataOUT(k%10);

PORTB |=0x18;

PORTB &=0xDF;                            //DIG4

delay();

}



void eeprom_write(unsigned int E_add,unsigned char E_data)

{

while(EECR&(1<<EEWE));

EEAR=E_add;

EEDR=E_data;

EECR|=(1<<EEMWE);

EECR|=(1<<EEWE);

}



unsigned  char eeprom_read(unsigned int E_add)

{

while(EECR&(1<<EEWE));

EEAR=E_add;

EECR|=(1<<EERE);

return EEDR;

}



void main(void)

{

unsigned char readdata;

DDRB=0xff;

eeprom_write(0x01,0x55);//85

eeprom_write(0x02,0xAA);//170

eeprom_write(0x03,0x00);//0

readdata=eeprom_read(0x02);

while(1)

{

display(readdata);

}

}

出0入0汤圆

 楼主| 发表于 2006-8-8 17:09:43 | 显示全部楼层
一段时间没来,居然没人顶贴,本想再发几个实例的,打击啊:(

出0入0汤圆

发表于 2006-8-9 09:29:22 | 显示全部楼层
请问98dian,做这个板要多少钱?板能做多大?几层?

出0入0汤圆

发表于 2006-8-9 10:11:16 | 显示全部楼层
我支持!!

我是新手,向98dian 学习

出0入0汤圆

发表于 2006-8-9 10:34:58 | 显示全部楼层
我也想做个学习板,不过我现在是用48做,如果是用万用板的话,信号会不会干扰很大,如果晶振是16M的话.谢谢

出0入0汤圆

 楼主| 发表于 2006-8-9 17:12:42 | 显示全部楼层
回楼上的,在杭州做板一般制板费60,再加实际面积的费用,此板为双面板.

出0入0汤圆

发表于 2006-8-10 01:50:47 | 显示全部楼层
支持98dian,希望你继续发程序。

我会用protel做板,画图 不过我地处偏远 ~~~做板不便(连元件都在网上邮购!) 所以现在还在用万用板 全手工做的啊 呵呵

那个板已经被我焊了很乱  想升级

  

我觉得学单片机有个学伴最好了 avr的编程你比较强 我刚从51转来 不过C还不错 应该很快学好avr的编程 还请您多指点呢



可以合作吗?你不是打算做第二版  我们一起做。你那里做板真方便 我可以分担一部分任务和成本 做好了我想要个板

可以吗? 谢谢

QQ:23767251

出0入0汤圆

发表于 2006-8-10 13:56:56 | 显示全部楼层
支持

出0入0汤圆

 楼主| 发表于 2006-8-10 14:51:13 | 显示全部楼层
谢谢楼上各位,你们的支持是我最大的动力,由于本人一直从事技术方面,做此板也只是为了自己学习,但因工作太忙,也是多说少动,非常希望有初学者和我一起学习,至于做第二板的问题,我想有必要的话会做,到时可以和各位合作。主要还是看时间及有没有做第二板的必要性,主要感觉这一版用于学习已足够了,我也不想单纯用于商业化。欢迎大家我和一起讨论技术问题。

出0入0汤圆

发表于 2006-8-12 02:01:02 | 显示全部楼层
感谢楼主!

出0入0汤圆

发表于 2006-8-12 09:24:04 | 显示全部楼层
板做的很漂亮呀

出0入0汤圆

发表于 2006-8-12 11:32:54 | 显示全部楼层
漂亮

出0入0汤圆

 楼主| 发表于 2006-8-20 15:54:17 | 显示全部楼层
谢谢

出0入0汤圆

 楼主| 发表于 2007-3-23 18:04:41 | 显示全部楼层
一段时间没来,沉到这么下面了:(

出0入0汤圆

发表于 2007-3-23 20:48:16 | 显示全部楼层
你是不是要全天下的人都要知你做了一块很漂亮的板子呀。发到那么多网站上,这么久了还顶上来。是不是要每个人都评价下你的板子呀,虚荣心不要这么强呀。

出0入0汤圆

发表于 2007-3-24 11:41:22 | 显示全部楼层
楼主的板子好像在那里看过,不过记不太清了。
-----此内容被AVR_AFA于2007-03-24,11:41:45编辑过

出0入0汤圆

发表于 2008-8-19 10:28:50 | 显示全部楼层
楼主能把你的jtag的全部资料发上去吗。我的jtag好像和你的一样,现在出问题了,先谢过了

出0入0汤圆

发表于 2008-8-19 13:14:11 | 显示全部楼层
lz是第一次画板子吗?
我第一次画了板子问题多多 啊~~真是郁闷

出0入0汤圆

发表于 2009-6-10 10:09:32 | 显示全部楼层
mark

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-3 06:06

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

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