自制一个串口带时钟的加密狗

来源:互联网 发布:社交网络用英语怎么说 编辑:程序博客网 时间:2024/05/01 16:50

 

首先是器件选型问题:

MCU    选一个 STC12C5A16S2 LQFP 44
       其实就是51单片机,如果你没有玩过51单片机,就把它理解成一台超微型的电脑主机就可以了,里面有Flash存储器(可以理解成PC的硬盘,不过空间不大),还有RAM(可以理解成PC的内存,当然空间也不大)等等。至于为什么选STC这个品牌呢,因为烧写程序接口容易定义,直接用串口就可以进行程序的烧写了,所以选择用STC。为什么用12C5A系列呢,因为它的速度要比89C系列快,还有12T的模式,为什么要选16S2型号呢,因为有16k的Flash,当然还有08、32、40、48、52、56、60、62等型号,分别是指他们的Flash空间大小,S2表示支持双串口,还有AD的(表示数模转换IO口),为什么选择 LQFP 44 封装呢,因为这个封装比较容易焊接,LQFP 48 的话就太小了,对于手工板来说不好制作,也不方便焊接,如果用DIP40,又太大了,对于加密狗这种设备还是小点好看。

通讯层器件    选择 MAX232 SOP 16
              这是串口通讯的一个基本器件,是将MCU的IO输出转RS232 TTL电平的芯片(其实就是个电压转换芯片),因为串口通讯的电压是用9v,而MCU的IO脚的耐压能力没那么高,输出电压也没那么高,因为它只能输出5V或接受5V以内的电压,过高的电压会让MCU烧毁,所以需要将MCU输出的5V电压转换成9V发出去,让收到的9V电压转换成5V供进来,这样才能解决串口通讯上9V电压的通讯问题,当然,其实也可以用9014、9015这样的三极管来自己搭电路解决这个问题,但既然有现成的转换模块,外围电路也不多,成本也不高(买得便宜的话还有RMB 0.8元/块 的)。用 SOP 16封装的理由是:贴片封装,小巧好看省空间

时钟芯片    选择 DS12C887 或 DS12C887+
            这一款时钟芯片虽然样子大了点,但是好处是可以充电,每次充满电后,在没有任何供电的情况下,这个芯片可以自己调用内部电池的电自行工作,理论上可以跑10年。当然,也可以选择 DS1302 这样的芯片,有贴片封装的,不过要外接3V的电池和晶振。通常一个纽扣电池可以跑两年左右。不过我这里就只介绍DS12C887的方式。

 

完成基本器件选型后我们来设计好电路原理图

先安装一个 Protel DXP2004 或者 Protel 99 或者 Altium Designer Winter 09 之类的软件,然后开始设计原理图,这里我就不细说工具的使用部分了

先说一下供电部分电路

 

这个图里有4个器件,JP1是一个电源接口,可以用排针来弄,也可以直接弄成个焊盘直接焊接上电线。

C1是一个电解电容,因为无极性的电容没那么大的,所以就用电解电容,我使用贴片的,但看起来也不小

C2是一个无极性的贴片电容,用0805的就可以了,0603的太小不好焊接。

这两个电容主要用来滤波用的,作用是让电压更平稳的输出到后面的电路中。

LED1是一个发光二级管,也称LED,主要是用来显示是否已经上电的状态,R1是帮他接的500欧的电阻,因为LED的工作电压通常在1.5-3V左右,用这个电阻起到降压的作用,让他不至于烧毁。

这时的 VCC 就代表一个平稳的 +5V 供电,GND 就代表地。

我们再来看看 MCU 部分的电路

 

MCU 要能工作需要几个固定条件

1、供电,这款MCU供电是 5V 的,所以在 38 脚我们接上 VCC, EA脚注意也接上 VCC

2、接地,要电路能运转,必须形成电路的回路,根据 MCU 管脚定义,所以我们在 16脚接墒 GND(地)

3、上晶振,就像 PC 的 CPU 一样,MCU 也有时钟频率,PC 的 CPU 振荡频率是内部的,而这款 MCU 的是在外部振荡的,所以我们必须在外部给他接个晶振。而外部的振荡电路如下:

 

 

根据 MCU IO口定义,我们将振荡电路的两端接到 MCU 的第 14、15 口上。

   Y1是表示晶振,频率是 22.1184 兆赫兹,为什么要用这个频率呢?主要是方便串口通讯的时钟频率。

   C7 和 C8 是两个 33皮法的无极贴片电容,因为晶振频率高,每个振荡都有可能影响下面的地产生振荡,所以用两个比较小的电容进行滤波。其实用 20pf - 35pF 都可以的。

这样一来,MCU 所需基本的条件就有了,只要一供电,MCU就会读取内部的程序进行工作了。

    但是程序是哪来的呢?当然是用户自己烧写进去的啦,那怎么烧写,通过什么地方烧写呢?上面我有提过,是通过串口烧写,所以,下一步我们就来看看这款MCU的串口通讯部分的电路。

 

4、串口通讯

     这款MCU有两个串口,共4个IO管脚来处理串口通讯。我们只需要用到一个串口,所以我们使用第5脚和第7脚来进行串口通讯的收发处理。
     为什么非要用第5和第7脚呢,因为这是厂家出厂时定义给用户用作串口通讯用的两个管脚,烧写程序也是用这两个管脚传输数据后烧写的,如果只作为通讯,任何IO口都可进行串口通讯(但需要自己在程序里模拟处理整个通讯包过程),但是如果使用这个口,只需要设置几个参数,就很方便的可以直接使用中断处理串口通讯内容。

     然而,串口通讯的电压标准是9V,也就是说,发送出去的电压是9V。接收的电压也是9V,我们使用的 MCU IO 口是 5V 的,如果这个电压直接送到 MCU 的 IO 口,后果可想而知,所以我们必须作电压转换,这里我们采用 MAX232 作为电平转换芯片。以下是 MAX232 的基本电路。

      根据 MAX232 的外围电路标准,电容是在 0.1 微法到 1 微法到之间,主要是根据连接串口的电缆线长度而决定的。电容越大,线缆就可以越长,电容越小,线缆就越短,但是长度通常都用 1.5M,所以不用太在意这个值。我们这里使用 1微法,这样能保证线缆能尽可能的长的条件下可以进行通讯。C3、C4、C5、C6 都是 1 微法无极性的 0805 贴片电容,将第 10 脚接到 MCU 的第7脚,将第9脚接到 MCU 的第5脚,第7脚和第8脚分别接到PC串口上的2、3脚上,供电和接地部分看上图就清楚了,我也不多说了

5、时钟

      这一款时钟芯片主要是8位并行通讯的,所以尽量将他的数据口直接到 MCU 的一组 IO 口上,我这里是接到了 MCU 的 P0 口上,这样方便程序的读写操作。在管脚连接上,尽量避免 P1.4-P1.7的 IO 口,因为这几个口是 SPI 脚的定义口,弄不好会影响程序烧写的,因为虽然说STC是通过串口烧写,但其实它是内部模仿 SPI 烧写的,所以尽量避免接这种可返回和设置的设备端口在这里使用。

 

到此为止,基本的原理图我们已经作出来了,剩下来的就是制作 PCB 图和制版写程序了。

根据上面的原理图,设计PCB图

设计时PCB图

打印时PCB图

 

PCB 的制作的细节我就不多说了,用一下DXP就知道了。

下面我们来看看制作电路板的过程:

 

材料准备:

    热转印纸(可以用那种贴刻字剩下的那种背面有腊的那种纸)

    激光打印机(打印图纸用)

    过塑机(用来热转印)

    三氯化铁(腐蚀电路板用)

    天纳水(清洁转印的炭粉用)

    小电钻和小钻头(用来钻孔,0.6mm、0.8mm、1mm的小钻头,点钻最好用小台钻)

    一小节网线(用来弄过孔)

    电烙铁

    焊锡丝

    松香

    电路所需的电子元件

第一步:打印PCB

第二步:热转印

      先将覆铜板用800-1000的沙纸大磨光亮,然后再把打印好的热转印纸剪出来放到覆铜板上,到过塑机上过几遍(注意:温度在180度-220度之间),等待板子冷却(可以用风扇加快冷却时间),最后将转印制慢慢撕下来,这样打印机的炭粉就被转印到覆铜板上了。

 

第三步:填线

      用一些记号笔将转印不是很好的部分填好,这样腐蚀出来的板子才漂亮。

 

第四步:腐蚀电路板

      准备一个盆子,然后向里面倒入清水,在放入三氯化铁搅拌均匀,然后才放入你要腐蚀的覆铜板。

        腐蚀的过程中虽好摇晃一下盆子,这样会加快腐蚀效果。

第五步:钻孔

      通常手工板用0.6的钻头来钻,普通焊盘用0.8mm或1mm的钻头来钻。

 

第六步:清洁板子

 

      用卷筒纸占一些天纳水将板子上的黑色炭粉擦掉,然后再用1000的沙纸打磨光滑

 

第七步:处理过孔

      用一小段剥了皮的网线心作为过孔连接材料,将网线心插入过孔处,然后用烙铁焊接到板子的两面上

 

第八步:焊盘上锡

      将所有的焊盘先上好锡,然后再处理电子元件

 

第九步:焊接元件

      遵循一个规则,先焊接小的矮的,从外到内的方式焊接就方便了。

 

因为这个板子设计的时候是直接插到串口卡的,所以最终就像下图所视

 

这是成品板的样子(打板的就是和自己的山寨货不同,很漂亮吧,呵呵)

 

好了,板子做好了,下面就是烧写程序了。STC的烧写程序在官网有下载:http://www.stcmcu.com

 

下面就是下位机程序和上位机程序的事情了。

本人提供这个范例的下位机程序和上位机API接口,大家可以用这些程序做个范例

 

下载地址:http://download.csdn.net/source/2629516

 

我们现在将板子供电、然后接好PC串口就可以开始烧写程序了:

第一步:先启动STC的烧写软件

 

 

第二步:设置

     选择好CPU型号和你的设备所接的串口号

 

选择 OpenFile/打开文件 按钮选择 Dog.hex

 

 

然后点击 “Download/下载” 按钮

等到提示“请给 MCU 上电...” 的时候你再给你的设备插上电源

 

 

烧写程序将会自动把程序烧写到你的MCU中。

然后可以启动我提供的范例程序来调试。

 

至于下位机的开发工具,可以去下载一个 Keic 8 进行程序开发,使用的是 C 语言。我过一段时间也会发表一些关于 Keil C 的一些基本应用的文章。