所有由张 晟发布的文章

《CPU自制入门》实践经验分享

《CPU自制入门》是人民有点出版社图灵系列自引进日本的一本非常好的书,该书在2014年出版,当年已经引起了不少IT业内认识和计算机技术爱好者们的关注(当然也包括我),后续数年不知因为什么原因,市场上缺货,二手渠道曾经一路被炒高至售价四五百元。后来出版社和责任编辑乐鑫发现,于去年重印,虽已过多年,至今仍可从各平台渠道上看到该书销售火热受追捧的程度。

正如译者赵谦博士在此书译者序中所言,对非常多接触IT行业从业人员、爱好者、有志从事或了解相关领域的学生而言,《CPU自制入门》正是他们一直寻找的那本书。相关领域的经典教材和各类好书不少,如MIT出版社出版的哈佛大学教材《计算机系统要素》,斯坦福大学前校长John LeRoy Hennessy等编写的《计算机组成与设计: 硬件/软件接口》,国内广泛采用的白中英教授编写的《计算机组成原理》。然而,迄今为止尚未发现一本像《CPU自制入门》这本书一样提供较低阅读门槛,并且从实践出发,介绍了计算机系统最物理、最底层开始的搭建过程,从电路板设计制造到CPU结构的设计和描述直到汇编语言编程,将如此广泛的技术内容以实践方式来学习,本书确实是首屈一指,也尚未见来着。本书在各层次原理理论讲解不尽详细,因为每一章摊开原理讲清楚明白可能都是大学里相关的一本专业课,不可能也没必要,但作为相关专业的实验手册或者课程设计指导书则再合适不过了(笔者有诸如配套白中英编写教材的清华大学科教仪器厂的TEC-4计算机组成原理实验箱,但其对普通师生的可获取性差且技术方案过于陈旧跟不上产业界的步伐),个人强烈建议国内有志的高校教师在教学改革过程中考虑将本书内容或者体系纳入专门的实验课或者相关课程设计中。

相信愿意购买和阅读此书的读者一定和我一样相信在可预见的未来,具备软硬结合设计和实践能力的工程师将会更加具有竞争力。书中几乎简要介绍了所有必要的基础知识(如数字电路设计、Verilog语言、电路板CAD软件使用、元器件购买等)。书中以最为精简的文字,将最核心的知识汇集到一本书中,使各种知识背景的读者都可以方便阅读以至于实践。

当然,这样的安排也容易导致了实践者在独自实践的过程之因为涉及领域之广泛而不熟悉,往往容易遇到意外的问题被卡住而最终被迫放弃。在本书编辑建议下,我把陆陆续续大概花了一个月实践过程中所遇到的各种问题和大家分享,写成这篇指南,希望能让大家实践顺利,少走弯路。

 

全书分为3章,

第1章 CPU得设计与实现

第2章 电路板的设计与制作

第3章 编程

 

实验实操过程中,不建议采用书中顺序,而应该从第2章开始,然后适度阅读第1章,并按照第3章逐步操作,原因如下:

1.书中采用的硬件架构并非现成产品,需要电路板和元器件实操,在硬件体系没有搭建起来以前,所有代码都无法在真实的平台上验证。

2.第一章是原理性讲解,设计本书最重要的精神和概念,多数阅读者未必有很好的Verilog语言基础和各种FPGA基础知识(如果有,本书可能对FPGA工程师略显粗浅),所以第一章如果遇到卡顿或者看不懂的地方,不应放弃,而应该先按照2、3章流程完成实操后,再慢慢理解第一章,第一章应该当成原理讲述大纲和字典,可以粗略看一遍不需要完全理解,开始实践代码的过程中,遇到不懂的地方再不时回来翻看。

3.本书重点在于有全套简单易用,资料详尽,案例完整的从芯片选型到电路设计,从硬件描述语言到汇编语言的全套解说,应该注重整个完整实践过程的主线,重在体验和为理论原理学习提供动力和感性认知,而不应过分纠结在一两个细节上。

 

跳坑:

初学者应完全遵照书中软件和版本进行环境搭建和操作,遇到有实际困难切换环境或者元件的情景,需要在有相关领域专业人员的指导下进行操作和元器件购买。

本书中文版在作者序前一页有一个声明

笔者写这段话的时候,已经是2021年了。这说明本书编写的环境并不能使用相关软件的任意版本,而应该尽量与书籍上内容呈现的版本一致或者寻找上述声明日期来进行操作。也就是说书中的代码和操作与软件之间的版本是有一定依存程度的。

 

这是为什么呢?以FPGA开发环境ISE为例,其不同版本开发环境所创建的工程往往与所依赖的代码文件和IP核相关。不同的版本,IP是可以升级的,但是如果IP在新版本新增一些接口,或者删掉一些接口,那么ISE是不能自动帮助连线或者修改代码的,这部分还是需要用户手动完成,这是特别需要注意的,也是导致很多莫名奇妙的错误让初学者无所适从而放弃。

 

以PCB设计软件Eagle CAD为例,其书中所展示的版本5.11.0为例,在2012年这是一款流行的PCB设计软件,属于一家叫做CADSOFT的德国公司,由于其有一个简单好用的免费版本,所以其在电子爱好者和创客社区非常活跃用于设计交流。但如今这款软件已经被AutoDesk公司所收购,其操作界面有较大的改变,也需要AutoDesk账号登录才能使用,笔者也遇到过官方自带元件库的命名对应和电路原理图文件打开后报错的情况。

 

跳坑:

书籍中相关资料下载问题

该书籍在图灵社区上相应的页面并没有提供直接的资料下载,https://www.ituring.com.cn/book/1142

而是给出了日本原版技术评论社的相关资料下载链接,刚开始没仔细查看该页面的图灵社区读者通常会在随书下载中查找资料,只有试读PDF

请至http://gihyo.jp/book/2012/978-4-7741-5338-4/support下载本书源代码。

请注意,该页面虽然全都是日文,但仍然不影响使用。如果强迫症,可以将整个页面直接扔进Google Translate或者DeepL翻译,查看译文。附网址(需要先获得访问完整互联网的能力)https://translate.google.com/translate?sl=ja&tl=zh-CN&u=https://gihyo.jp/book/2012/978-4-7741-5338-4/support

但是请注意,除了实践所需代码,原作者和出版社还提供了一些书籍的勘误和补充,其中P.403关于综合选项 的一项尤其重要,因为原书中没有提及,在代码综合的过程中,默认以speed而不是area进行综合,这回导致代码综合结果超过了该款芯片xc3s250e的容量而失败,一开始我在这里就卡住了两天。

 

跳坑:

电路板设计与绘图问题

可能是因为教育环境的缘故,国内大部分学生比较熟悉的EDA往往仅限于Altium Designer,笔者看到CSDN网站上有博客主https://blog.csdn.net/zysns/article/details/96426607(应该是比较主动好学的在校大学生)讲述自己完全按照书本内容附图在Altium Designer把整个原理图从零开始都画了一遍。我觉得精神可嘉但似乎不是很有必要,可能是这位同学并没有留意到上一条提到的随书相关资料,里面已经有直接可用的PCB文件,直接导出来使用生产即可。

 

作者在书中内容所展示的PCB板和封面的拥有基板少女的电路板并不是一个版本的电路板

 

根据作者在PCB丝印层提供的网址信息http://respon.org/(该网址已失效,但可以根据互联网档案馆https://archive.org/回溯查看该网页过去的历史)作者曾在该网站贩售书籍配套的裸PCB板,共有3个版本 1.0 、1.1、2.0。作者网站提供的文件和书中讲述内容,均为1.0版本,此版本背面并没有做出少女图案的覆铜层排版,并且电源模块另有一块电路板,用于将9V电源分别转换为3.3V、2.5V和1.2V三种电压。1.0版本电路板采用的电源转换方案较为传统,但非常适合没有焊接操作经验的初学者作为练习(全部都是插件元器件),后续版本可能采用了体积更为小巧的元器件方案来提供电压变换,具体方案(Eagle软件免费版限制了PCB尺寸在100*100以内)。此外,肯定有不少读者倾慕书籍封面的基板少女情有独钟,实际上此图案对于本书整理的技术和功能实现并没有丝毫影响,只是通过调整布线格局构造出这个有趣的图案。由于作者没有提供含有图案的源文件(即1.1和2.0版)但初学者操作修改电路板文件不出错具有一定风险,硬件排错比软件更为复杂,修改验证周期也更长。因此我建议初学者完全按照书中内容,即可1.0版实践,当一切顺利完成并且愿意在花费一定时间熟练操作Eagle PCB软件后,完全可以根据作者提供的如下视频进行图案的构造。

https://v.qq.com/x/page/a3220vz6bo3.html

 

<iframe frameborder=”0″ src=”https://v.qq.com/txp/iframe/player.html?vid=a3220vz6bo3″ allowFullScreen=”true”></iframe>

 

在后续实践过程中,笔者发现电路板上的IC3(74AC25)和IC5(74HC14)封装并不正确,不是标准的SOP引脚间距,其将导致最后PCB上的IC无法正常焊接(需要较为麻烦的跳线操作技巧)。笔者已将Eagle PCB文件略作修改,新版本将在本文后附的GitHub资料中上传。

 

关于Eagle软件的操作,笔者作为国内最早一批接触该软件的创客群体,不自谦推荐笔者早年从Sparkfun社区翻译的相关中文教程两篇,相信易于上手并足以应付包括此项目在内的一般项目需求:

http://www.i-element.org/eagleschematic/

http://www.i-element.org/eaglepcblayout/

 

跳坑:

电路板制作问题

作者所处的时间(2012年)和地点(日本),作为个人,进行PCB样品的制作可能要选用感光的制作方式(PCB文件里过孔偏大也是为了将就这种制造工艺,以减少后续失败风险)或者昂贵的海外委托加工方式。

然而我们今天所处的中国电子产品供应链廉价且灵活,完全没有必要购买一大堆零件手工捣鼓制作。所以书中相关内容建议仅供参考了解,实际上只要把相应的Eagle PCB文件按照相应步骤导出成标准的生产文件Gerber(参考书中操作步骤或者上一条Eagle软件操作参考文章),然后将相关文件发给国内一些制造商(如捷多邦、嘉立创等制造商即可完成PCB制作)。

 

由于PCB上阻容元件较多且标识并不是特别明晰(日本人这风格真的搞不懂),自己焊接相当费时,手动操作也比较容易出错,想象一下你在考试时进行大量手动的复杂计算,能保证不出一点差错的几率有多大?可以考虑委托上述PCB或者专业的SMT供应商预先贴片,至少可以把非IC的阻容贴好,而且由于后续手动焊接插件和芯片等元器件难保不会出现意外,非常建议多准备几款贴好阻容的PCB(3-5块)。

 

也可以考虑寻求笔者(微信ID:zhangchengwust)直接购买半成品PCB(贴好阻容元件),因为批量会比较便宜。

 

跳坑:

芯片购买问题

不知道是不是因为这一年多收到疫情影响,该项目中电路板上所使用的两个核心的芯片的正规供货渠道在这个时间节点(2020年11月)不是非常顺畅,即便是强大的DigiKey有供货也非常昂贵。有比较熟悉FPGA原料市场的朋友告诉笔者,十年前的产品线产量本来就不大,遇到供货不稳定的比较正常。

通过淘宝和华强北等一些不是非常原厂经销商的渠道,花费了比较高昂的价格(约100元)作者买到了XC3S250E SMD_VQ100和XCF02S SMD_VO20C这两个芯片和其它一些比较特殊的零件。在零件购买这一步,作为有一定经验的电子工程师的笔者也栽了跟头,因为淘宝等一些特殊渠道上淘洗来的芯片不仅可能是拆机的二手货,而且甚至很可能是无法工作的坏芯片或者是假的。

第一次在一家淘宝店买的XCF02S上一号引脚附近的芯片上没有圆点,一开始我还以为是这个芯片规格特殊,省略了这个一般芯片上都有的标记,后来到了烧录程序过程中发现芯片完全无法识别。在查阅了该芯片的Datasheet后,我确认这很可能是个假芯片。

 

可以考虑寻求笔者(微信ID:zhangchengwust)创建的交流群批量购买元器件包。如果在这方面有廉价并且稳定供货渠道的朋友,欢迎告知。

 

跳坑:

数字电路和Verilog HDL语言基本知识问题

 

如果你在学校里认真学过数字电路相关课程并熟练掌握C语言,可能对这本号称入门的书不屑一顾,再粗粗一眼看上去,感觉Verilog的语法和C语言看起来没啥区别,但当认真开始实现功能并且尝试理解代码原理的时候,你会发现你错了。对,对于没有只有上述课程基础,并没有FPGA实践经验的笔者来说,就是这样。不信你可以试试光凭本书第一章的那点介绍,你完全没法读懂项目里的大部分代码。

后来为了调试Verilog代码综合过程中的一些错误过程中,我反反复复查阅了数电书籍和专门的Verilog语言的书籍,对于掌握这门语言,效果并不是非常好。后来通过老石谈芯视频上的推荐,我发现对于真心想掌握这门语言的人,与其它理工科的学习一样必不可少的修炼手段,就是刷题!对,就是刷题网址,刷了一周后,发现提升非常大,实在看不懂的,就看一下答案,再自己写一遍。网址和答案附上:

 

https://hdlbits.01xz.net/

 

https://github.com/johnsonwust/HDL-Bits-Solutions(笔者Github,欢迎加薪点赞)

 

跳坑:

Xilinx ISE 版本选择和兼容性问题

电路都做完了,来到搭建软件环境这一步了。首先要注意,ISE已经是近十年前的产物了,最后的更新也是2013年的事情。本书译者赵谦博士建议我们后续学习FPGA都迁移到替代它的新环境Xilinx vivado中来。即便如此,请注意,如果你是Win10系统,千万不要下载上图所示的Win10版本,因为这是基于虚拟机技术的,虽然小,但是很多芯片用不了。而且笔者的结果就是直接装不上(不知道和电脑上装了VMWare一类的虚拟机程序是否有关)。

一共有4个压缩文件,而且每个都接近2G。如果你在下载过程中出现卡顿或者什么别的幺蛾子,请考虑获取访问完整互联网的能力。

接下来就是申请赛灵思的账号,并且填写自己的地址和公司等信息,要符合U.S. Government Export Approval,什么?是的,你没听错,下载米国公司的软件也算出口,也要符合美国政府的技术出口管制。所以我毫不犹豫的添了个纽约的地址,嘿嘿嘿!

跳坑:

Xilinx ISE 闪退问题

这个问题也卡了笔者很久,我刚开始发现的时候,事情是这样的,每当在Win10下把输入法从英文切换成中文的时候,软件立马闪退,后来发现导入文件和打开项目的时候也会有这个毛病,我当时简直就想咒骂赛灵思的软件工程师。问了我一个有FPGA开发经验的朋友,他直接告诉我,他们只在Linux环境下允许ISE,没在Windos下运行过。我刚有点心动的时候,忽然发现书后面马上要介绍使用JTAGE Shell烧录程序到FPGA的软件似乎只能在Windows下运行,而且作者都是在Windows下运行的,于是我硬着头皮找到了下面这个解决方法。

 

解决Xilinx_ISE 14.7在Win10下选择“open project”崩溃闪退的问题

问题描述
ISE 14.7对win10无法完美支持,在使用64位ISE时点击OPEN之类的东西时程序都会崩溃,虽然使用32位不会有这个问题,但是工程的默认打开方式不能改为32位。

解决方法如下

寻找安装Xilinx_ISE的安装目录下的文件夹:

D:\Xilinx\14.7\ISE_DS\ISE\lib\nt64

对文件夹下的两个文件作如下操作:

将libPortability.dll重名为libPortability.dll.orig

将 libPortabilityNOSH.dll 复制一份,然后将这个复制重命名为libPortability.dll

至此,64位ISE在打开项目等方面已经不会闪退,但是 PlanAhead等高级功能面前还是会闪退,

 

参考来源:https://blog.csdn.net/idevede/article/details/56024153

 

跳坑:

BSDL文件

Scratch编程超霸机器人(高品质乐高兼容)

 

全网最低价 点击或使用微信扫描上述二维码即可购买

Scratch编程超霸机器人 https://weidian.com/item.html?itemID=4270851520

孩子说他最大的梦想,就是收集到所有的汽车模型!每次说完,两只大眼睛闪亮亮的看着我,我就知道又要为孩子的梦想充值了。

当妈的谁会心疼给孩子花钱?我担心的是玩了这么多玩具,思维和大脑一点没有长进。

同龄人的孩子都在报班学编程,提前培养逻辑思维和学前意识,不惜一年投入好几万。

虽然价格看着肉疼,但我也不希望孩子落下太远,苦口婆心的劝他:妈妈给你报个班学学编程吧。

孩子一听就拒绝,说代码没意思,全是看不懂的符号,还不如拼玩具……

我觉得他对编程的误解很大,但是又没有特别好的方式引导他。

寓教于乐其实是最好的思维培养方式,如果真有这样的玩具能让孩子边玩边学,不用犹豫,我肯定给孩子买回家!

  · 拼插能力媲美乐高,可搭建几十种造型

  · 能学习编程,培养孩子的逻辑思维

  · 可玩性高,操控感强,不会太傻瓜

  · 性价比高,价格不贵

淘来淘去,这款好帅 · 超霸机器人,完美符合了我给孩子选玩具的所有期待。孩子看到的第一眼,兴奋的蹦蹦跳跳,说这个玩具太!酷!了!

它能够搭建21种造型,上百种玩法,可以反复拼插,少买了几十套乐高。

手机操控制动,瞬间化身遥控车。

携带传感功能,编程后有避障、光感等海量玩法。

使用Scratch语言,在家就能学编程,省下万元报班费。

我相信,很多爸妈会选择这款超霸机器人,作为孩子人生中学习编程不可或缺的玩具。

21种拼搭造型,上百种编程玩法

超霸机器人炫酷技能秀

431个积木模块,21种拼搭造型,孩子一入手肯定兴奋无比,马上就要拼起来!

 

 

从开源硬件到开源机器人应该怎样上手-教程一

如果说Helllo World是所有编程者牙牙学语的第一课,那么Blink(闪烁)和GoGo(跑起来)应该就是硬件编程和机器人编程的第一课,这就是产品名字的来历。本套入门教程共十篇,基于专为STEM教育(科学、技术、工程、数学)而设计的Blinkgogo车型机器人进行讲解。Blinkgogo mixly 米思奇Arduino 蓝牙小车  ←点击了解Blinkgogo

 

产品拆箱后,我们接下来需要将U盘里的东西拷贝到电脑上,然后打开Mixly或者Arduino进行编程。Mixly(米思齐)是一款基于Arduino的图形化编程软件。用户可以通过拼接积木块的方式来编写程序。按照产品附带的上手手册一即可使用范例程序,并下载完成后,你就可以开始尝试深入了解以便编写自己的程序了。

首先,我们需要先让小车动起来

如果我们想让电机前进,我们该怎么操作呢?

我们先从硬件线路看起,从Blink的底盘部可以看到:

从背面看,motor A为右侧电机,motor B为左侧电机

右侧电机由端口5、10控制

左侧电机由端口6、11控制

端口5、6与电机正向相连接

端口10、11与电机负向相连接

当端口5、6的电压高于端口10、11时,形成上图所示方向电流,左、右电机正转,Blinkgogo前进。反之,左、右电机倒转,Blinkgogo后。,电压相同时,无电流形成,左、右电机停转,Blinkgogo停止

 

那现在,假设我们想让Blink

全速向前前进2秒

再向后后退2秒

最后停止

在编程界面中,我们需要调用

“输入/输出”模块中的”数字输出“模块

和“控制”模块中的”延迟”模块来实现电机的运转

 

向前前进:

使用”数字输出”模块

设置端口5为高电平,端口10为低电平(右电机正转)

使用”数字输出”模块

设置端口6为高电平,端口11为低电平(左电机正转)

使用”延迟”模块

延迟2000毫秒(即持续2秒钟)

向后后退:

使用”数字输出”模块

设置端口5为低电平,端口10为高电平(右电机倒转)

使用”数字输出”模块

设置端口6为低电平,端口11为高电平(左电机倒转)

使用”延迟”模块

延迟2000毫秒(即持续2秒钟)

 

 

停止:

使用”数字输出”模块

设置端口5、6、10、11全为低电平(A、B电机停止)

现在进阶一下

如果我们想让Blink以特定速度前行或后退

我们该怎么做?

即,更改一下之前的任务:

现在我们想让Blink

以60%的速度向前前进2秒

再以60%的速度向后后退2秒

最后停止

 

我们需要调用”输入/输出”模块中的

“模拟输出”模块

来实现电机的调速

设置电机两极中一侧为低电平

一侧为特定的电压值

便可以实现给电机设定速度

电压值的数值设置通过“模拟输出”实现

模拟输出的数值范围为0~255

模拟输出赋值为255即为全速

我们需要60%的速度

则需要将另一端口赋值为60%*255=153。

 

向前前进:

使用”数字输出”模块,设置端口10为低电平

使用”模拟输出”模块,设置端口5为153

(右电机以60%速度正转)

使用”数字输出”模块,设置端口11为低电平

使用”模拟输出”模块,设置端口6为153

(左电机以60%速度正转)

使用”延迟”模块,延迟2000毫秒

(即持续2秒钟)

 

向后后退:

使用”数字输出”模块,设置端口5为低电平

使用”模拟输出”模块,设置端口10为153

(右电机以60%速度倒转)

使用”数字输出”模块,设置端口6为低电平

使用”模拟输出”模块,设置端口11为153

(左电机以60%速度倒转)

使用”延迟”模块,延迟2000毫秒

(即持续2秒钟)

停止:

使用”数字输出”模块

设置端口5、6、10、11全为低电平(A、B电机停止)

最后,我们来讲一下转向

Blink不像我们日常开的汽车有方向盘

可以通过调整转向盘转向

在Blink中,需要用左右电机的速度差来转向

如果右电机速度大于左电机速度,Blink会向左转

左电机速度大于右电机速度,Blink向右转

转弯半径的大小也由速度差的大小决定

要注意,如一侧电机设置为后退

在计算速度差的时候,速度值以负数计算哦

关于Blink转向的探究

就留给大家课后去探索

我们将在下一节,演示不同情景的转向。

附:Arduino源代码

void setup()
{
/*
​
  11      10
   |       |
  |M|     |M|
   |       |
   6       5
​
*/
  pinMode(5, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(11, OUTPUT);
}
​
void loop()
{
  //前进
  //5→10
  digitalWrite(5,HIGH);
  digitalWrite(10,LOW);
   //6→11
  digitalWrite(6,HIGH);
  digitalWrite(11,LOW);
  delay(2000);
​
 //后退
  //10→5
  digitalWrite(5,LOW);
  digitalWrite(10,HIGH);
  //11→6
  digitalWrite(6,LOW);
  digitalWrite(11,HIGH);
  delay(2000);
​
  //停止
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  delay(2000);
​
  //前进
  //5→10
  digitalWrite(10,LOW);
  analogWrite(5,153);
     //6→11
  digitalWrite(11,LOW);
  analogWrite(6,153);
  delay(2000);
​
 //后退
  //10→5
  digitalWrite(5,LOW);
  analogWrite(10,153);
  //11→6
  digitalWrite(6,LOW);
  analogWrite(11,153);
  delay(2000);
​
  //停止
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  delay(2000);
 
}

 

Blinkgogo机器人套件初上手代码调试

教程一:简单介绍和电机驱动

//电机驱动01
 
/*
 
  11      10
   |       |
  |M|     |M|
   |       |
   6       5
 
*/
void setup()
{
  pinMode(11, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(5, OUTPUT);
}
 
void loop()
{
  // 左前进
  // 6↑ → 11↓
  digitalWrite(6,HIGH);
  digitalWrite(11,LOW);
  //延时1秒
  delay(1000);
  // 左后退
  // 11↑ → 6↓
  digitalWrite(6,LOW);
  digitalWrite(11,HIGH);
  //延时1秒
  delay(1000);
  // 左停止
  // 6↓ = 11↓
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  delay(1000);
 
  //右前进
  // 5↑ → 10↓
  digitalWrite(5,HIGH);
  digitalWrite(10,LOW);
  //延时1秒
  delay(1000);
  //右后退
  // 10↑ → 5↓
  digitalWrite(5,LOW);
  digitalWrite(10,HIGH);
  //延时1秒
  delay(1000);
  //右停止
  // 5↓ = 10↓
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
  //延时1秒
  delay(1000);
}
//电机驱动02
 
/*
 
  11      10
   |       |
  |M|     |M|
   |       |
   6       5
 
*/
void setup()
{
  pinMode(11, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(5, OUTPUT);
}
 
void loop()
{
  //左前进 6↑ → 11↓
  digitalWrite(6,HIGH);
  digitalWrite(11,LOW);
  //右前进 5↑ → 10↓
  digitalWrite(5,HIGH);
  digitalWrite(10,LOW);
  delay(1000);
 
  //左停止
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  //右停止
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
  delay(1000);
 
  //左后退 11↑ → 6↓
  digitalWrite(6,LOW);
  digitalWrite(11,HIGH);
  //右后退 10↑ → 5↓
  digitalWrite(5,LOW);
  digitalWrite(10,HIGH);
  delay(1000);
 
  //左停止
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  //右停止
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
  delay(1000);
 
  //左转(左后退,右前进)
  digitalWrite(6,LOW);
  digitalWrite(11,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(10,LOW);
  delay(1000);
 
  //左停止
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  //右停止
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
  delay(1000);
 
  //右转(左前进,右后退)
  digitalWrite(6,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(5,LOW);
  digitalWrite(10,HIGH);
  delay(1000);
 
  //左停止
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  //右停止
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
  delay(1000);
}
//电机驱动03
 
int speed = 100;
 
void setup()
{
  pinMode(11, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(5, OUTPUT);
 
  Serial.begin(9600);
}
 
void loop()
{
  Serial.println("Forward");
  //左前进 6↑ → 11↓
  analogWrite(6,speed);
  digitalWrite(11,LOW);
  //右前进 5↑ → 10↓
  analogWrite(5,speed);
  digitalWrite(10,LOW);
  delay(1000);
 
  blinkgogoStop();
 
  Serial.println("Backward");
  //左后退 11↑ → 6↓
  digitalWrite(6,LOW);
  analogWrite(11,speed);
  //右后退 10↑ → 5↓
  digitalWrite(5,LOW);
  analogWrite(10,speed);
  delay(1000);
 
  blinkgogoStop();
 
  //左转(左后退,右前进)
  digitalWrite(6,LOW);
  analogWrite(11,speed);
  analogWrite(5,speed);
  digitalWrite(10,LOW);
  delay(1000);
 
  blinkgogoStop();
 
  //右转(左前进,右后退)
  analogWrite(6,speed);
  digitalWrite(11,LOW);
  digitalWrite(5,LOW);
  analogWrite(10,speed);
  delay(1000);
 
  blinkgogoStop();
  delay(1000);
}
 
 
void blinkgogoStop()
{
  //左停止
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  //右停止
  digitalWrite(5,LOW);
  digitalWrite(10,LOW);
}

 

 

教程二:runBlinkgogo封装和走回形

 

//runBlinkgogo封装 测试
 
long speed;
 
/*
 
  11      10
   |       |
  |M|     |M|
   |       |
   6       5
 
*/
 
void runBlinkgogo(long leftSpeed, long rightSpeed)
{
  if (leftSpeed &gt;= 0)
  {
    //6→11
    analogWrite(6,leftSpeed);
    digitalWrite(11,LOW);
  }
  else
  {
    //11→6
    analogWrite(11,0-leftSpeed);
    digitalWrite(6,LOW);
 
  }
  if (rightSpeed &gt;= 0)
  {
    //5→10
    analogWrite(5,rightSpeed);
    digitalWrite(10,LOW);
  }
  else
  {
    //10→5
    analogWrite(10,0-rightSpeed);
    digitalWrite(5,LOW);
  }
}
 
void setup()
{
  speed = 200;
  pinMode(11, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(5, OUTPUT);
}
 
void loop()
{
  //前进
  runBlinkgogo(speed, speed);
  delay(1000);
  //后退
  runBlinkgogo(0 - speed, 0 - speed);
  delay(1000);
  //左转
  runBlinkgogo(0 - speed, speed);
  delay(1000);
  //右转
  runBlinkgogo(speed, 0 - speed);
  delay(1000);
  //停止
  runBlinkgogo(0, 0);
  delay(1000);
}
//
 
long speed;
 
/*
 
  11      10
   |       |
  |M|     |M|
   |       |
   6       5
 
*/
 
void runBlinkgogo(long leftSpeed, long rightSpeed)
{
  if (leftSpeed &gt;= 0)
  {
    //6→11
    analogWrite(6,leftSpeed);
    digitalWrite(11,LOW);
  }
  else
  {
    //11→6
    analogWrite(11,0-leftSpeed);
    digitalWrite(6,LOW);
 
  }
  if (rightSpeed &gt;= 0)
  {
    //5→10
    analogWrite(5,rightSpeed);
    digitalWrite(10,LOW);
  }
  else
  {
    //10→5
    analogWrite(10,0-rightSpeed);
    digitalWrite(5,LOW);
  }
}
 
void setup()
{
  speed = 200;
  pinMode(11, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(5, OUTPUT);
}
 
void loop()
{
  //前进
  runBlinkgogo(speed, speed);
  delay(1000);
 
  //停止
  runBlinkgogo(0, 0);
  delay(300);
 
  //右转
  runBlinkgogo(40, 0 - 40);
  delay(500);
 
  //停止
  runBlinkgogo(0, 0);
  delay(300);
}
//
 
long leftSpeed;
long rightSpeed;
 
/*
 
  11      10
   |       |
  |M|     |M|
   |       |
   6       5
 
*/
 
void runBlinkgogo(long leftSpeed, long rightSpeed)
{
  if (leftSpeed >= 0)
  {
    //6→11
    analogWrite(6, leftSpeed);
    digitalWrite(11, LOW);
  }
  else
  {
    //11→6
    analogWrite(11, 0 - leftSpeed);
    digitalWrite(6, LOW);
 
  }
  if (rightSpeed >= 0)
  {
    //5→10
    analogWrite(5, rightSpeed);
    digitalWrite(10, LOW);
  }
  else
  {
    //10→5
    analogWrite(10, 0 - rightSpeed);
    digitalWrite(5, LOW);
  }
}
 
void setup()
{
  pinMode(11, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(5, OUTPUT);
  Serial.begin(9600);
}
 
void loop()
{
  // 顺时针转圈
  runBlinkgogo(255, 80);
  delay(8000);
  // 逆时针转圈
  runBlinkgogo(80, 255);
  delay(8000);
 
  // 操场式转圈
  runBlinkgogo(255, 100);
  delay(3600);
  runBlinkgogo(255, 255);
  delay(1000);
 
  // 8字型回环
  runBlinkgogo(255, 80);
  delay(4000);
  runBlinkgogo(255, 255);
  delay(1000);
 
  runBlinkgogo(80, 255);
  delay(4000);
  runBlinkgogo(255, 255);
  delay(1000);
 
 
  //蛇形前进(曲率变化)
  for (int speedOffset = -100; speedOffset < 100; speedOffset += 5)
  {
    leftSpeed = 125 + speedOffset;
    rightSpeed = 125 - speedOffset;
    Serial.print(leftSpeed);
    Serial.print("\t");
    Serial.println(rightSpeed);
    runBlinkgogo(leftSpeed, rightSpeed);
    delay(25);
  }
  delay(500); 
  for (int speedOffset = 100; speedOffset > -100; speedOffset -= 5)
  {
    leftSpeed = 125 + speedOffset;
    rightSpeed = 125 - speedOffset;
    Serial.print(leftSpeed);
    Serial.print("\t");
    Serial.println(rightSpeed);
    runBlinkgogo(leftSpeed, rightSpeed);
    delay(25);
  }
  delay(500);
}

教程三:探测黑线传感器使用和blink测试

 

//chapter 03 line_follow01
 
long runSpeed;        //电机基本速度
long sensorValueAll;  //存储左右巡线传感器L2、L3的检测值
byte lastDirection;   //存储上一次转向
 
void setup()
{
  runSpeed = 80;        //电机基本速度
  sensorValueAll = 0;   //存储左右巡线传感器L2、L3的检测值
  lastDirection = 0;    //存储上一次转向
  pinMode(2, INPUT);    //左巡线传感器L2
  pinMode(3, INPUT);    //右巡线传感器L3
  pinMode(11, OUTPUT);  //左马达 Motor B2
  pinMode(6, OUTPUT);   //左马达 Motor B1
  pinMode(10, OUTPUT);  //右马达 Motor A2
  pinMode(5, OUTPUT);   //右马达 Motor A1
}
 
void loop()
{
  //将L2与L3生成一个两位十进制数,存于sensorValueAll用于后续判断偏离方向分类
  sensorValueAll = 10 * digitalRead(2) + digitalRead(3);
  //用switch语句来选择分支机构,共4种情况
  switch (sensorValueAll)
  {
    case 0: //00,左右巡线传感器L2、L3都检测到黑线
      runBlinkgogo(runSpeed, runSpeed); //继续左右同速直线前行
      break;
    case 1: //01,左巡线传感器L2检测到黑线,右巡线传感器L3检测到离开黑线
      runBlinkgogo(runSpeed, 100);  //Motor B &lt; Motor A,左转 lastDirection = 0; //存储本次转向,零为右转 break; case 10: //10,左巡线传感器L2检测到离开黑线,右巡线传感器L3检测到黑线 runBlinkgogo(100, runSpeed); //Motor B &gt; Motor A,右转
      lastDirection = 1;  //存储本次转向,零为左转
      break;
    case 11:  //11,左右巡线传感器L2、L3都检测到离开黑线
      if (lastDirection)  //依照上次转向,单轮速度为零,加大转向速度
      {
        runBlinkgogo(runSpeed, 0);  //依照上次转向,右电机不动,左电机前进,右轮为中心右转
      }
      else
      {
        runBlinkgogo(0, runSpeed);  //依照上次转向,左电机不动,右电机前进,左轮为中心左转
      }
      break;
    default:  //其它情况
      runBlinkgogo(0, 0); //停机
      break;
  }
}
 
//传入左右电机运动参数,参数有效范围-256至于+255,
//但近0附近数值因摩擦阻力等存在死区,约-40至+40,导致电机无法转动
void runBlinkgogo(long leftSpeed, long rightSpeed)
{
  if (leftSpeed &gt;= 0)
  {
    //6→11
    analogWrite(6, leftSpeed);
    digitalWrite(11, LOW);
  }
  else
  {
    //11→6
    analogWrite(11, 0 - leftSpeed);
    digitalWrite(6, LOW);
 
  }
  if (rightSpeed &gt;= 0)
  {
    //5→10
    analogWrite(5, rightSpeed);
    digitalWrite(10, LOW);
  }
  else
  {
    //10→5
    analogWrite(10, 0 - rightSpeed);
    digitalWrite(5, LOW);
  }
}
//chapter 03 line_follow02
 
long speedBase = 100;   //电机基本速度
long speedOffset = 40;  //电机偏置速度
long speedLeft = 100;   //左电机速度参数传入值
long speedRight = 100;  //右电机速度参数传入值
boolean lastDirectionLeft = true; //上一次偏转方向是否为的右布尔值
 
 
void setup()
{
  pinMode(13, OUTPUT);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
}
 
void loop()
{
  //根据左右巡线传感器L2、L3是否压线亮灯
  detectBlink();
  if(onLine(2)&amp;&amp;onLine(3))  //左右巡线传感器L2、L3都检测到黑线
  {
    runBlinkgogo(speedBase,speedBase);  //继续左右同速直线前行
  }
  if(!onLine(2)&amp;&amp;!onLine(3)) //左右巡线传感器L2、L3都检测到离开黑线 
  {
    if (lastDirectionLeft)
      runBlinkgogo(0, speedRight+speedOffset); //Motor B &lt; Motor A,左转 else runBlinkgogo(speedLeft+speedOffset, 0); //Motor B &gt; Motor A,右转
  }
  if(onLine(2)&amp;&amp;!onLine(3)) //左巡线传感器L2检测到黑线,右巡线传感器L3检测到离开黑线
  {
    runBlinkgogo(speedLeft-speedOffset, speedRight+speedOffset);
    lastDirectionLeft = true; //存储本次转向,零为右转
  }
  if(!onLine(2)&amp;&amp;onLine(3)) //左巡线传感器L2检测到离开黑线,右巡线传感器L3检测到黑线
  {
    runBlinkgogo(speedLeft+speedOffset, speedRight-speedOffset);
    lastDirectionLeft = false;  //存储本次转向,零为左转
  }
}
 
//检测Ln是否压黑线
boolean onLine(int Ln)
{
  return !digitalRead(Ln);
}
 
//检测到左右巡线传感器L2、L3都压黑线则关LED灯
//其中一个离开则亮全车LED灯提醒
void detectBlink()
{
  if(onLine(2) &amp;&amp; onLine(3))
    digitalWrite(13,LOW);
  else
    digitalWrite(13,HIGH);
}
 
//传入左右电机运动参数,参数有效范围-256至于+255,
//但近0附近数值因摩擦阻力等存在死区,约-40至+40,导致电机无法转动
void runBlinkgogo(long leftSpeed, long rightSpeed)
{
  if (leftSpeed &gt;= 0)
  {
    //6→11
    analogWrite(6,leftSpeed);
    digitalWrite(11,LOW);
  }
  else
  {
    //11→6
    analogWrite(11,0-leftSpeed);
    digitalWrite(6,LOW);
 
  }
  if (rightSpeed &gt;= 0)
  {
    //5→10
    analogWrite(5,rightSpeed);
    digitalWrite(10,LOW);
  }
  else
  {
    //10→5
    analogWrite(10,0-rightSpeed);
    digitalWrite(5,LOW);
  }
}
//chapter 03 line_follow03
 
#define L1 4  //左上角巡线传感器L1
#define L2 2  //左巡线传感器L2
#define L3 3  //右巡线传感器L3
#define L4 7  //右上角巡线传感器L4
 
long noLineTimes = 0;     //存储所有巡线传感器没检测到黑线的次数
long speedBase = 100;     //电机基本速度
long speedLeft;           //左电机速度参数传入值
long speedRight;          //右电机速度参数传入值
long speedOffset = 40;    //电机偏置速度
boolean lastDirectionLeft;//上一次偏转方向是否为右的布尔值
 
void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT);    //全车LED
  pinMode(L1, INPUT);     //左上角巡线传感器L1
  pinMode(L2, INPUT);     //左巡线传感器L2
  pinMode(L3, INPUT);     //右巡线传感器L3
  pinMode(L4, INPUT);     //右上角巡线传感器L4
  speedLeft = speedBase;  //左电机速度参数传入值
  speedRight = speedBase; //右电机速度参数传入值
}
 
void loop()
{
  detectBlink();  //根据左右巡线传感器L2、L3是否压线亮灯
  //全部巡线传感器检测或检测不到黑线
  if ((onLine(L1) &amp;&amp; onLine(L2) &amp;&amp; onLine(L3) &amp;&amp; onLine(L4)) == true || (onLine(L1) || onLine(L2) || onLine(L3) || onLine(L4)) == false)
  {
    noLineTimes ++; //存储所有巡线传感器没检测到黑线的次数加一
    Serial.print("noLineTimes++");
    Serial.println(noLineTimes);
  }
  else
  {
    //L1压黑线
    if (onLine(L1))//L1 is connect to PIN D4
    {
      //只有L1压黑线
      if (!onLine(L2) &amp;&amp; !onLine(L3) &amp;&amp; !onLine(L4))
      {
        speedLeft = -speedOffset;
        speedRight = speedOffset;
        lastDirectionLeft = true;
      }
    }
    //L4黑线
    else if (onLine(L4))//L4 is connect to PIN D7
    {
      //只有L4压黑线
      if (!onLine(L1) &amp;&amp; !onLine(L2) &amp;&amp; !onLine(L3))
      {
        speedLeft = speedOffset;
        speedRight = -speedOffset;
        lastDirectionLeft = false;
      }
    }
    else
    {
      //左右巡线传感器L2、L3都检测到黑线
      if (onLine(L2) &amp;&amp; onLine(L3))
      {
        speedLeft = speedBase;
        speedRight = speedBase;
      }
      //L2压黑线、L3不压黑线
      if (onLine(L2) &amp;&amp; !onLine(L3))
      {
        speedLeft = speedBase;
        speedRight = speedBase + speedOffset;
        lastDirectionLeft = true;
      }
      //L2不压黑线、L3压黑线
      if (!onLine(L2) &amp;&amp; onLine(L3))
      {
        speedLeft = speedBase + speedOffset;
        speedRight = speedBase;
        lastDirectionLeft = false;
      }
      //L2与L3都不压黑线
      if (!onLine(L2) &amp;&amp; !onLine(L3))
      {
        //上一次转向为左
        if (lastDirectionLeft)
        {
          speedLeft = 0;
          speedRight = speedBase + speedOffset;
        }
        //上一次转向为右
        else
        {
          speedLeft = speedBase + speedOffset;
          speedRight = 0;
        }
      }
    }
    noLineTimes = 0;
  }
  //存储所有巡线传感器没检测到黑线的次数,是否传入电机参数运行
  if (noLineTimes &lt; 50) { runBlinkgogo(speedLeft, speedRight); } else { runBlinkgogo(0, 0); } } //检测Ln是否压黑线 boolean onLine(int Ln) { return !digitalRead(Ln); } void detectBlink() { if (onLine(2) &amp;&amp; onLine(3)) digitalWrite(13, LOW); else digitalWrite(13, HIGH); } //传入左右电机运动参数,参数有效范围-256至于+255, //但近0附近数值因摩擦阻力等存在死区,约-40至+40,导致电机无法转动 void runBlinkgogo(long leftSpeed, long rightSpeed) { if (leftSpeed &gt;= 0)
  {
    //6→11
    analogWrite(6, leftSpeed);
    digitalWrite(11, LOW);
  }
  else
  {
    //11→6
    analogWrite(11, 0 - leftSpeed);
    digitalWrite(6, LOW);
 
  }
  if (rightSpeed &gt;= 0)
  {
    //5→10
    analogWrite(5, rightSpeed);
    digitalWrite(10, LOW);
  }
  else
  {
    //10→5
    analogWrite(10, 0 - rightSpeed);
    digitalWrite(5, LOW);
  }
}

 

教程四:简单巡线和速度尝试

 

 

教程五:playMusic和速度参数调试lineFollower

 

 

教程六:寻光测试 lightFollower

 

 

教程七:走迷宫 goMaze

 

 

教程八:红外遥控控制原理和尝试测试

 

 

教程九:较大规模的程序功能划分与红外控制

 

 

教程十:集成手机应用程序的控制小车appControlBlinkgogo

 

 

TPC-2003A+ 32位微机接口实验系统

欢迎了解创元素电子实验设备公开计划。回忆起往昔在学校学习电子电路等相关技术基础课的时候,相信很多同学或已经参加工作的朋友们应该都深有同感。除了课堂单纯的讲解,课本里反反复复看不懂的说明,为应付考试而不断刷题乏味,缺乏直观的实验演示(现在应该是草草在实验室走了个过场),最终导致了大家对专业的学习和应用缺乏信息。之所以心里没底气,原因其实很简单,书上讲解的基本电路没搭过没测试过,实验室里的各种仪器也做不了熟练上手的操作。

事实上,实验是学习电子技术的一个重要环节。对巩固和加深课堂教学内容,高学生实际工作技能,培养科学作风,为学习后续课程和从事实践技术工作奠定基础具有重要作用。当今我们的许多一流高校并不缺乏相应的经费,其实验室也有良好的实践条件。然而,提供给好学者的机会是不多的,种种管理制度上的原因,大家能随时随地使用这些硬件条件往往也不具备。很多同学和爱好者就和我们早期一样,在宿舍、在自己的家里自己进行补充学习和自行搭建各种实验条件,这也是催生爱好者们到处在网上交流和寻找各种实践机会和条件。

从各种单片机开发板、趣味电子实验书籍资料等等,虽然其优势和自身的特点,但绝大部分其实与学校里的科班培养计划课程及标准教科书脱节较远,并不太能帮助将来成为专业从业者的学生建立严谨的学科体系知识,进而登堂入室。另一方面,由许多校企及专业供应高校实验室建设的公司生产制造了大量相关的实验设备器材和配套资料,通过专门的业务途径或教育系统关系进入到高校的采购之列,然而这些产品价格高昂且一般人无法通过官网或互联网上等渠道自由获取相关资料学习和实践。

有一些朋友在知道我们通过各种途径收集了大量本科电类专业的课程的实验器材后,希望向我获取相关资料、租用设备,并建议我公开分享相关资讯。由于工作忙碌和器材陈旧等各种原因,我一直并未认真整理分享相关资讯。但近日又有高校师生叩门联络并痛陈其专业教材阅读及欲实践无门之苦,又相关实验器材行业并无技术门槛且罔顾版权互抄严重,如非特殊采购机制,此类教育器材硬件贩售实难为公司牟利之主源,发达国家诸多此类教育相关资讯均已CC协议公开,并借由创客运动得到广泛传播。该应用故我摒弃非原创资料价值之疑虑,趁疫情居家期间尽数整理相关资料并通过各类渠道分享。部分资料及硬件采购资讯不易通过网页等方式分享的,或欲进行相关教学合作的同仁,欢迎通过微信ID:zhangchengwust 与我接洽,交流相关资讯。祝专业教学研之路顺遂,取得建树。

实验室及实验仪器的综合和开放是当前实验室建设的方向,培养学生的研究和创新能力是实验室的重要任务。为适应实验室建设的需要清华大学科教仪器厂在《TPC-2003A通用微机接口实验仪》的基础上推出了<TPC-2003A+ 32位微机接口实验系统>。增加了系统的安全性能、开放能力和可扩充性。

▲ 实验系统构成及特点

该系统由一块PCI总线扩展卡、一个扩展实验台及软件集成实验环境组成,PCI总线卡插在机箱内任一PCI插槽上,提供PCI-ISA总线的转换与驱动。PCI卡与实验台之间由一条50芯扁平电缆连接。其主要特点如下:

1.    PCI总线全新结构设计,适应现代微机发展的技术要求。系统以PC为主机,通过PCI总线扩展卡将PCI总线信号转换成ISA总线信号引入接口实验台,供接口实验使用。

2.    满足《微机原理与接口技术》、《数字逻辑与数字系统》课程教学实验要求。实验台上设有I/O地址译码电路、常用接口实验电路、A/D、D/A转换电路、数码显示电路、双色发光二极管点阵电路、二进制开关输入及LED显示、电机电路、温度检测等。全面支持“微机原理”“微机接口”“微机控制”等各项实验内容。

3.    开放式结构,模块化设计支持开放实验,便于老师和学生设计开发新的实验。实验台上除固定电路外还设有用户扩展实验区,用户可以自己设计实验电路,在用户试验区插上所选芯片并连线即可以实验。另外系统还提供了32位数据扩展及32位存储器读写模块、字符,图形液晶显示实验模块、红外收发实验模块、无线通信实验模块、键盘显示实验模块等多种扩展实验模块供教学实验选择。

4.    功能强大的软件集成开发环境,支持Win98, Win2000, WinXP 等操作系统。随机附带有TPC-2003A+集成实验开发环境软件,可以方便的对程序进行编辑、编译、链接和调试,可以查看实验原理图,实验接线,实验程序并进行实验演示。

5.    实验程序可以使用宏汇编和C语言。集成实验开发软件可以自动识别汇编语言还是C语言源程序,可以对汇编程序和C语言程序进行调试。

6.    实验台上有五个通用集成电路插座,每个插座引脚都有对应的“自锁紧”插孔,利用这些插孔可以让学生搭试更多的实验。

7.    实验台自带+5V电源保护电路。一旦接线发生错误,造成+5V电源短路,立即报警并切断电源。

8.    实验输出信号都带有保护电阻,保护试验电路的安全。

▲ 实验内容

1.     I/O地址译码器实验

2.    简单并行接口实验

3.    可编程定时器/计数器实验

4.    可编程并行接口实验(一)(二)

5.    七段数码管实验

6.    继电器控制实验

7.    竞赛枪答器实验

8.    交通灯控制实验

9.    中断实验

10. 数/模转换器实验

11. 模/数转换器实验

12. 数字录音机实验

13. 串行通信实验

14. DMA传送实验

15. 集成电路测试实验

16. 电子琴实验

17. 8250串行通信实验

18. 步进电机控制实验

19. 直流电机转速控制实验

20. 8279键盘显示控制实验

21. 存储器读写实验

22. 双色发光二极管点阵显示实验

23. 数字测温实验

24. 直流电机,步进电机测速实验

▲ 选做实验(需单独购买相应实验模块)

25. 32位DMA传送实验

26. 32位存储器读写实验

27. 字符图形LCD显示实验

28. 无线收发实验

29. 红外收发实验

▲ WDM编程实验

提供WDM设备驱动程序例程,可进行WDM驱动编程的学习。

▲ 可选实验模块(选配)

1.    32位存储器和32位DMA实验模块

2.    字符图形液晶实验模块

3.    8255控制键盘实验模块

4.    红外收发实验模块

5.    无线收发实验模块

▲ 配套资料及推荐教材

1.           TPC-2003A+  32位微机接口实验系统教师用实验指导书

2.           TPC-2003A+  32位微机接口实验系统学生用实验指导书

3.           TPC-2003A+  32位微机接口实验系统用户光盘

View Fullscreen

 

View Fullscreen

 

View Fullscreen

TPC-H微机接口实验系统

欢迎了解创元素电子实验设备公开计划。回忆起往昔在学校学习电子电路等相关技术基础课的时候,相信很多同学或已经参加工作的朋友们应该都深有同感。除了课堂单纯的讲解,课本里反反复复看不懂的说明,为应付考试而不断刷题乏味,缺乏直观的实验演示(现在应该是草草在实验室走了个过场),最终导致了大家对专业的学习和应用缺乏信息。之所以心里没底气,原因其实很简单,书上讲解的基本电路没搭过没测试过,实验室里的各种仪器也做不了熟练上手的操作。

事实上,实验是学习电子技术的一个重要环节。对巩固和加深课堂教学内容,高学生实际工作技能,培养科学作风,为学习后续课程和从事实践技术工作奠定基础具有重要作用。当今我们的许多一流高校并不缺乏相应的经费,其实验室也有良好的实践条件。然而,提供给好学者的机会是不多的,种种管理制度上的原因,大家能随时随地使用这些硬件条件往往也不具备。很多同学和爱好者就和我们早期一样,在宿舍、在自己的家里自己进行补充学习和自行搭建各种实验条件,这也是催生爱好者们到处在网上交流和寻找各种实践机会和条件。

从各种单片机开发板、趣味电子实验书籍资料等等,虽然其优势和自身的特点,但绝大部分其实与学校里的科班培养计划课程及标准教科书脱节较远,并不太能帮助将来成为专业从业者的学生建立严谨的学科体系知识,进而登堂入室。另一方面,由许多校企及专业供应高校实验室建设的公司生产制造了大量相关的实验设备器材和配套资料,通过专门的业务途径或教育系统关系进入到高校的采购之列,然而这些产品价格高昂且一般人无法通过官网或互联网上等渠道自由获取相关资料学习和实践。

有一些朋友在知道我们通过各种途径收集了大量本科电类专业的课程的实验器材后,希望向我获取相关资料、租用设备,并建议我公开分享相关资讯。由于工作忙碌和器材陈旧等各种原因,我一直并未认真整理分享相关资讯。但近日又有高校师生叩门联络并痛陈其专业教材阅读及欲实践无门之苦,又相关实验器材行业并无技术门槛且罔顾版权互抄严重,如非特殊采购机制,此类教育器材硬件贩售实难为公司牟利之主源,发达国家诸多此类教育相关资讯均已CC协议公开,并借由创客运动得到广泛传播。该应用故我摒弃非原创资料价值之疑虑,趁疫情居家期间尽数整理相关资料并通过各类渠道分享。部分资料及硬件采购资讯不易通过网页等方式分享的,或欲进行相关教学合作的同仁,欢迎通过微信ID:zhangchengwust 与我接洽,交流相关资讯。祝专业教学研之路顺遂,取得建树。

八十年代以来,国内大中专院校很多专业都相继开设了“微机原理及应用”方面的课程,讲授内容主要是8位机(Z80),实验设备多采用TP801单板机。随着计算机技术的发展,讲授内容开始逐步转向16位或32位的PC系列微机,实验设备亦需更新,“TPC-H通用微机接口实验系统”是我公司继“TPC-1型十六位微机实验培训系统”的基础上,综合了各学校讲课及实验老师的意见之后推出的微机硬件实验教学设备的新产品。该仪器增加了实验系统的开放能力和灵活性。它不仅使一些典型的微机接口实验方便,而且对一些计算机硬件要求较高的专业提供了锻炼学生动手能力,发挥创造才能的平台。该系统主要有以下特点:

★  实验电路连接采用了国家专利、获奖产品“自锁紧”插座及导线,消除了连线接触不良的现象。

★  电路设计中增加了多项保护措施,可有效的避免由于学生实验时错接、错编程损坏主机或接口集成电路的现象。

★  接口实验增加了实用性、趣味性的项目,附加了使用C语言进行实验的参考程序。

★  实验台上增加了逻辑笔、通用IC插座等电路。可作为数字电路实验仪器使用,也可以用于学生

毕业设计、实验数据的采集及科研开发。

该仪器于95年11月23日通过国家教委鉴定,鉴定意见认为:

该仪器设计方案合理,通用性强,实验方案新颖,实用性强,采用了“自锁紧”插座,消除了连线接触不良现象,附加了电路保护措施,提供了C语言进行接口实验的参考程序。该仪器技术水平处于国内先进水平,是一套值得推广的实验装置。

仪器硬件包括接口卡、实验台(箱)两部分组成,两者之间通过50线扁平电缆相连。

接口卡可以插入PC系列微机中任意一个扩展插槽,它的主要功能是将与实验有关的总线信号加以驱动后引到实验台上,同时引出信号还有与“中断”和“DMA”实验操作有关的信号及+5V、+12V、-12V电源。另外,卡上设有一个跳线开关(JP)用于选择中断请求信号:IRQ2、IRQ3、IRQ4、IRQ7中的一个作为中断请求信号。

实验台上设有I/O地址译码电路、总线插孔、接口实验常用集成电路、外围电路及通用IC插座等部分组成。外围电路包括逻辑电平开关电路、LED显示电路、时钟电路、单脉冲电路、逻辑笔、复位电路、七段数码管显示电路、基本门电路、继电器及步进电机、小直流电机的驱动电路。

使用说明书中介绍了22个微机接口实验。覆盖了大中专院校微机接口实验教学大纲中的内容。教师可以根据课时计划安排选作,也可以在此基础上重新设计新的实验项目。随机软盘中附有每个实验的汇编语言及C语言的参考程序。

目     录

一、概述. 65

二、安装. 66

三、实验台结构:(见上页). 62

1、I/O地址译码电路. 62

2、总线插孔. 62

3、时钟电路. 62

4、逻辑电平开关电路. 62

5、LED显示电路. 63

6、七段数码管显示电路. 63

7、单脉冲电路. 64

8、逻辑笔. 64

9、继电器及驱动电路. 64

10、复位电路. 64

11、接口集成电路. 65

12、跳线开关(JP). 65

13、+5V电源插针. 65

14、通用集成电路插座. 65

15、数字电路实验区. 65

16、接线端子. 65

17、50线总线插座信号安排. 66

18、直流电源开关(K1)和存储器地址选择开关(K2). 66

19、使用外加直流电源注意事项:. 66

四、接口实验部分:. 67

实验一    I/O地址译码. 67

实验二    简单并行接口. 68

实验三    可编程定时器/计数器. 71

实验四、  可编程并行接口(一). 73

实验五    七段数码管. 75

实验六    继电器控制. 78

实验七    竞赛抢答器. 81

实验八    交通灯控制实验. 83

实验九    中断. 85

实验十    可编程并行接口(二). 88

实验十一    数/模转换器. 91

实验十二    模/数转换器. 94

实验十三    数字录音机. 97

实验十四    串行通讯. 101

实验十五    DMA传送. 104

实验十六    集成电路测试. 107

实验十七    电子琴. 110

实验十八    8250串行通讯实验. 113

实验十九    步进电机控制实验. 116

实验二十    小直流电机转速控制实验. 120

实验二十一    键盘显示控制器实验. 123

实验二十二    存储器读写实验. 137

View Fullscreen

计算机组成原理与系统结构实验系统TEC-4

欢迎了解创元素电子实验设备公开计划。回忆起往昔在学校学习电子电路等相关技术基础课的时候,相信很多同学或已经参加工作的朋友们应该都深有同感。除了课堂单纯的讲解,课本里反反复复看不懂的说明,为应付考试而不断刷题乏味,缺乏直观的实验演示(现在应该是草草在实验室走了个过场),最终导致了大家对专业的学习和应用缺乏信息。之所以心里没底气,原因其实很简单,书上讲解的基本电路没搭过没测试过,实验室里的各种仪器也做不了熟练上手的操作。

事实上,实验是学习电子技术的一个重要环节。对巩固和加深课堂教学内容,高学生实际工作技能,培养科学作风,为学习后续课程和从事实践技术工作奠定基础具有重要作用。当今我们的许多一流高校并不缺乏相应的经费,其实验室也有良好的实践条件。然而,提供给好学者的机会是不多的,种种管理制度上的原因,大家能随时随地使用这些硬件条件往往也不具备。很多同学和爱好者就和我们早期一样,在宿舍、在自己的家里自己进行补充学习和自行搭建各种实验条件,这也是催生爱好者们到处在网上交流和寻找各种实践机会和条件。

从各种单片机开发板、趣味电子实验书籍资料等等,虽然其优势和自身的特点,但绝大部分其实与学校里的科班培养计划课程及标准教科书脱节较远,并不太能帮助将来成为专业从业者的学生建立严谨的学科体系知识,进而登堂入室。另一方面,由许多校企及专业供应高校实验室建设的公司生产制造了大量相关的实验设备器材和配套资料,通过专门的业务途径或教育系统关系进入到高校的采购之列,然而这些产品价格高昂且一般人无法通过官网或互联网上等渠道自由获取相关资料学习和实践。

有一些朋友在知道我们通过各种途径收集了大量本科电类专业的课程的实验器材后,希望向我获取相关资料、租用设备,并建议我公开分享相关资讯。由于工作忙碌和器材陈旧等各种原因,我一直并未认真整理分享相关资讯。但近日又有高校师生叩门联络并痛陈其专业教材阅读及欲实践无门之苦,又相关实验器材行业并无技术门槛且罔顾版权互抄严重,如非特殊采购机制,此类教育器材硬件贩售实难为公司牟利之主源,发达国家诸多此类教育相关资讯均已CC协议公开,并借由创客运动得到广泛传播。该应用故我摒弃非原创资料价值之疑虑,趁疫情居家期间尽数整理相关资料并通过各类渠道分享。部分资料及硬件采购资讯不易通过网页等方式分享的,或欲进行相关教学合作的同仁,欢迎通过微信ID:zhangchengwust 与我接洽,交流相关资讯。祝专业教学研之路顺遂,取得建树。

这是一个8位计算机模型系统,可用于大专、本科、硕士研究生计算机组成原理课程、计算机系统结构课程的教学实验。对提高学生的动手能力、提高学生对计算机整体和各组成部分的理解、提高学生的计算机系统综合设计能力都会有很大帮助。有一个指导实验的计算机组成原理实验辅助教学软件。

▲ 技术性能及特点

1.      采用单板式结构、计算机模型简单、实用。计算机模型分为数据通路、控制器(包括时序电路)、控制台、用户自定义区四部分,划分清晰。各部分之间采用可插、拔的导线连接,接线采用自锁紧累接方式,接线可靠。

2.      指令系统采用4位操作码,容纳16条指令,已实现了加、减、与、乘、存数、取数、转移、条件转移、停机、开中断和中断返回12条指令,其他4条指令备用。

3.      数据通路采用双端口存储器作为主存,实现了数据总线和指令总线双总线体制,能实现指令流水性能。

4.      运算器采用一片ispLSI1024实现,寄存器堆采用一片ispLSI1016实现,设计新颖。运算器能完成加、减、乘、与、直通五种运算。实现硬件乘法是本机的一大特色;寄存器堆内含4个8位寄存器,实现两个端口读、一个端口写操作。

5.      控制器有微程序控制器和组合逻辑控制器两种类型,每种类型又有流水和非流水两种方案。出厂时提供的是微程序控制器。学生可用自己设计的控制器代替微程序控制器,设计的控制器可以是常规控制器,也可以是流水控制器。

6.      实验台上提供了一片在系统编程器件ispLSI1032,学生在PC机设计好组合逻辑控制器方案后下载到ispLSI1032中,ispLSI1032就构成了新的控制器。控制器的设计并实现对提高计算机综合设计能力会有很大帮助。

7.      时序电路由一个500KHz晶体振荡器和2片GAL22V10组成。一条微程序分为4拍。一条组合逻辑指令由4个周期组成,1个周期由4拍组成。

8.      控制台包含8个数据开关,用于置数功能;16个双位开关,用于置信号电平;28个LED指示灯,用于显示地址、数据、微指令、进位和中断允许。控制台有复位、启动、和中断三个单脉冲发生器,有单拍、单步、单指令三个开关。控制台有5种操作:写存储器,读存储器,读寄存器,写寄存器,启动程序运行。

9.      用户自选器件实验区,供做中、小规模器件实验使用。

10.   逻辑笔一支。

11.   采用模块电源,重量轻,具有抗电源对地短路能力。

12.   接线采用自锁紧累接方式,接线可靠。

13.   计算机组成原理实验辅助教学软件

▲ 实验内容

1.运算器组成实验

2.双端口存储器原理实验

3.数据通路组成实验

4.微程序控制器组成实验

5.CPU组成与机器指令执行实验

6.中断实验

7.常规硬布线控制器的设计和调试

8.流水硬布线控制器的设计和调试

9.流水微程序控制器的设计和调试

▲     配套资料

TEC-4A计算机组成原理实验系统教师用实验指导书

▲ 推荐教材              

《计算机组成原理》(含CAI光盘)                    白中英主编

(本书获2005年国家教育成果二等奖)

《计算机组成原理题解、题库与实验》(含试题库光盘)  白中英、杨春武主编

(本书获2005年国家教育成果二等奖)

《计算机硬件基础课实验教程》                  白中英、杨春武、冯一兵主编

目     录

 

前言LLLLLLLLLLLLLLLLLLLLLLLLLLL2

TEC—4计算机组成原理实验系统LLLLLLLLLLLLLL 3

 

基本实验

运算器组成实验LLLLLLLLLLLLLLLLLLLLLL13

双端口存储器原理实验LLLLLLLLLLLLLLLLLLL18

数据通路组成实验LLLLLLLLLLLLLLLLLLLLL22

微程序控制器组成实验LLLLLLLLLLLLLLLLLLL28

CPU组成和机器指令执行实验LLLLLLLLLLLLLLLL40

中断原理实验LLLLLLLLLLLLLLLLLLLLLLL45

 

课程设计

硬布线控制器的设计与调试LLLLLLLLLLLLLLLLL50

流水微程序控制器的设计与调试LLLLLLLLLLLLLLL61

流水硬布线控制器的设计与调试LLLLLLLLLLLLLLL70

 

 

附录LLLLLLLLLLLLLLLLLLLLLLLLLLL78

 

 

 

 

   

 

计算机组成原理是大学计算机专业的一门专业基础课程。清华同方股份有限公司和北京邮电大学白中英教授合作,开发出TEC—4计算机组成原理实验系统。在这个实验设备上,既能够做计算机组成原理课程的实验,又能够进行计算机系统结构课程的流水实验。该实验设备计算机模型简单、实用,运算器数据通路、控制器、控制台各部分划分清晰,为学生提供了很多的动手条件,有利于提高学生学习的主动性和创造性。

为了更好地使用TEC—4计算机组成原理实验系统,我们编写了这本《教师用实验指导书》。它是TEC—4计算机组成原理实验系统的配套资料。本书提供了9个实验,其中6个基本实验,3个课程设计。对每个实验提供了接线图、实验步骤及实验结果;对3个课程设计提供了参考方案。当然,每个实验的接线方法或者源程序绝不是唯一的,实验结果也会有所不同。本书提供的接线图和源程序只是许多接线方法、源程序中的一种,只能作为参考。这些接线图、源程序和实验结果都经过实际实验验证。本书的目的是希望减少教师设计、准备、调试实验的劳动,让教师把主要精力集中在提高教学质量上。各位老师在使用中如果发现错误和不妥之处,欢迎提出宝贵意见,以便将来改进。

除了本书外,TEC—4计算机组成原理实验系统还有另一本配套资料《计算机组成原理题解、题库和实验》,这是一本科学出版社出版的学生用书。该书由北京邮电大学的白中英教授和我们共同编写,可作为TEC—4计算机组成原理实验系统的使用说明书。两本资料配合使用,效果更好。

敬请读者提出宝贵意见。

 

清华同方股份有限公司

教学仪器设备公司

2001年1月

 

 

 

 

 

 

 

 

 

 

第一节 TEC—4计算机组成原理实验系统

 

   TEC—4计算机组成原理实验系统由北京邮电大学计算机学院、清华同方教学仪器设备公司、深圳拓普威电子技术有限公司联合研制。它是一个8位计算机模型实验系统,可用于大专、本科、硕士研究生计算机组成原理课程、计算机系统结构课程的教学实验,对提高学生的动手能力、提高学生对计算机整体和各组成部分的理解、提高学生的计算机系统综合设计能力都会有很大帮助。

 

一、TEC—4计算机组成原理实验系统特点

  • 计算机模型简单、实用,运算器数据通路、控制器、控制台各部分划分清晰。
  • 计算机模型采用了数据总线和指令总线双总线体制,能够实现流水控制。
  • 控制器有微程序控制器或者硬布线控制器两种类型,每种类型又有流水和非流水两种方案。
  • 寄存器堆由1片ispLSI1016组成,运算器由1片ispLSI1024组成,设计新颖。
  • 实验台上包括了1片在系统编程芯片ispLSI1032,学生可用它实现硬布线控制器。
  • 该系统能做运算器组成、双端口存储器、数据通路、微程序控制器、中断、CPU组成与机器指令执行、流水微程序控制器、硬布线控制器、流水硬布线控制器等多种实验。
  • 电源部分采用模块电源,重量轻,具有抗电源对地短路能力。
  • 采用自锁紧累接接线方式,接线可靠。

 

  • TEC—4计算机组成原理实验系统的组成

TEC—4计算机组成原理实验系统由下述六部分组成:

  • 控制台
  • 数据通路
  • 控制器
  • 用户自选器件试验区
  • 时序电路
  • 电源部分

下面分别对各组成部分予以介绍。

 

  • 电源

电源部分由一个模块电源、一个电源插座、一个电源开关和一个红色指示灯组成。电源模块通过四个螺栓安装在实验台下面。它输出+5V电压,最大负载电流3安培,内置自恢复保险功能,具有抗+5V对地短路能力。电源插座用于接交流220伏市电,插座内装有保险丝。电源开关用于接通或者断开交流220伏市电。当电源模块输出+5V时,点亮+5V红色指示灯。

 

  • 时序发生器

时序发生器产生计算机模型所需的时序。时序电路由一个1MHz晶体振荡器、2片GAL22V10(U6和U7)组成,位于控制存储器的右边。根据本机设计,执行一条微指令需要4个时钟周期T1、T2、T3、T4,执行一条指令通常需要取指、送操作数、运算、写结果四个节拍,因此本机的基本时序如下:

View Fullscreen
View Fullscreen

高频电子线路实验箱LTE-GP-02B

欢迎了解创元素电子实验设备公开计划。回忆起往昔在学校学习电子电路等相关技术基础课的时候,相信很多同学或已经参加工作的朋友们应该都深有同感。除了课堂单纯的讲解,课本里反反复复看不懂的说明,为应付考试而不断刷题乏味,缺乏直观的实验演示(现在应该是草草在实验室走了个过场),最终导致了大家对专业的学习和应用缺乏信息。之所以心里没底气,原因其实很简单,书上讲解的基本电路没搭过没测试过,实验室里的各种仪器也做不了熟练上手的操作。

事实上,实验是学习电子技术的一个重要环节。对巩固和加深课堂教学内容,高学生实际工作技能,培养科学作风,为学习后续课程和从事实践技术工作奠定基础具有重要作用。当今我们的许多一流高校并不缺乏相应的经费,其实验室也有良好的实践条件。然而,提供给好学者的机会是不多的,种种管理制度上的原因,大家能随时随地使用这些硬件条件往往也不具备。很多同学和爱好者就和我们早期一样,在宿舍、在自己的家里自己进行补充学习和自行搭建各种实验条件,这也是催生爱好者们到处在网上交流和寻找各种实践机会和条件。

从各种单片机开发板、趣味电子实验书籍资料等等,虽然其优势和自身的特点,但绝大部分其实与学校里的科班培养计划课程及标准教科书脱节较远,并不太能帮助将来成为专业从业者的学生建立严谨的学科体系知识,进而登堂入室。另一方面,由许多校企及专业供应高校实验室建设的公司生产制造了大量相关的实验设备器材和配套资料,通过专门的业务途径或教育系统关系进入到高校的采购之列,然而这些产品价格高昂且一般人无法通过官网或互联网上等渠道自由获取相关资料学习和实践。

有一些朋友在知道我们通过各种途径收集了大量本科电类专业的课程的实验器材后,希望向我获取相关资料、租用设备,并建议我公开分享相关资讯。由于工作忙碌和器材陈旧等各种原因,我一直并未认真整理分享相关资讯。但近日又有高校师生叩门联络并痛陈其专业教材阅读及欲实践无门之苦,又相关实验器材行业并无技术门槛且罔顾版权互抄严重,如非特殊采购机制,此类教育器材硬件贩售实难为公司牟利之主源,发达国家诸多此类教育相关资讯均已CC协议公开,并借由创客运动得到广泛传播。该应用故我摒弃非原创资料价值之疑虑,趁疫情居家期间尽数整理相关资料并通过各类渠道分享。部分资料及硬件采购资讯不易通过网页等方式分享的,或欲进行相关教学合作的同仁,欢迎通过微信ID:zhangchengwust 与我接洽,交流相关资讯。祝专业教学研之路顺遂,取得建树。

“高频电子线路实验箱 (LTE-GP-02B)”详细介绍

  LTE-GP-02B高频电子线路实验箱
一、产品简介:
高频电子线路实验箱是根据实验教学的
需要和工程应用的实际情况进行设计的,采
用了多种手段和方法,如:分立元件、贴片
元件与集成电路相结合、模拟与数字相结合
、合理使用CPLD可编程器件等形式,使学
生通过该系统的使用和操作,全面掌握高频
电子线路的基本理论、了解实际工作中所需
要的知识点;同时也提高了产品性能和功能。二、产品特点:
1、采用模块化设计,使用者可以根据需要选择模块,既可节约经费又方便今后升级。
2、产品集成了多种高频电路设计及调试所必备的仪器,既可使学生在做实验时观察实验现象、调整电路时更加全面、更加有效,同时又可为学生在进行高频电路设计及调试时提供工具。
3、实验箱各模块有良好的系统性,除单元选频电路模块及波形变换模块外,其余八个模块可组合成五种典型系统:
⑴ 中波调幅发射机(535KHz~1605KHz)。
⑵ 超外差中波调幅收音机(535KHz~1605KHz,中频465KHz)。
⑶ 半双工调频无线对讲机(10MHz~15MHz,中频4。5MHz,信道间隔200KHz)。
⑷ 锁相频率合成器(频率步进40KHz~4MHz可变)。
⑸ AGC控制电路(4。5MHz)
4、实验内容非常丰富,单元实验包含了高频电子线路课程的大部分知识点,并有丰富的有一定复杂性的综合实验。
5、电路板采用全自动贴片及回流工艺制造,高频特性良好,性能稳定可靠。
6、为了保证老师教学及学生实验的方便性,该实验教学系统的仪表区与实验区用不同的颜色区分开来;
7、高频信号源部分有两路并行输出,保证在实验的过程中能同时观察到输出信号的频率;
8、在鉴频实验中,该实验教学系统一共提供了四种鉴频电路实验,包括正交鉴频、锁相鉴频、斜率鉴频和脉冲计数鉴频等,充分体现了该产品的前瞻性;
9、为了高频信号的完整性并避免高频信号之间的串扰,所有的信号连接线均采用同轴线连接;

三、实验项目及内容:
1、LC串、并联谐振回路特性实验 (模块1)
2、常用低通、带通滤波器特性实验 (模块1)
3、小信号调谐(单、双调谐)放大器实验 (模块2)
4、集成选频放大器实验 (模块2)
5、二极管双平衡混频器实验 (模块7)
6、模拟乘法器混频实验 (模块7)
7、三极管变频实验 (模块7)
8、三点式正弦波振荡器(LC、晶体)实验 (模块3)
9、压控振荡器实验 (模块3)
10、非线性丙类功率放大器实验 (模块8)
11、线性宽带功率放大器实验 (模块8)
12、集电极调幅实验 (模块8)
13、模拟乘法器调幅(AM、DSB、SSB)实验 (模块4)
14、包络检波及同步检波实验 (模块4)
15、变容二极管调频实验 (模块3)
16、正交鉴频及锁相鉴频实验 (模块5)
17、斜率鉴频及脉冲计数式鉴频实验 (模块6)
18、波形变换实验 (模块9)
19、模拟锁相环实验 (模块5)
20、自动增益控制(AGC)实验 (模块2)
21、自动频率控制(AFC)实验 (模块3、6、7)
22、中波调幅发射机组装及调试实验 (模块4、8、10)
23、超外差中波调幅收音机组装及调试实验 (模块2、4、7、10)
24、锁相频率合成器组装及调试实验 (模块5、10)
25、半双工调频无线对讲机组装及调试实验 (模块2、3、5、7、8、10)
注:模块1、模块6、模块9为选购板

五、实验所需仪器仪表:
1、LTE-GP-02B 高频电子线路实验箱(内置电源、高低频信号源、高低频频率计和扫频仪)
2、20MHz模拟双踪示波器
3、万用表
4、频谱仪(选用)

六、产品基本参数:
1、工作电压:AC 220V±10%,50Hz±10%
2、外形尺寸L×W×H(mm):460×335×143
3、重量(kg):<5

高频电子线路实验箱简介…. 1

实验一 高频小信号调谐放大器实验… 10

实验二  集成选频放大器… 19

实验三  二极管双平衡混频器… 24

实验四  模拟乘法混频… 30

实验五  三点式正弦波振荡器… 36

实验六  晶体振荡器与压控振荡器… 39

实验七  非线性丙类功率放大器实验… 42

实验八  线性宽带功率放大器… 50

实验九  集电极调幅实验… 55

实验十  模拟乘法器调幅(AM、DSB、SSB)… 59

实验十一  包络检波及同步检波实验… 65

实验十二 变容二极管调频实验… 73

实验十三  正交鉴频及锁相鉴频实验… 80

实验十四  模拟锁相环实验… 87

实验十五  自动增益控制(AGC)… 95

实验十六  超外差中波调幅收音机… 101

实验十七  超外差式FM收音机… 104

实验十八  锁相频率合成器组装及调试… 108

实验十九  半双工调频无线对讲机… 111

实验二十  中波调幅发射机组装及调试… 114

选做实验一 常用低通带通滤波器特性实验… 116

选做实验二  LC串并联谐振回路特性实验… 120

选做实验三  斜率鉴频及脉冲计数式鉴频… 128

选做实验四  波形变换实验… 134

 

 

高频电子线路实验箱简介

  • 产品组成

该产品由2个实验仪器模块和11个实验模块及实验箱体(含电源)组成。

  • 实验仪器及主要指标如下:
  • 频率计(模块6):

频率测量范围:5Hz~2400MHz

输入电平范围:100mVrms~2Vrms

测量误差:≤±20ppm(频率低端≤±1Hz)

输入阻抗:1MΩ/10pF

  • 信号源(模块1):

输出频率范围:400KHz~45MHz(连续可调)

频率稳定度:10E-4

输出波形:正弦波,谐波≤-30dBc

输出幅度:1mVp-p~1Vp-p(连续可调)

输出阻抗:50Ω

  • 低频信号源(模块1):

输出频率范围:200Hz~10KHz(连续可调,方波频率可达250KHz)

频率稳定度:10E-4

输出波形:正弦波、方波、三角波

输出幅度:10mVp-p~5Vp-p(连续可调)

输出阻抗:100Ω

  • 实验模块及电路组成如下:

1)模块2:小信号选频放大模块

包含单调谐放大电路、电容耦合双调谐放大电路、集成选频放大电路、自动增益控制电路(AGC)等四种电路。

  • 模块3:正弦波振荡及VCO模块

包含LC振荡电路、石英晶体振荡电路、压控LC振荡电路、变容二极管调频电路等四种电路。

  • 模块4:AM调制及检波模块

包含模拟乘法器调幅(AM、DSB、SSB)电路、二极管峰值包络检波电路、三极管小信号包络检波电路、模拟乘法器同步检波电路等四种电路。

  • 模块5:FM鉴频模块一

包含正交鉴频(乘积型相位鉴频)电路、锁相鉴频电路、基本锁相环路等三种电路。

  • 模块7:混频及变频模块

包含二极管双平衡混频电路、模拟乘法器混频电路。

  • 模块8:高频功放模块

包含非线性丙类功放电路、线性宽带功放电路、集成线性宽带功放电路、集电极调幅电路等四种电路。

  • 模块9:收音机模块

包含三极管变频、AM收音机、FM收音机。

  • 模块10:综合实验模块

包含话筒及音乐片放大电路、音频功放电路、天线及半双工电路、分频器电路等四种电路。

  • 模块11:斜率鉴频及脉冲计数式鉴频模块

包含斜率鉴频和脉冲计数式鉴频等电路。

  • 模块12:常用滤波器和谐振回路模块

包含常用低通带通滤波器、LC串并联谐振回路等电路。

  • 模块13:波形变换模块

包含限幅、任意波变方波、方波变脉冲波以及方波变三角波、脉冲波变锯齿波等各种电路。

  • 产品主要特点
  • 采用模块化设计,使用者可以根据需要选择模块,既可节约经费又方便今后升级。
  • 产品集成了多种高频电路设计及调试所必备的仪器,既可使学生在做实验时观察实验现象、调整电路时更加全面、更加有效,同时又可为学生在进行高频电路设计及调试时提供工具。
  • 实验箱各模块有良好的系统性,八个模块可组合成五种典型系统:

⑴ 中波调幅发射机(525KHz~1605KHz)。

⑵ 超外差中波调幅接收机(525KHz~1605KHz,中频465KHz)。

⑶ 半双工调频无线对讲机(10MHz~15MHz,中频4.5MHz,信道间隔200KHz)。

⑷ 锁相频率合成器(频率步进40KHz~4MHz可变)。

⑸  超外差FM收音机(88MHz~108MHz,中频10.7MHz)。

  • 实验内容非常丰富,单元实验包含了高频电子线路课程的大部分知识点,并有丰富的、有一定复杂性的综合实验。
  • 电路板采用贴片工艺制造,高频特性良好,性能稳定可靠。

 

  • 实验内容
  • 小信号调谐(单、双调谐)放大器实验 (模块2)
  • 集成选频放大器实验 (模块2)
  • 二极管双平衡混频器实验 (模块7)
  • 模拟乘法器混频实验 (模块7)
  • 三点式正弦波振荡器(LC、晶体)实验 (模块3)
  • 晶体振荡器与压控振荡器实验 (模块3)
  • 非线性丙类功率放大器实验 (模块8)
  • 线性宽带功率放大器实验 (模块8)
  • 集电极调幅实验 (模块8)
  • 模拟乘法器调幅(AM、DSB、SSB)实验 (模块4)
  • 包络检波及同步检波实验 (模块4)
  • 变容二极管调频实验 (模块3)
  • 正交鉴频及锁相鉴频实验 (模块5)
  • 模拟锁相环实验 (模块5)
  • 自动增益控制(AGC)实验 (模块2)
  • 中波调幅发射机组装及调试实验 (模块4、8、10)
  • 超外差中波调幅接收机组装及调试实验 (模块2、4、9、10)
  • 锁相频率合成器组装及调试实验 (模块5、10)
  • 半双工调频无线对讲机组装及调试实验(模块2、3、5、7、8、10)
  • 超外差式FM收音机实验(模块2、5、9、10)
  • 常用低通带通滤波器特性实验(模块12)
  • LC串并联谐振回路特性实验(模块12)
  • 斜率鉴频及脉冲计数式鉴频(模块11)
  • 波形变换实验(模块13)

 

  • 需另配设备
  • 实验桌
  • 20M双踪示波器(数字或模拟)
  • 万用表(数字或模拟)

ZH5004信号与系统实验箱

欢迎了解创元素电子实验设备公开计划。回忆起往昔在学校学习电子电路等相关技术基础课的时候,相信很多同学或已经参加工作的朋友们应该都深有同感。除了课堂单纯的讲解,课本里反反复复看不懂的说明,为应付考试而不断刷题乏味,缺乏直观的实验演示(现在应该是草草在实验室走了个过场),最终导致了大家对专业的学习和应用缺乏信息。之所以心里没底气,原因其实很简单,书上讲解的基本电路没搭过没测试过,实验室里的各种仪器也做不了熟练上手的操作。

事实上,实验是学习电子技术的一个重要环节。对巩固和加深课堂教学内容,高学生实际工作技能,培养科学作风,为学习后续课程和从事实践技术工作奠定基础具有重要作用。当今我们的许多一流高校并不缺乏相应的经费,其实验室也有良好的实践条件。然而,提供给好学者的机会是不多的,种种管理制度上的原因,大家能随时随地使用这些硬件条件往往也不具备。很多同学和爱好者就和我们早期一样,在宿舍、在自己的家里自己进行补充学习和自行搭建各种实验条件,这也是催生爱好者们到处在网上交流和寻找各种实践机会和条件。

从各种单片机开发板、趣味电子实验书籍资料等等,虽然其优势和自身的特点,但绝大部分其实与学校里的科班培养计划课程及标准教科书脱节较远,并不太能帮助将来成为专业从业者的学生建立严谨的学科体系知识,进而登堂入室。另一方面,由许多校企及专业供应高校实验室建设的公司生产制造了大量相关的实验设备器材和配套资料,通过专门的业务途径或教育系统关系进入到高校的采购之列,然而这些产品价格高昂且一般人无法通过官网或互联网上等渠道自由获取相关资料学习和实践。

有一些朋友在知道我们通过各种途径收集了大量本科电类专业的课程的实验器材后,希望向我获取相关资料、租用设备,并建议我公开分享相关资讯。由于工作忙碌和器材陈旧等各种原因,我一直并未认真整理分享相关资讯。但近日又有高校师生叩门联络并痛陈其专业教材阅读及欲实践无门之苦,又相关实验器材行业并无技术门槛且罔顾版权互抄严重,如非特殊采购机制,此类教育器材硬件贩售实难为公司牟利之主源,发达国家诸多此类教育相关资讯均已CC协议公开,并借由创客运动得到广泛传播。该应用故我摒弃非原创资料价值之疑虑,趁疫情居家期间尽数整理相关资料并通过各类渠道分享。部分资料及硬件采购资讯不易通过网页等方式分享的,或欲进行相关教学合作的同仁,欢迎通过微信ID:zhangchengwust 与我接洽,交流相关资讯。祝专业教学研之路顺遂,取得建树。

前 言… – 1 –

第一部分 硬件实验… – 3 –

实验系统概述… – 3 –

实验一    常用信号的分类与观察… – 9 –

实验二    信号的基本运算单元… – 14 –

实验三    信号的合成… – 18 –

实验四    线性时不变系统… – 21 –

实验五    零输入响应与零状态响应分析… – 23 –

实验六    二阶串联、并联谐振系统… – 25 –

实验七    AM调制与解调… – 28 –

实验八    FDM频分复用实验… – 31 –

实验九    信号的抽样与恢复(PAM)… – 34 –

实验十    模拟滤波器实验… – 37 –

实验十一    一阶网络特性测量… – 44 –

实验十二    二阶网络特性测量… – 47 –

实验十三    反馈系统与系统频响特性… – 50 –

实验十四       RC振荡器特性测量… – 53 –

实验十五    二阶网络状态变量的测量… – 56 –

实验十六    微分方程求解的电路仿真… – 59 –

第二部分 MATLAB软件仿真实验… – 62 –

Matlab介绍… – 62 –

实验一  连续时间信号在MATLAB中的表示… – 72 –

实验二 连续时间信号在MATLAB中的运算… – 78 –

实验三 连续时间LTI系统的时域分析… – 85 –

实验四 连续时间信号的频谱特性分析… – 89 –

实验五 连续时间LTI系统的频域分析… – 93 –

实验六 抽样定理的MATLAB仿真实验… – 98 –

实验七 连续时间系统的复频域分析… – 105 –

实验八 离散时间信号及LTI系统的Z域分析… – 114 –

附录:二次开发模块的使用说明… – 123 –

 

前 言

   本书是在《信号与系统实验指导书》第一版的基础上,增加了MATLAB软件仿真实验环节。该实验指导书内容包含了两大部分。第一部分为硬件实验部分,共有16个验证性实验;第二部分为MATLAB软件仿真实验部分,在该部分里,介绍了MATLAB软件的编程环境、编程基础及常用函数,共有8个连续信号时域分析的仿真实验。这8个实验的设计主要是针对《信号与系统》教学大纲设计的,囊括了教学大纲上的主要知识点。

 

第一部分 硬件实验

实验系统概述

1.1电路组成概述

在信号与系统实验箱中,主要由以下功能模块组成:

  • 基本运算单元;
  • 信号的合成;
  • 线性时不变系统;
  • 零输入响应与零状态响应;
  • 二阶串联谐振、二阶并联谐振;
  • 有源与无源滤波器;
  • PAM传输系统
  • FDM传输系统;
  • PAM抽样定理;
  • 二阶网络状态矢量;
  • RC振荡器
  • 一阶网络
  • 二阶网络;
  • 反馈系统应用
  • 二次开发
  • 信号产生模块

在该硬件平台中模块化功能很强,其电路布局见图1.1.1所示。对于每一个模块,在PCB板上均有电路图与之对应。每个测试模块都能单独开设实验,便于教学与学习。

在“信号与系统”实验箱中,电源插座与电源开关在机箱的后面,电源模块在实验平台电路板的下面,它主要完成交流~220V到+5V、+12V、-12V的直流变换,给整个硬件平台供电。另外在实验箱的内部还专门设计了信号产生与测试电路,以配合信号与系统实验箱的使用。对于信号产生模块各种信号的选择,学生可以通过键盘选择相应的信号用于实验测试。

View Fullscreen