单片机交通灯实训报告

单片机交通灯设计

电气工程学院

班级:电气综1101

小组成员:侯政 刘述全

游子民 罗垂军

指导教师:张敏

日期:20##-1-5


目录

第一章:任务分析与设计...................... 1

1.1 任务分析.............................. 1

1.2 设计思路.............................. 1

第二章:硬件与软件设计...................... 1

2.1 硬件组成.............................. 1

2.1.1 设计电路.......................... 1

2.1.2 交通灯电路........................ 1

2.1.3 倒计时显示电路.................... 2

2.1.4 硬件电路图........................ 3

2.2 软件设计.............................. 3

2.2.1 程序流程图........................ 3

2.2.2 程序代码.......................... 5

第三章:调试与运行.......................... 7

第四章:心得体会............................ 7

参考文献.................................... 8


第一章:任务分析与设计

1.1 任务分析

本次设计要求:运用所学单片机原理、模拟和数字电路等方面的知识,设计出一台交通信号灯,模拟路口交通信号。交通灯要求如下:

 1)交通信号灯能够控制东西、南北两个方向的交通,红绿黄灯用对应颜色的发光二极管代替;

 2)用四个2位数码管分别显示东、南、西、北方向的通行时间,东西或南北通行时间为25秒,红绿灯切换中间黄灯闪烁5秒。

1.2 设计思路

1.利用Proteus 7.5 SP3仿真软件按下列要求绘制仿真实例

用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯

用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码

P3^1、P3^2、P3^4~~~P3^7控制数码管的位选

P2^0~~~P2^4接收中断信号并反馈给INT0接口进行中断处理

2.按照基本要求编制程序实现相应功能。

第二章:硬件与软件设计

2.1 硬件组成

2.1.1 设计电路

设计电路主要由两部分组成,一部分为P1口与十二个发光二极管连接电路,另一部分是P0、P2口与八个七段显示器相连的电路,下面分别详细说明。

2.1.2 交通灯电路

 设计中采用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,受单片机P1.0~P1.5控制。单片机的I/O接口与交通灯电路的具体连接方式为:P1.0~P1.2分别接东西方向的红、黄、绿共6个放光二极管,P1.3~P1.5分别接南北方向的红、黄、绿共6个发光二极管。12个发光二极管采用了共阳极的连接方式,因此I/O口输出低电平时,与之相连的发光二极管会亮,I/O口输出高电平时,相应的发光二极管会灭。

2.1.3 倒计时显示电路

 该显示装置选用七段数码管来显示交通灯转换的剩余时间,根据控制要求,每个路口需要两个数码管,这样四个路口就要求八个数码管。有序AT89C51单片机的I/O作为输出时,具有较强吸收电流能力,因此我们可以选用共阳型数码管,这样由单片机的I/O就可以直接驱动,从而简化硬件电路的设计。四个路口倒计时显示被置在同一时刻显示相同的数字,期中P0口用来显示时间的十位,P2口用来显示时间的个位。

2.1.4 硬件电路图

2.2 软件设计

2.2.1 程序流程图

2.2.2 程序代码

 

第三章:调试与运行

1、按照硬件连接图,相应的,P1.0接红灯,P1.1接黄灯,P1.2接绿灯,P1.3接红灯,P1.4接黄灯,P1.5接绿灯

2、从0100H单元开始连续运行,观察六个LED灯是否与交通显示情况对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。

3、调试完灯的显示后,从0100H开始连续运行,观察数码管显示的是否正常,如果不正常,则运用单步运行或断点运行进行分析和调试,直至满足要求。

4、整体运行,观察灯显示和时间显示是否都符合要求,如果不符合,则再调试。直至满足要求。

第四章:心得体会

通过一个星期的交通灯课程设计,我们对单片机相关知识有了更深的了解。对于管脚及相关的控制寄存器,有了更进一步的巩固和了解,尤其是I/O口的实用及编程,相当于重新细细温习了一遍。特别对protues软件画电路图及仿真的过程,我几乎是从零开始学习并使用的。说到这里,得感谢小组里同学们的指导,同时也幸好大家都很繁忙,让我有更多的独立探索学习和思考的空间,将这些东西变成自己的。这次课程设计的任务是通过单片机的I/O口来控制交通灯。主要完成两大项任务,第一就是硬件连接图;第二是编写相应的程序来实现硬件功能。看似简单,实际上需要过硬的知识作为基础,平时看看书考试那样的过程,是难以完成这样的任务的。

这次设计过程中,遇到了很多棘手的问题,很多东西,动起手来束手无策,大多都只得先通过查阅资料或者参考别人做类似课题,才能自己动手设计画图,编程调试。过程中还错误不少,就这个程序吧,我写了改,改了写,花了很长时间。还有就是protues软件仿真原来及整个过程,虽然并不太难,但是我是通过这次才真正弄明白的。通过这次课程设计,关于单片机的知识深入了解了更多,但更多是让我知道了知识的欠缺,很多环节,都慢慢翻书或者查找资料才能完成。让我明白,在以后的学习中,应更注重知识的应用,更注重实质的掌握。

当然这次课程设计,提高了知识的应用能力和和实践能力,同时提高了独立思考独立完成任务的能力,当然同组之间,遇到了实在没办法解决的问题,也相互的咨询和讨论,加强了大家的合作精神和团结能力。这对以后的学习和工作都有重要意义。   

 

 

参考文献

【1】李伯成:《单片机及嵌入式系统》,清华大学出版社,2005

【2】胡汉才:《单片机原理及接口技术》,清华大学出版社,2000

【3】王田苗:《嵌入式系统设计与实例开发》,清华大学出版社,2002

【4】蔡伟智:《LED道路交通灯的研制》,液晶与显示,第20卷第五期

【5】张友德:《单片机原理与应用》,复旦大学出版社,2002

【6】倪继烈:《微型计算机原理与接口技术》,清华大学出版社,2005

【7】李群芳:《单片微型计算机与接口技术(第三版)》,电子工业出版社,2008

【8】张大明:《单片机控制实训》,机械工业出版社,2007

 

 

第二篇:单片机交通灯实训报告

物理与机电工程学院课程设计报告

课程名称:     单片机课程设计                     

系    部:     物理与机电工程学院          

专业班级:                        

学生姓名:                       

指导教师:                          

完成时间:                           

报告成绩:                                             

         

 

                     目录

一、设计任务与要求………………………………………………………

二、方案设计与论证………………………………………………………

三、硬件电路设计

1)单片机模块………………………………………………………….

2)时钟震荡电路………………………………………

3)复位电路……………………………………………

四、软件设计……………………………………………………………………..

程序……………………………………………………………………………….

五、仿真过程与仿真结果……………………………………………………

软件仿真………………………………………………………………………..

六、安装与调试………………………………………………………………………

硬件调试………………………………………………………………………….

七、原理图与PCB图……………………………………………

八、结论与心得………………………………………………………………………..

九、参考文献……………………………………………………………………………..

   

交通灯设计

一、设计任务与要求

设计基本要求:

(1)车辆通行繁忙的十字交叉路口,设计一交通灯控制器,设东西方向通行时间为40秒,当剩余3秒时黄灯亮,南北方向通行时间为25秒,当剩余3秒时黄灯亮。

(2)东西、南北方向各用三个(绿、黄、红)LED表示,并用数码管显示东西、南北方向的剩余时间。

(3)可利用按键修改时间参数。

二、方案设计与论证
1 电源提供方案
   为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案

方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
2 显示界面方案
    该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案:
方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。
方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。
3 输入方案:
    题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:
方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。
方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且

本身的计数器及RAM已经够用,故选择方案二。

三、硬件电路设计

系统总体设计

本系统采用STC89C52RC单片机中的一个定时器完成了交通指示灯的所有切换过程,该系统能根据实际车流量的情况进行东西和南北方向的切换,采用点亮发光二极管模拟交通灯的实际情况。该系统具有实用性强,操作简单,扩展性好等特点。

1.单片机作为微型计算机的一个重要分支,应用面很广,发展很快,单片机最小系统。或者称为最小应用系统。是指用最少原件组成的单片机可以工作的系统,对51系列单片机来说。 最小系统一般应该包括:单片机,时钟电路,复位电路等。

1)单片机模块

单片机模块是整个系统的核心,完成以下功能:输入数据的采集转换,驱动发光二极管的显示等功能,根据系统的要求和现实的考虑,选用宏晶公司生产的STC89C52RC通用单片机,STC89C52RC是一种带8K字节闪烁可编程可擦除只读存储器FPEROM的低电压,高性能CMOS8位微处理器,俗称单片机,该器件采用高密度非意失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中。它是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且廉价的方案,与Intel公司的MCS-51系列单片机相兼容,是广泛应用的单片机之一。

    P3.0:RXD,串行通信输入

P3.1:TXD,串行通信输出

P3.2:INT0,外部中断0输入

P3.3:INT1,外部中断1输入

P3.4:T 0,计时计数器0输入

P3.5:T1,计时计数器1输入

P3.6:WR:外部数据存储器的写入信号

P3.7:RD, 外部数据存储器的读取信号

2)时钟震荡电路

单片机的时钟信号用来提供单片机内各种微操作的时间其准,这个时钟信号可由单片机内时钟电路产生。可以直接使用外部时钟信号。因此,单片机时钟电路通常可以有两种形式内部振荡方式和外部振荡方式。

a)外部振荡方式就是把外部自己有时钟信号引入单片机内。这种方式是用来使单片机的时钟与外部信号保持同步。外部振荡方式电路如图所示。

b)内部振荡方式

MCS单片机内存有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此大器的输入端和输出端。把放大器与作为反馈原件的晶体振荡器或陶瓷振荡器连接就构成了内部自激振荡器并产生振荡时钟脉冲,这种方式为内部振荡方式,如图所示。

外部振荡方式                            内部振荡方式

晶振两边的电容主要以下作用:晶振后面的电容是负载电容,可以用来微调晶体震荡频率。电容的取值一般来说是30pF或33pF

的瓷片电容。本次用30pF的瓷片电容

3)复位电路

复位操作可以使单片机初始化,也可以使死机状态下得单片机重新启动,计算机在启动时,都需要复位,使CPU和系统中其它部件都处于一个确定的初始状态。从这个状态开始工作,在振荡器正在运行的情况下。复位是靠在RST引脚处至少保持2个机器周期(24个振荡器周期)的高电平而实现的。可以分为上电自动复位和按键手动复位

a)上电自动复位

对于MCS-51系列来说,最简单的上电复位电路如图所示,就是由一个电阻和一个电容构成的。在系统上电时,经C1与R1充电,使RST端为高电平,持续时间大于两个机器周期完成复位。电容充电结束后,系统复位结束,开始正常工作。

b)按键手动复位

按键手动复位有电平方式和脉冲方式两种。在本系统中采用按键手动电平自动复位如图如下。

上电自动复位方式                       手动电平复位电路

    位电容的作用主要如下:单片机复位电路要求有一个持续时间,加上电容可以利用其两端电压不能突变的特性,使复位电平维持一定时间,使单片机复位。单片机复位电平在其手册里可以看到 。另外这个电容还可以去除一些杂波的干扰,防止单片机被错误复位。本次取4. 7uF的电解电容。

四、软件设计

硬件平台上构成,完成各部分硬件的控制和协调,系统功能是由软件硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减少软件故障率和提高软件的可靠性。同时对软件进行全方面的测试也是检查错误排除故障的重要手段。流程图如下:

程序如下:

#include<reg52.h>                    //声明头文件

#define uint unsigned int

#define uchar unsigned char

sbit red1=P2^0;             //定义六个灯分别为P1.0~7

sbit yellow1=P2^1;

sbit green1=P2^2;

sbit red2=P2^5;

sbit yellow2=P2^4;

sbit green2=P2^3;

sbit key1=P3^0;                   //模式选择键

sbit key2=P3^1;                   //数值+

sbit key3=P3^2;                   //数值-

sbit key4=P3^3;                   //暂停开始键

uchar aa,qian,bai,shi,ge,bb,shu1,shu2;

uint num,key1num,key4num;

//定义数组0~9

uchar code table[]={                  

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90};

//延时函数z毫秒

void delay(uint z)                      

{

      uint x,y;

      for(x=z;x>0;x--)

           for(y=110;y>0;y--);

}

//初始化函数

void init()

{

      TMOD=0x01;                             //设置定时器T0为工作方式1

      TH0=(65536-50000)/256;                //赋初值

      TL0=(65536-50000)%256;

      EA=1;                                   //开总中断

      ET0=1;

      TR0=1;                                       //开定时器

      num=40;                                    //数码管初始显示40

      qian=num/10;

      bai=num%10;

      red1=1;                                //起始状态为南北绿灯,东西红灯

      yellow1=1;

      green1=0;

      green2=1;

      yellow2=1;

      red2=0;

                                            

      bb=1;

      key1num=0;

      //key4num=0;

      shu1=40;                              //南北通行时间初始为40s,东西通行时间初始为25s

      shu2=25;

}

//数码管显示函数

void display(uchar qian,uchar bai)

{

      P0=table[bai];

      delay(1);

      P1=table[qian];

      delay(1);

}

//键盘扫描函数

void keyscan()

{

      if(key1==0)

      {

           delay(10);                 //消抖

           if(key1==0)

           {

                 key1num++;

                  if(key1num==4)

                         {

                                             key1num=1;

                                        }

                 while(!key1);

                 if(key1num==1)        //按下第一次进入设置南北通行时间模式

                 {

                      TR0=0;

                      num=40;

                      qian=num/10;

             bai=num%10;

                      display(qian,bai);

                      green1=0;

                  yellow1=0;

                      red1=0;

                      green2=1;

                      yellow2=1;

                      red2=0;

                 }

                 if(key1num==2)        //按下第二次进入设置东西通行时间模式

                 {

                      TR0=0;

                      num=25;

                      qian=num/10;

             bai=num%10;

                      display(qian,bai);

                      //key1num=0;

                      green1=0;

                  yellow1=0;

                      red1=1;

                      green2=1;

                      yellow2=0;

                      red2=0;         

                 }

          

            }

      }

      if(key1num!=0)                            //当key1键被按下

      {

           if(key2==0)

           {

                 delay(10);

                 if(key2==0)                //按下key2键调整南北通行时间

                 {

                      num--;

                      qian=num/10;

             bai=num%10;

                      display(qian,bai);

                      shu1=num;                       //将设置后的时间赋给shu1

                      if(shu1==0)

                      {

                            shu1=40;

                            num=shu1;

                            qian=num/10;

              bai=num%10;

                            display(qian,bai);

                      }

                 }

                 while(!key2);      

           }

           if(key3==0)                                 

           {

                 delay(10);

                 if(key3==0)                             //按下key3键设置东西通行时间

                 {

                      num--;

                      qian=num/10;

                bai=num%10;

                      display(qian,bai);

                      shu2=num;                        //将设置后的值赋给shu2

                      if(shu2==0)

                      {

                            shu2=25;

                            num=shu2;

                            qian=num/10;

              bai=num%10;

                            display(qian,bai);

                      }

                 }

           while(!key3);

           }

      }

      /*if(key4==0)

      {

           delay(10);

           if(key4==0)                            

           {

                 key4num++;

                 while(!key4);

                 if(key4num==1)

                 {

                      TR0=1;

                 }

                 if(key4num==2)                

                 {

                      TR0=0;

                      key4num=0;       

                 }

          

            }

      }*/

      if(key1num==3)

      {

           TR0=1;

       }

}

//主函数

void main()

{

      init();

      while(1)

      {

           display(qian,bai);

           keyscan();

      }

     

}

//定时器中断函数

void timer0() interrupt 1

{

      TH0=(65536-50000)/256;                   //重赋初值

      TL0=(65536-50000)%256;

      aa++;

      if(aa==20)                               //定时到达1S

      {

           aa=0;

           num--;

           qian=num/10;

           bai=num%10;

           display(qian,bai);

          

           if(bb==1)

           {   

                 if(num==3)                          

                 {    red1=1;                                //起始状态为南北绿灯,东西红灯

      yellow1=0;

      green1=1;

      green2=1;

      yellow2=0;

      red2=1;   

                 }

                 if(num==0)

                 {

                      red1=0;                                //起始状态为南北绿灯,东西红灯

      yellow1=1;

      green1=1;

      green2=0;

      yellow2=1;

      red2=1;

                      num=shu2;

                      qian=num/10;

                   bai=num%10;

                      display(qian,bai);

                      bb++;      

                 }

           }

           if(bb==2)

           {   

                 if(num==3)

                 {    red1=1;                                //起始状态为南北绿灯,东西红灯

      yellow1=0;

      green1=1;

      green2=1;

      yellow2=0;

      red2=1;

                           

                 }

                 if(num==0)

                 {

                      num=shu1;

                      qian=num/10;

             bai=num%10;

                      display(qian,bai);

                            red1=1;                                //起始状态为南北绿灯,东西红灯

      yellow1=1;

      green1=0;

      green2=1;

      yellow2=1;

      red2=0;

                      bb=1;      

                 }

           }         

      }

}

五、仿真过程与仿真结果

软件仿真

软件程序的调试一般可将重点放在分模块调试上,统调是最后一环,软件调试可以采取离线和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可:后者一般需要仿真系统的支持。本次课题,用Keil软件来调试程序,通过各个模块的但不或跟踪调试,使程序逐渐趋于正常,最后统调程序。仿真

采用proteus软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。

首先打开proteus软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制,绘制好后再选用Keil软件已近编译好的“.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再进行检查,直到满足为止。

1、仿真一开始,所有的灯全部都亮,数码管显示00,这是程序设计的初始状态,复位之后的状态亦如此。

2、按下开始键,程序开始进入循环的状态,首先东西向绿灯亮,南北向红灯亮,同时数码管进行从40s开始进行倒计时,剩余3s时,红绿灯都不亮,转为四个方向的黄灯,每隔一秒亮一次,3秒倒计时后,即主干通车停止,转入南北向通车,数码管倒计时25秒,待到3秒转为黄灯亮,红绿灯都不亮,进行循环。仿真图如下:

六、安装与调试

首先制作电路板:在PROTEL DXP软件上画出实训原理图,接着导入制作PCB电路板,最后经打印、热转印、腐蚀、打孔,最后做出电路板。

步骤如下:

第一步:利用一个能生成图像的软件生成一些图像文件,这里使用版本为Altium2004组织SCH文件,再利用网络表生成相应PCB图(可自动布线,也可手工布线),接着画PCB图,以备打印;
    第二步:将PCB图打印到热转印纸上;
    第三步:将打印好PCB的转印纸平铺在覆铜板上,准备转印;
    第四步:用热应机加温将转印纸上黑色油墨粉压在覆铜板上形成高精度的抗腐;
    第五步:热应机加温加压成功转印后的效果;
    第六步:准备好三氯化铁溶液进行腐蚀;

第七步:腐蚀结束,清洗干净,晾干之后进行打孔。
第八步:将焊盘铣刀装到台钻上,清理出焊盘部分,剩下的部分用于阻焊;
第九步:安装所需预定原件并焊接好。

硬件调试

拿到电路板后,首先要检查加工质量,在确保没任何质量问题时再安装元器件。元器件在安装前要足逐一检查,用万用表测其数值,看是否与所需相同,完成焊接后应先空载上电(芯片座不插芯片),并检查各引脚的电位是否正确。若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。

在调试时我遇到了一个问题:用STC下载器无法将程序下载到单片机中,经检查,是COM端口和波特率选的不正确,应更改STC下载器的COM端口使之与电脑的COM端口相对应,波特率改为9600~115200即可下载成功。

七、原理图与PCB图

八、结论与心得

在实验过程中,片机作为核心控制元件,使得电路的可靠性比较高,功能也比较强大。而且可以随时的更新系统,进行不同状态的切换,进行不同状态的组合,但是在设计和调试过程中,也发现一些问题,譬如红绿灯的切换速度不够,黄灯时亮时而不亮,红绿灯规则效率偏低,数码管亮度不够等,亮度不够是因为排阻的阻值用的较大了。

还有,老师说我的排版不是很好,例如电阻,因为我是用手折弯的,而不是用镊子,所以这是我以后需要注意的地方。还有一个晶振焊接的不是很整齐,应该从新焊一下,但因为我怕麻烦,也怕重焊之后会影响美观,所以就没再去重试了。另外,由于画PCB时,我漏画了一条线,以至于转化为板时那边出了问题,后来我就得自己对照着PCB再用导线把遗漏的导线连接上,花了不少时间,增加了许多工作量,所以说这些都还需要我们在实践中继续加强改进,得到进一步的完善。

这次课程设计,我发现单片机原理应用性很强,只靠老师的课堂讲解是远远不够的,只有自己动手去做才能发现自己的不足。许多的余力和程序看似简单,但真正去做才知道知识并没有自己想的那样扎实,从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学理论与实际结合起来,才能真正提高自己的动手能力与思考能力,树立自己的工作信心。相信会对今后的学习工作和生活有非常重要的影响

在设计过程中我们还得到了老师的帮助与意见。在学习过程中不是每个问题都能自己解决,向老师请教或向同学讨论也是一个解决问题,让自己更快进步和增强学习能力很好的办法。

九、参考文献

 [1]苏家健,曹柏荣,汪志锋.单片机原理及应用技术.北京:高等教育出版社,2004,

[2]李广弟.单片机基础[M]. 北京:北京航空航天大学出版社,1994.

[3]阎石.数字电子技术基础(第三版) .北京:高等教育出版社,1989.

[3]朱清慧  Proteus教程--电子线路设计、制版与仿真  清华大学出版社 2008版

[4]蒋亮  Protel DXP电路设计入门与应用  机械工业出版社   2005版

[5]王秋爽  单片机开发基础与经典设计实例  机械工业出版社 2008版

相关推荐