资源描述
此文档收集于网络,如有侵权请联系网站删除
四川信息职业技术学院
毕业设计说明书(论文)
设计题目: 实用单片机电子钟
专 业: 应用电子技术
班 级: 应电07-2班
学 号: 0710205089
姓 名:
指导教师:
二00九年十二月十一日
四川信息职业技术学院毕业设计(论文)任务书
学 生
姓 名
学号
0710205089
班级
应电07-2班
专业
应用电子技术
设计(或论文)题目
实用单片机电子钟
指导教师姓名
职 称
工作单位及所从事专业
联系方式
备 注
弥锐
四川电子信息职业技术学院电子工程系
15983949754
设计(论文)内容:
1.确定整机电路结构,绘制电路原理图。
2.确选择电路元件,给出元件明细表。
3.撰写设计说明书,要求准确阐述电路选择依据,反映电路工作原理、元件选择等设计过程,字数不少于4000字。
进度安排:
5~7周:根据要求设计出方框图和原理电路图。根据电路分析其工作原理;
8~9周:根据电路准备电子元件,进行实物制作;
10~12周:根据调试分析其优缺点和提出整改措施;
13~15周:根据设计撰写论文,并在老师指导下修改、完成论文;
主要参考文献、资料(写清楚参考文献名称、作者、出版单位):
[1] 代启化.基于Proteus的电路设计与仿真[J].现代电子技术,2006
[2] 曹洪奎.基于Proteus单片机系统设计与仿真[J].辽宁工学院学报,2007
[3] 侯玉宝.基于Proteus的51系列单片机设计与仿真[M].电子工业出版社,2008
[4] 蔡希彪 曹洪奎.单片机电子时钟系统设计与仿真[J].中国科技信息,2007
[5] 方怡冰.单片机课程的教学与实验改革[J].电气电子教学学报,2006
[6] 刘文秀.单片机应用系统仿真的研究[J].现代电子技术,2005
审
批
意
见
教研室负责人:
年 月 日
此文档仅供学习和交流
目 录
摘 要 1
第1章 绪 论 2
第2章 电子钟系统组成及设计流程 3
第3章 单元电路设计 4
3.1单片机介绍 4
3.2晶振电路设计 5
3.3控制电路 6
3.4输出电路设计 7
3.5总电路原理图设计 8
3.6 PROTEUS电路图设计 9
第4章 软件设计 10
4.1 程序流程图设计 10
4.2源程序设计 11
4.3 KEILC51进行程序调试 17
第5章 系统调试与仿真 18
5.1 PROTEUS中HEX文件选择 18
5.2 PROTEUS进行电子钟系统仿真 18
总 结 20
参考文献 22
附 录 元器件明细表 23
摘 要
随着人类科技文明的发展,人们对于时钟的要求在不断地提高。时钟作为一种显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。在这种趋势下,时钟的数字化、多功能化已经成为现代时钟生产研究的主导设计方向。本文正是基于这种设计方向,以单片机为控制核心,设计制作一个符合指标要求的多功能数字时钟。
本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。该时钟系统主要由时钟模块、闹钟模块、数码管显示模块、键盘控制模块以及信号提示模块组成。系统具有简单清晰的操作界面,能在+5V直流电源下正常工作。能够准确显示时间(显示格式为时时-分分-秒秒,24小时制),可随时进行时间调整,具有闹钟时间设置、闹钟开/关,并有止闹功能,设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。由于系统所用元器件较少,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。
关键词 单片机AT89C51;Proteus;功能模块
第1章 绪 论
电子钟是生活中常见的实用工具之一,没有时钟,便没有时间的概念,那么人们的生活便会变得杂乱无章,电子钟通常用于码头、车站、家庭、广场等地方,可见其用途广泛。电子钟的制作由模电电子钟、数电电子钟和单片机电子钟三大类组成,但随着人们需求的提高,前两大类逐渐由于其可靠性差、计时不准、电路复杂、成本高等缺点而面临淘汰。而单片机电子钟也由于其可靠性高、计时精准、电路简单、成本低等优点受到人们的喜爱。本电路利用单片机设计电子钟,实现的基本功能有计时和校时功能,实用于各种需要计时的场合。在计时和校时的基础功能上,更在此基础上拓展了闹钟功能,当计时时间到达闹钟时间时,蜂鸣器将鸣叫1分钟(具有止闹功能)。本次设计的主要锻炼了我运用所学专业知识的情况,训练我如何将运用所学专业知识与实践相结合。
随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。
PROTEUS软件由Labcenter公司开发,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台,可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能微控制器系统相关的仿真需建立编译和调试环境,可选择Keil C51uVision2 软件。它的界面友好易学,在调试程序、软件仿真方面有很强大的功能。 其革命性的功能是:将电路仿真和微处理器仿真进行协同,直接在基于原理图的虚拟原型上进行处理器编程调试,并进行功能验证,通过动态器件如电机、LED、LCD、开关等,实时看到运行后的输入、输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,通过软件使用和硬件电路设计,不仅让我巩固了所学知识并应用于实践,同时也让我觉得所学知识能贡献于社会,所读的这几年书是没有白念的。让我有了一个质地的飞跃。
第2章 电子钟系统组成及设计流程
电子钟系统主要由AT89C51单片机、单片机晶振电路、按键电路、输入电路组成,电子钟系统电路组成框图如图2-1所示。
单 片 机
晶振电路
按键电路
数码管显示电路
蜂鸣器
图2-1 电路组成框图
本设计在设计电路的基础上,再编译程序,最后将程序导入电路中实现仿真。具体步骤如图2-2所示。
Protues 电路设计
源程序设计
生成目标代码
基于protues仿真
图2-4 基于Proteus的单片机系统设计流程
第3章 单元电路设计
电子钟系统主要由单片机晶振电路、按键电路、输出电路组成,下面对各个单元电路进行设计。
3.1单片机介绍
本电路设计的核心器件是AT89C51单片机,它是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的设计方案。主要引脚如图3-1所示。
图3-1 AT89C51单片机
3.2晶振电路设计
MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输出端和输入端。这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成一个自激振荡器。虽然有内部振荡电路,但要形成时钟,必须外接元件。图3-2是单片机内部时钟方式的电路。
图3-2 内部时钟方式
本设计中使用的晶体振荡器为12MHz的石英晶体,由此我们可以算出:,因此该晶振可以为软件计数提供1μs的机器周期的精确的时间。
3.3控制电路
电子钟的控制电路可以由独立式键盘和矩阵式键盘组成,独立式键盘相互独立,每个按键占一个I/O口线,每根I/O口线上按键的工作状态不会影响到其他按键的工作状态,主要特点是程序设计简单,占用I/O口较多。而矩阵式键盘分别由行线和列线组成,行和列的交汇处可以形成键盘,与独立式键盘相比,可以提高I/O口的利用率。由于本设计只需要由控制电路实现校时、计时、闹钟设置、闹钟开关功能,因此只需要四个按键即可实现,因此选用独立式键盘。具体电路如图3-3所示。
图3-3 控制电路图
电子钟初始工作时的模式为模式0(正常计数),闹钟状态为关闭。具体工作方式如下述:当按下模式按键时,给P1.4一个低电平信号输入,通过程序来记录电子钟的工作模式;而按下加1键时,给P1.5一个低电平信号输入,再通过工作模式来控制具体哪一位实行加1运算;减1按键和加1按键基本类似,只是实行的运算为减1;当按下闹钟开关按键时,可以给P1.7一个低电平输入信号, 通过程序的取反来控制闹钟状态为打开,再按一次,则再取反,闹钟状态为关闭。由此可见,利用单片机四个输入口可方便地实现6种工作模式的不同控制。
3.4输出电路设计
输出电路分为显示输出电路和闹钟输出电路;显示输出电路由八个数码管构成,而数码管又由八个发光二极管构成,可以用来显示数字、字符等,他在家电及工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等,具有显示醒目、直观的优点。鉴于本电子钟显示格式为00-00-00,一共需要八位八段数码管来提供显示,闹钟输出电路蜂鸣器则连在P1.0口进行输出。显示电路如图3-4所示。
图3-4 输出电路
电子钟通电后初始模式为模式0(正常计数),闹钟状态为关闭。输入电路的具体工作方式如下:当模式按键按下后,工作模式更改为模式0(正常计数)、模式1(计时调时)、模式2(计时调分)、模式3(计时调秒)时,数码管显示电路段位口输出正常计时状态的数据,当模式更改为模式4(闹钟调时)、模式5(闹钟调分)时,数码管显示电路的段位口输出闹钟状态的数据。当闹钟开关按键被按下时,闹钟状态由关闭变为打开,随着计时的不断增加,当计时的时和分等于闹钟设置的时和分时,闹钟输出P1.0口通过程序设置使该口为高电平,可使有源蜂鸣器发出声音。
3.5总电路原理图设计
由晶振电路、控制电路,以及由数码管显示和蜂鸣器所组成的输出电路组成本次设计的总电路图,如图3-5所示。
图3-5 总电路图
其中晶振电路为单片机提供1μs的机器周期,为实现精确计时提供了先决条件;而键盘控制电路则实现了本时钟六种模式的转换和闹钟的开或者关。
此次利用单片机设计的电子钟电路由晶振电路、控制电路和输出电路组成,性能好、功能多、价格低,充分体现了利用单片机设计的优越性。在单片机的程序设计中,采用了程序计数,硬件计时的方法,其中时间秒加1通过中断来实现,单片机初始化设置之后,单片机就一直工作在死循环中,死循环则实现不断地对控制电路的扫描,来改变工作模式或者调时调分等等。
3.6 PROTEUS电路图设计
运行Proteus的ISIS后出现程序主窗口界面,鼠标左键单击窗口左侧的元器件工具栏的component按钮, 接着再点击窗口左侧的元器件选择区的Pick Divices按钮,弹出Pick Devices窗口,再在Categ栏里点击MicroprocessorICs项后,在Results栏里会出现各种类型的CPU器件,找到AT89C51后双击,AT89C51就被添加到当前窗口左侧的元器件列表区了。用同样的方法依次把上拉电阻、数码管、晶振以及多个电阻、电容、按键也添加到器件列表区里。然后再依次点击列表区里的器件,单击左键把他们放到绘图区,右键选中元件,并编辑其属性,合理布局后,进行连线。连线时当鼠标的指针靠近一个对象的引脚时,跟着鼠标的指针就会出现一个“×”提示符号,点击鼠标左键即可画线了,需要拐弯时点击一下即可,在终点再点击确认一下就画出了一段导线,所有导线画完后,点击工具栏的Inter-sheeTerminal按钮,添加上电源和接地符号,原理图的绘制就完成了。Proteus中设计的电子时钟系统原理图按图3-5设计。
第4章 软件设计
开始
数据初始化设置
定时器初始化
死循环while(1)
Y
调用按键处理函数数码管显示函数
N
判断闹钟是否开启,且时钟时分是否等于闹钟时分
蜂鸣器鸣叫
调用数码管显示函数
if(keyinput!=0xf0)
/*判断是否有按键按下*/
N
Y
将值赋给buf
4.1 程序流程图设计
图4-1 程序流程图
4.2源程序设计
/************************************************************************
名称:功能完备的数字钟
共有6种工作模式:正常计时、按键调时、按键调分、按键调秒、闹钟调时、
闹钟调秒,按设置键切换工作模式。
************************************************************************/
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
Uchar code segcode[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//0,1,2,3,4,5,6,7,8,9,-
uchar code dispbit[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//数码管位选码
uchar buffer[]={0,0,0,0,0,0,0,0};
uint hour,min,sec;
uint ringhour,ringmin;
uint status;
sbit beep=P1^0; //闹钟
bit ringoff;
void keyprocess(unsigned char);
/**********延时函数************/
void delayMS(uint t) // 晶振频率12M
{
uint i;
while(t--)
for(i=0;i<125;i++);
}
void delay() //闹铃的延时
{
uint m,n;
for(m=0;m<20;m++)
for(n=0;n<20;n++);
}
/************数码管显示函数****************/
void display()
{
uchar i;
if (status==4||status==5) //闹钟调时、调分状态
{
buffer[0]=ringhour/10;
buffer[1]=ringhour%10;
buffer[3]=ringmin/10; // 显示分的十位
buffer[4]=ringmin%10; // 显示分的个位
for(i=0;i<8;i++)
{
P0=segcode[buffer[i]];
P2=dispbit[i];
delayMS(1); //防止数码管显示的时候闪动
P2=0x0;
}
}
else //正常计时显示
{
buffer[0]=hour/10; // 显示时的十位
buffer[1]=hour%10; // 显示时的个位
buffer[2]=10; // 显示‘-’
buffer[3]=min/10; // 显示分的十位
buffer[4]=min%10; // 显示分的个位
buffer[5]=10; // 显示‘-’
buffer[6]=sec/10; // 显示秒的十位
buffer[7]=sec%10; // 显示秒的个位
for(i=0;i<8;i++)
{
P0=segcode[buffer[i]];
P2=dispbit[i];
delayMS(1); //防止数码管显示的时候闪动
P2=0x0;
}
}
}
main() //主函数
{
bit keyrelease;
uchar buf;
uchar keyinput;
keyrelease=1;
buf=0xff;
ringoff=1;
beep=0;
TMOD=0x01; //T0工作在方式1,16位计数器
TH0=(65536-1000)/256; // 定时器0设置延时1ms中断初始值
TL0=(65536-1000)%256;
TR0=1;
IE=0x82; //开定时器0中断
status=0;
while(1) //死巡环
{
/****************************************************
键扫描程序,全扫描,逐行扫描。按键弹起后才处理
*****************************************************/
keyinput=P1&0xf0;
if(keyinput!=0xf0)
{
delayMS(10);
if(keyinput!=0xf0)
{
if(keyrelease==1)
{
keyrelease=0;
buf = keyinput; //buf用来暂时存放键值
}
}
else
{
keyrelease=1;
keyprocess(buf); //调用按键处理函数
// display();
buf = 0xff;
}
}
else
{
keyrelease=1;
keyprocess(buf);
// display();
buf=0xff;
}
if(ringoff==0&&hour==ringhour&&min==ringmin)
//闹钟打开,定时报警,报警时长1分钟
{
beep=0;
delay();
beep=1;
}
display();
}
}
/***************定时器0中断函数****************/
void timer0() interrupt 1 using 2
{
static uint count;
TH0=(65536-1000)/256; // 定时器0设置初始值1ms中断初始值
TL0=(65536-1000)%256;
TR0=1;
count++; //正常计时
if(count>=1000) // 定时 1S 到,以下为时钟的正常走钟逻辑
{
count=0;
sec++;
if(sec>= 60)
{
sec=0; min++;
if(min>= 60)
{
min=0; hour++;
if(hour>= 24)
{
hour=0;
}
}
}
}
}
/**************按键处理函数***************/
void keyprocess(unsigned char key)
//键值处理,6种状态,正常计时,设置时分秒,设置闹铃时分
{
switch (key)
{
case 0xe0:status++; //按下设置键
if (status>=6) status = 0;
break;
case 0xd0:switch(status) //按下加1键,5种模式下加1
{
case 0x01:if(hour<23) hour++;
else hour=0; break;
case 0x02:if(min<59) min++;
else min=0; break;
case 0x03:if(sec<59) sec++;
else sec=0; break;
case 0x04:if(ringhour<23) ringhour++;
else ringhour=0; break;
case 0x05:if(ringmin<59) ringmin++;
else ringmin=0; break;
}
break;
case 0xb0:switch(status) //按下减1键
{
case 0x01:if(hour>0) hour--;
else hour=23; break;
case 0x02:if(min>0) min--;
else min=59; break;
case 0x03:if(sec>0) sec--;
else sec=59; break;
case 0x04:if(ringhour>0) ringhour--;
else ringhour=23; break;
case 0x05:if(ringmin>0) ringmin--;
else ringmin=59; break;
}
break;
case 0x70: ringoff=~ringoff; //闹钟的开和关
break;
default:break;
}
}
4.3 KEILC51进行程序调试
图4-2 调试结果图
调试结果为0 Error(s),0 Warning(s)。表示程序生成.hex文件中没有遇到错误或者警告,即生成成功。
第5章 系统调试与仿真
5.1 PROTEUS中HEX文件选择
系统仿真分析电路原理图在ISIS里设计完成,并将系统程序编译成.Hex文件,再进行电子时钟的系统虚拟仿真 。
(1)在ISIS的原理图中,右键单击AT89C51将其选中,然后单击左键打开AT89C51的Edit Component对话框,如图5-1所示。
图5-1 Edit Component对话框
(2)选择相应的.Hex文件,再在Proteus ISIS编辑窗口的File菜单中选择Save Design 选项,保存设计,生成.DSN文件。
5.2 PROTEUS进行电子钟系统仿真
在Proteus ISIS的调试菜单中选择开始调试,运行程序,实现功能:开始运行时进入模式一实现正常计时,当按一次K1,进入模式二时钟的时调节,K2进行加运算,K3进行减运算。当再按下第二和第三次K1,分别进入时钟的分调节和秒调节,调节方式和时调节一样。当按下第四和第五次K1,分别进去闹钟时调节和闹钟分调节,调节方式和上述方法一样。当按下第六次K1时,再次进入正常计时。开始运行时,时钟的闹钟功能是关闭的,当按下K4,可以打开闹钟功能,当计时器和设置闹钟的时间一致时,蜂鸣器就开始鸣叫一分钟。当再次按下K4,可以关闭闹钟。时间显示格式为:时-分-秒;Proteus系统仿真结果如图5-2所示。
图5-2 Proteus系统仿真结果
总 结
2009年10月,我开始了我的毕业论文工作,时至今日,论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。历经了几个月的奋战,紧张而又充实的毕业设计终于落下了帷幕。回想这段日子的经历和感受,我感慨万千,在这次毕业设计的过程中,我拥有了无数难忘的回忆和收获。
10月初,在与导师的交流讨论中我的题目定了下来,是:实用单片机电子钟的设计。当选题报告,开题报告定下来的时候,我当时便立刻着手资料的收集工作中,当时面对浩瀚的书海真是有些茫然,不知如何下手。我将这一困难告诉了导师,在导师细心的指导下,终于使我对自己现在的工作方向和方法有了掌握。
在搜集资料的过程中,我认真准备了一个笔记本。我在学校图书馆,大工图书馆搜集资料,还在网上查找各类相关资料,将这些宝贵的资料全部记在笔记本上,尽量使我的资料完整、精确、数量多,这有利于论文的撰写。然后我将收集到的资料仔细整理分类,及时拿给导师进行沟通。
10月初,资料已经查找完毕了,我开始着手论文的写作。在写作过程中遇到困难我就及时和导师联系,并和同学互相交流,请教专业课老师。在大家的帮助下,困难一个一个解决掉,论文也慢慢成型。
10月底,论文的文字叙述已经完成。11月开始进行相关图形的绘制工作和电路的设计工作。为了画出自己满意的电路图,图表等,我仔细学习了绘图技术。在设计电路初期,由于没有设计经验,觉得无从下手,空有很多设计思想,却不知道应该选哪个,经过导师的指导,我的设计渐渐有了头绪,通过查阅资料,逐渐确立系统方案。
当我终于完成了所有打字、绘图、排版、校对的任务后整个人都很累,但同时看着电脑荧屏上的毕业设计稿件我的心里是甜的,我觉得这一切都值了。这次毕业论文的制作过程是我的一次再学习,再提高的过程。在论文中我充分地运用了大学期间所学到的知识。
我不会忘记这难忘的几个月的时间。毕业论文的制作给了我难忘的回忆。在我徜徉书海查找资料的日子里,面对无数书本的罗列,最难忘的是每次找到资料时的激动和兴奋;亲手设计电路图的时间里,记忆最深的是每一步小小思路实现时那幸福的心情;为了论文我曾赶稿到深夜,但看着亲手打出的一字一句,心里满满的只有喜悦毫无疲惫。这段旅程看似荆棘密布,实则蕴藏着无尽的宝藏。我从资料的收集中,掌握了很多单片机、软件编程的知识,让我对我所学过的知识有所巩固和提高,并且让我对当今单片机的最新发展技术有所了解。在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。
脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。
在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。
在此更要感谢我的导师和专业老师,是你们的细心指导和关怀,使我能够顺利的完成毕业论文。在我的学业和论文的研究工作中无不倾注着老师们辛勤的汗水和心血。老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。在此我要向我的导师致以最衷心的感谢和深深的敬意。
参考文献
[1] 代启化.基于Proteus的电路设计与仿真[J].现代电子技术,2006
[2] 曹洪奎.基于Proteus单片机系统设计与仿真[J].辽宁工学院学报,2007
[3] 侯玉宝.基于Proteus的51系列单片机设计与仿真[M].电子工业出版社,2008
[4] 蔡希彪 曹洪奎.单片机电子时钟系统设计与仿真[J].中国科技信息,2007
[5] 方怡冰.单片机课程的教学与实验改革[J].电气电子教学学报,2006
[6] 刘文秀.单片机应用系统仿真的研究[J].现代电子技术,2005
[7] 张友德.单片微型机原理、应用与实验[M].复旦大学出版社,2003
[8] 李光飞.单片机设计实例指导[M].北京航空航天大学出版社,2004
[9] 胡汉才.单片机原理及其接口技术[M].清华大学出版社,1996
[10] 杨立民.单片机技术及应用[M].西安电子科技大学出版社,1997
附 录 元器件明细表
序号
名称
代号
规格、型号
数量
备注
1
单片机
U1
AT89C51
1
2
四位共阳数码管
LED
SR410561K
2
3
按键
K
4
4
电阻
R
RT-0.25-1K±5%
8
5
电容
C
CC-25-20μF±5%
2
6
石英晶振
X1
12.00MHz
1
7
万用板
80×100
1
8
蜂鸣器
LS1
3V
1
展开阅读全文