51单片机生产实习报告

时间:2024.4.20

目录

前言... 2

实习制作任务书... 3

第1章方案的论证... 4

第2章硬件的焊接... 5

第3章芯片的介绍... 5

3.1 单片机STC89C52的介绍... 5

3.2  ADC0809的介绍... 8

3.3  MC4543B显示译码器的介绍... 11

3.4  LED数码管显示原理... 13

3.5 反向驱动器7406芯片介绍... 13

3.6  集成四个或非门芯片7402的介绍... 14

3.7  双D触发器7474的介绍... 15

第4章软件调试... 15

第5章心得体会... 16

参考文献... 17

附件1:... 18

附件2:... 19


前言

51单片机是目前应用最广泛的一类微处理器,它以低廉的价格和强大的功能,受到广大电子设计爱好者和工程师的欢迎。51系列单片机内部具有丰富的硬件资源,例如定时器/计数器、中断系统、串行接口,并且它还提供了详细的指令操作系统,可以供程序员很方便地进行程序设计。在51单片机的开发过程中,程序设计是重点也是难点。我们通过本次生产实习制作过程,有助于我们快速地掌握单片机指令的应用、各个功能部件的编程方法及程序设计思路。本文介绍了整个实习制作的全过程,包括方案的论证、硬件的焊接、芯片的介绍、程序设计以及在这个过程中的一些心得体会。

在这个设计中,主要涉及单片机的三个方面的内容:定时、中断、和AD的操作,另外还有一些附属的必要设计,如数码管显示、直流稳压等。整个知识面涉及很宽很广,涵盖了数电、模电单片机等基础知识,让我们把平时所学的知识付诸了实践,这不仅温故了知识,也使我们对其中的许多知识有了更高层次的理解。同时也在一定程度上提高了我们的对硬件和软件的调试能力。所以很感谢学院给我们安排了这次实习,这不仅使我们对自己得专业有了进一步的理解,更激发了我们对电子行业的兴趣。  

                                          20##年3月


实习制作任务书

一、实习制作目的:

 通过生产实习制作,使学生进一步加深理解单片机的工作原理,通过实习制作掌握引入外部中断的方法及其中断服务程序的编写方法;掌握定时器的使用及其中断服务程序的编写方法;从而了解如何构成系统的主程序;通过实习制作掌握单片机应用系统的制作工艺及调试方法,进一步理解单片机系统的设计及开发方法,从而使学生具备设计单片机应用系统的能力。

二、实习制作要求:

1.熟悉单片机最小系统板的基本构成;

2.掌握A/D转换芯片ADC0809与单片机的硬件连接方法及A/D转换的中断编程方法。

3.掌握开关量信号检测及其指示电路的设计方法和编程方法。

4.掌握单片机引入外部中断的实现方法及其中断服务程序的编写方法。

5.掌握定时器的使用及其中断服务程序的编写方法。

    6.了解LED显示器的工作原理,掌握静态显示器驱动电路的设计方法以及编程方法。

7.掌握单片机应用系统的制作工艺及调试方法。

三、实习制作内容:

1、自行设计一个直流稳压电源——交流输入:220V  直流输出:+5V

2、利用ADC0809做A/D转换器;使用单片机AT89C51做控制器;选用4位LED显示块(共阴极)做显示器,并设计相应的驱动电路;设计外部中断功能键一个;设计开关量信号检测及其指示电路;由上述电路构建成一个单片机应用系统。

3、进行硬件电路的设计、焊接与调试。

4、自行编写有关的应用程序,以完成系统功能的需求。

5、进行系统的软、硬件联机调试。

四、单片机应用系统应具备的功能

1、系统运行时,循环显示你组同学的班级号(例如01)和学生号(例如23),为了显示清晰,要求循环显示时间2s(或5s),

2、每隔5秒,启动、采集A/D转换一次。

3、 模拟量信号由电位器W1提供。A/D转换结束时,以外部中断方式通知CPU,当0809A/D转换完成后,由EOC信号经反向后产生中断申请信号,由1引脚接入;中断后读取A/D转换结果,并连续读取8个或4个数据,数据保存在片内RAM中,

4、 对8个或4个数据进行数值滤波后作为A/D转换的平均值保存,显示时,是将平均值转换为十进制数送显示器显示,为了显示清晰,要求显示时间2s(或5s),

5、 当按下外部中断功能键时,检测4路开关量信号,并由发光二极管显示其开关状态;外部中断功能键由0引脚接入。       

6、 为了保证精确定时,要求T0的中断优先级别高于外部中断0和外部中断1。

第1章方案的论证

单片机的应用最广泛的CPU芯片,它以价格低廉、性价比高受到广大电子爱好者的喜爱;相反如果选择AVR、ARM、FPGA等其他CPU芯片,它们价格昂贵,且不适用于初次设计者;AD0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口,它也价格低廉,且它涵盖AD的知识也很全面,很适合初学者应用。稳压电源的设计,一般按照变压、整流、滤波、稳压和去除纹波的这个流程,其中用到了常用的稳压芯片7805,它可以输出一个稳定的5V电压值,为整个系统供电,其原理图参照附件1。

第2章硬件的焊接

焊接过程严格依照原理图进行,一定不要把有极性的元器件焊接反了,如整流二极管、极性电容、发光二极管,他们都有正负极之分,其中引脚较长的为正极;焊接的过程中一定不要虚焊,尽量让焊锡流入孔内;由于之前想稳定元器件,常把引脚弯折来固定它,然后再焊接,这种焊接的方式很不美观;数码管由于加了插槽,插入插槽的数码管常常会出现接触不好,以至于很多数字都显示不好,以后记得直接将数码管焊接到板子上。

焊接技术的小结:一定要给焊盘先预热,然后再用焊锡丝进行焊接。

第3章芯片的介绍

3.1 单片机STC89C52的介绍

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHZ,6T/12T可选。其引脚图如下所示:

l  VCC(Pin40):电源端。正电源接4.0~5.0V电压,正常工作电压为+5V。

l  GND(Pin20):接地端。

l  XTAL1(Pin19):时钟XTAL1脚,片内振荡电路输入端。

l  XTAL2(Pin18):时钟XTAL2脚,片内振荡电路输出端。

在XTAL1和XTAL2脚上外接石英晶体(0~33MHz)和振荡电容,振荡电容的大小一般取10pf~30pf。

l  P0口:即P0.0~p0.7(Pin39~Pin32),输入输出脚,可用于8位并行I/O口或分时复用为地址和数据总线。P0口作为输出口时,每个引脚负载8个TTL;在外扩展存储器时,可定义为低8位的地址/数据线;定义为I/O口时,需外接上拉电阻,为准双向I/O口,在程序中向该端口写入“1”后,成为高阻抗输入口;在对片内Flash编程时,P0口可以接收字节代码,在程序校验时输出字节代码,程序校验期间应外接上拉电阻。

l  P1口:即P1.0~P1.7(Pin1~Pin8),输入输出脚,8位准双向并行I/O口。P1口内部已经具有上拉电阻的8位准双向I/O口,能负载4个TTL;Flash编程和校验时,定义为低8位的地址线。

l  P2口:即P2.0~P2.7(Pin21~Pin28),输入输出脚,8位准双向并行I/O口。P2口内部已经具有上拉电阻的8位准双向I/O口,能负载4个TTL;当访问外部存储器时,定义为高8位的地址线。如果只需要8位地址线,它将输出特殊功能寄存器(锁存器)中的内容。

l  P3口:即P3.0~P3.7(Pin10~Pin17),输入输出脚,8位准双向并行I/O口。P3口内部已经具有上拉电阻的8位准双向I/O口,能负载4个TTL。并且每一个引脚都具有第二功能。引脚P3.0(RXD)和引脚P3.1(TXD)用于串行数据传输,分别为串行数据的接收和发送端口;引脚P3.2和引脚P3.3为外部中断请求,分别用于INT0和INT1的中断输入;引脚P3.4和引脚P3.5,分别为定时器/计数器0和定时器/计数器1的外部计数输入端;引脚P3.6和引脚P3.7用于读写单片机的外部RAM,分别是外部数据写选通信号和读选通信号。

l  RST(Pin9):单片机内部CPU的复位信号输入端。在单片机的振荡器启动后,该引脚置两个机器周期以上的高电平,便可以实现复位。

l  ALE/PROG(Pin30):ALE为地址锁存使能端和编程脉冲输入端。

  当访问外部程序存储器时,ALE(地址锁存)的负载跳变将低8位的地址打入锁存;而非访问外部存储器时,ALE将有一个1/6振荡频率的正脉冲信号,该信号可以用于外部计数或者时钟信号。当访问外部数据存储器(执行MOVX指令)时,ALE会跳过一个脉冲。

   在Flash编程时,该引脚用于输入编程(PROG)。

    另外,在程序中,可对特殊功能寄存器区的地址为8EH单元中的D0为置“1”,可禁止ALE的输出,只有在执行MOVX或MOVC类指令时,ALE才会被激活,仍输出锁存有效,在执行外部程序时,该设定禁止ALE位无效。

(Pin29):当访问外部程序存储器读选通信号。

   当单片机访问外部程序存储器,读取指令时,每个周期产生两次有效信号,即此引脚输出两个负载脉冲选通信号;在执行片内程序存储器读取指令码时,不产生此脉冲;在读写外部数据时,也不产生脉冲信号。

l  EA/VPP(Pin31):EA为访问内部或者外部程序存储器选择信号,在Flash编程时,提供Flash编程电压VPP。

当CPU访问外部程序存储器(0000H~FFFFH单元)时,则EA必须保持低电平;当EA保持电平时,则CPU先从片内0000H单元开始,执行内部程序存储器程序;如果外部还有扩展程序存储器,则CPU在执行完内部程序存储器程序后,自动转向执行外部程序存储器程序;对片内Flash编程时,此引脚用于输入编程允许电压。另外,如果单片机的保密位被编程,则复位时,内部会锁存EA端的状态。

3.2  ADC0809的介绍

       ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。
(1)ADC0809的内部逻辑结构

    由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

(2). ADC0809引脚结构

ADC0809各引脚功能如下:
D7-D0:8位数字量输出引脚。
IN0-IN7:8位模拟量输入引脚。
VCC:+5V工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端。
START:A/D转换启动信号输入端。
ALE:地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).
EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:输出允许控制端,用以打开三态数据输出锁存器。
CLK:时钟信号输入端(一般为500KHz)。
A、B、C:地址输入线。

    ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:4条

    ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。

数字量输出及控制线:11条

    ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。

CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,

VREF(+),VREF(-)为参考电压输入。

2. ADC0809应用说明

(1). ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。

(2). 初始化时,使ST和OE信号全为低电平。

(3). 送要转换的哪一通道的地址到A,B,C端口上。

(4). 在ST端给出一个至少有100ns宽的正脉冲信号。

(5). 是否转换完毕,我们根据EOC信号来判断。

(6). 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。

3.3  MC4543B显示译码器的介绍

MC4543有BCD锁存/七段译码和驱动的功能,其引脚图和真值表如下所示:

引脚图:

真值表:

  根据真值表可以看出,要想数码管显示相应的数据,我们可以给4543的DBCA口赋上相应值得BCD码即可,这样很方便。

3.4  LED数码管显示原理

七段共阴数码管是有7个条形发光二极管和一个小数点位构成,其引脚配置及其内部结构如下图所示,由图中可以看出,其中7个发光二级管构成字形“8”,可以用来显示数字,另一个发光二级管构成小数点。

在七段共阴极LED数码管中,发光二级管的阴极为公共端(9脚),接地,当某个发光二极管的阳极为高电平的时候,发光二极管导通,该字段发光;反之,如果发光二级管的阳极接低电平,发光二极管截止,该字段不发光。

3.5 反向驱动器7406芯片介绍

   7406反向驱动的作用就是反向,提高驱动能力;当输入为高电平的时候输出为低电平,当输入为低电平的时候,输出为高电平;并且其驱动能力增强。如下图所示:

3.6  集成四个或非门芯片7402的介绍

    把输入的两个信号进行或非操作,如下图所示:

3.7  双D触发器7474的介绍

         它的作用就是分频,将从单片机ALE端口输出的1MHZ的时钟脉冲进行二分频,得到500HZ的时钟信号,供AD0809工作的需要。

第4章软件调试

     程序流程图如下所示:

   在编程的过程中,要理清思路,在读懂原理图和芯片资料的前提下编程,由于是用C语言编程,一定要主要考虑各个变量的有效位数,在进行数据处理的时候,尽量优化算法,不要弄太大的误差。我在编程的过程中,在进行AD数据处理的时候,把一个浮点型数据赋值给整型数据了,以至于读取AD失败。所以一定要清楚操作的每一个数据的类型。另外,在进行软件调试的时候,一定要结合硬件一起调试,根据已知信息,找到问题的切入点,然后才能解决问题。由于P0口的反接,必须把P0口读出的数据进行倒序,倒序的算法:

ad_value=((x&0x01)<<7)|((x&0x02)<<5)|((x&0x04)<<3)|((x&0x08)<<1)|((x&0x10)>>1)|((x&0x20)>>3)|((x&0x40)>>5)|((x&0x80)>>7);

AD数据处理的算法:AD读出的数据进行求平均数,然后再分离出各位上的数字,把相邻两位的高位左移四位和地位相或。(完整的程序见附件2)

第5章心得体会

在这次生产实习过程中,我体会到了什么才叫做调硬件,什么才叫做调软件。以前虽然做过一些设计,但是还没有真正地体会过这个过程。其实无论是调硬件还是调软件,它们都不是一个独立的过程,必须时时把两者相结合,根据软件,推断硬件的问题,根据硬件,推断软件的问题。这次的调试过程中,首先是我自己对工厂生产出来的这个板子很相信、很放心;以至于我再编程的时候,就一根筋地在想自己得软件问题,这就是只考虑软件,而没有真正把两者结合起来,所以我再调试过程中浪费了许多的时间。

但是,虽然花了许多的时间在那个过程中,但是我自己觉得很充实、很踏实,因为无论怎么样,我都在进步。以前我都很少编写定时、中断以及AD转换方面的程序,经过这次的实习,我想我以后再这三个方面的编程都会有很大的进步,而且自身的编程能力也有了很大的提高。虽然我在编程的时候,没有注意到各个数据的类型,经过这次的经历,我以后再也不会犯同样的错误了,这就是进步,这就是经验,这就是提升。这次的调试过程,虽然不是很顺,但是它所带给我的好的影响就是,为我以后调试过程理清了思路,不会再那么茫然,也不会那么盲目。总之,这个调试过程还是挺丰满,挺充实的,我很享受这个过程。

参考文献

[1] 胡汉才.单片机原理及其接口技术.3版.北京:清华大学出版社,2010.

[2] 赵健领,薛园园.51单片机开发与应用技术详解.北京:电子工业出版社,2009.

[3] 宋戈,黄鹤松.51单片机应用开发大全.北京:人民邮电出版社,2010.

[4] 谭浩强.C程序设计.3版.北京:清华大学出版社,2005.

附件1:

原理图:

附件2:

程序代码:

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint  unsigned int

uchar t0=0,t1=0;

uchar code number[3]={0x06,0x08,0x09};

bit INT_flag=0;

sbit L1=P2^6;

sbit L2=P2^7;

sbit ST=P2^4;

uchar AD_read();                            //函数声明

float AD_deal();

uchar daoxu(uchar x);

void AD_start()                           

{

  ST=0;

  RD=1;

  WR=1;

  WR=0;              

  _nop_();

  WR=1;

  _nop_();

  _nop_();   

}

void main()

{

float aver;

uint tt,avr;

uchar temp[4];

uchar i;

/*设置定时、中断的寄存器*/

TMOD=0x01;                     //选择T0,方式1

TH0=0x3c;                 

TL0=0xb0;                   //定时100ms

ET0=1;                        //开T0的中断

EA=1;                          //开总中断

EX0=1;                        //开外部中断0

EX1=1;                        //开外部中断1

PT0=1;                        //设置T0为高优先级

IT0=1;                         //外部中断0为下降沿触发

IT1=1;                         //外部中断1为下降沿触发

TR0=1;                        //启动定时器T0

       while(1)

       {

       /*循环显示学号部分*/

       WR=0;

       L1=0;

       P0=0x02;

       L1=1;

       L2=0;

       P0=0x09;

       L2=1;

       WR=1;

              for(i=0;i<3;)

              {

                     if(t0==20)                   //定时2S

                     {

                     t0=0;

                     WR=0;

                     L1=0;

                     P0=0x02;

                     L1=1;

                     L2=0;

                     P0=number[i];

                     L2=1;

                     WR=1;

                     i++;

                     }

              }

       /*启动AD*/

              if(t1==50)                            //定时5s

              {

               AD_start();

               t1=0;

              }

         /*AD数据处理显示部分*/

       if(INT_flag==1)

       {

INT_flag=0;

P0=0xff;

_nop_();

aver=AD_deal();

avr=(uint)aver;

temp[0]=avr/1000;

temp[1]=(avr%1000)/100;

temp[2]=(avr%100)/10;

temp[3]=avr%10;

temp[0]=temp[0]<<4;

temp[0]=temp[0]|temp[1];

temp[2]=temp[2]<<4;

temp[2]=temp[2]|temp[3];

WR=0;

L1=0;

P0=temp[0];

L1=1;

L2=0;

P0=temp[2];

L2=1;

WR=1;

tt=50000;

while(tt--);

       }

       }

}

/*读取一次AD,并返回其值*/

uchar AD_read()

{

  uchar  AD_value,ad;

  AD_start();

  RD=0; //读出AD数据

  _nop_();

  _nop_();

  ad=P0;

  AD_value=daoxu(ad);

   RD=1;     //rd拉高 禁止读AD数据

  return  AD_value;           

}

/*读取AD,并返回四次AD的平均值*/

float AD_deal()

{

  float AD_A[4],ave;

  uchar AD_D,i;

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

       {

        AD_D=AD_read();

        _nop_();

        AD_A[i]=AD_D*19.6;                           //扩大1000倍

       }

ave=(AD_A[0]+AD_A[1]+AD_A[2]+AD_A[3])/4.0;

return ave;

}

/*倒序*/

uchar daoxu(uchar x)

{

 uchar ad_value;

 ad_value=((x&0x01)<<7)|((x&0x02)<<5)|((x&0x04)<<3)|((x&0x08)<<1)|((x&0x10)>>1)|((x&0x20)>>3)|((x&0x40)>>5)|((x&0x80)>>7);

 return ad_value;

}

/*定时器0的中断服务子程序*/

void timer0() interrupt 1

{

TH0=0x3c;

TL0=0xb0;                     //定时100ms,赋初值

 t0++;

 t1++;

}

/*外部中断1的中断服务子程序*/

void exter1() interrupt 2

{

INT_flag=1;

}

/*外部中断0的中断服务子程序*/

void exter0() interrupt 0

{

uchar test;

P1=0xff;

test=P1;

test<<=4;

P1=test;

}

更多相关推荐:
单片机生产实习报告

20xx届实习报告姓名班级学号指导教师电气工程学院20xx年6月成绩评定

燕山大学单片机生产实习报告

燕山大学单片机生产实习报告一、生产实习的目的和意义:生产实习是培养本科学生理论联系实际,提高实际动手操作能力的重要教学环节。本专业的生产实习旨在使学生广泛了解实际电子产品生产的全过程,熟悉电子产品的主要技术管理…

51单片机生产实习报告

学号10780220实习报告生产实习起止日期20xx年6月24日至20xx年7月19日学班成生姓名岳维启级电子信息科学与技术2班绩指导教师签字计算机与信息工程学院20xx年7月19日目录第一章系统开发与调试11...

单片机生产实习报告

学号实习报告生产实习起止日期20xx年6月24日至20xx年7月19日学班成生姓名级绩10电信科1班指导教师签字计算机与信息工程学院20xx年7月19目录第一章生产实习介绍111生产实习的目的112生产实习的意...

单片机生产实习报告

生产实习班级姓名学号成绩电子与信息工程学院信息与通信工程系目录1设计任务111基础项目1111单片机最小系统1112简单外围电路制作与编程112提高项目12设计思路221简单外围电路设计思路222提高项目设计思...

单片机生产实习报告

河北联合大学轻工学院生产实习报告学院轻工学院专业自动化5班组别第五组姓名杜鹏程学号20xx15010524指导老师杨志刚20xx年7月1日

单片机焊接生产实习报告

学号10780216实习报告起止日期:2013年6月24日至2013年7月19日计算机与信息工程学院20##年7月19日目录第一章实习的目的及意义................................…

里仁学院电子工程系生产实习报告

里仁学院电子工程系报告一生产实习的目的和意义生产实习是培养本科学生理论联系实际提高实际动手操作能力的重要教学环节本专业的生产实习旨在使学生广泛了解实际电子产品生产的全过程熟悉电子产品的主要技术管理模式并在实习的...

生产实习报告-单片机

生产实习班级姓名学号成绩电子与信息工程学院信息与通信工程系生产实习报告通信081班学号1生产实习目的培养我们正确的设计思想理论联系实际的作风严肃认真实事求是的科学态度和勇于探索的创新精神以及学生的动手能力2生产...

单片机实习报告

单片机实习课题数码管动态显示数字系别电气工程系班级机电0902专业机电一体化技术学号学生姓名指导老师完成日期20xx年11月25日单片机实习任务书1实习班级机电09022设计题目数码管动态显示数字3设计要求1采...

单片机交通灯实训报告

通过这一个学期的单片机学习我收获了很多关于单片机的知识并且这些知识和日常的生活息息相关单片机微型计算机是微型计算机的一个重要分支也是颇具生命力的机种单片机微型计算机简称单片机特别适用于控制领域故又称为微控制器1...

51单片机生产实习报告(DS1302)

一实习目的与要求学习51系列单片机的基本原理并能熟练运用其基本功能用单片机和DS1302时钟芯片做一个实时时钟用数码管显示年月日星期时分秒利用独立键盘对其进行时间和日历调整二51系列单片机的管脚介绍VCC供电电...

单片机生产实习报告(29篇)