三、单片机制作举例

三、单片机制作举例
“跟随文中的制作部分可以制作出以单片机为核心的实用小作品”,是否还记得这一充满诱惑的承诺,下面的文字中我将如数兑现。本来我所制作过的东西并不多,还要从中找到一些最能吸引眼球的真是不容易。我要尽量找到简单易制的东西,要让大家轻松找到单片机制作的成功感觉;制作的东西要有实用性,不能把辛辛苦苦忙了几天的制作成果丢在角落里盖满了灰尘;除此之外它还要是精致的、出类拔萃的,每个制作都要有自己独特之处,从制作中可以了解许多原理、获得更多经历。最后精心挑选了下面的几个小制作,附上它们详细制作介绍和成品的使用说明,你会发现它们是与众不同的,而且都可以做到商品级别。心灵手巧的你可以多制作几个送给好朋友或是心怡已久的女生。各制作的内容都是相互独立的,可以选择自己喜欢的来制作。所有制作项目可以点击这里下载,程序中的关键语句都有详细的注释,参考这些系统而完整的程序来学习单片机编程要比看一大堆流水彩灯的小程序更有意义。

  以下的所有制作都没有电源部分电路图,幸好它们都是 5V电源供电,可以用一套成熟的电源设计放之四海而皆准。我提供你参考的电源设计,见《十八般兵器》图 4,据说这是经典的电源电路,至少电路图看起来很漂亮,不是吗?

3208 LED点阵电子钟

  这是我最成功的作品之一,到目前我已经把版本升级到了 3.0,技术上已经较成熟,而且我设计的强大功能也让它非常实用。我制作的第一台电子钟样品现在就安静地躺在书桌上。高度的认真和耐心需要在这个制作过程中坚持到底,这是相当必要的,整个电路的复杂并不算可怕,反而是对单片机电路制作的陌生容易产生畏惧。别怕,至少还有我,我总会陪在你身边,把需要注意的地方、难理解的内容说清楚,实在不行的话你还可以在网上找到我,帮你在线解决问题,如果那时我还活着。

3208LED点阵电子钟
图 1

作品介绍

  制作之前先介绍一下这个电子钟的实用功能,看看这个小家伙是不是你的生活所需。我尽量用电子商品促销广告的形式介绍这个电子钟,令其老少咸宜、妇孺皆知。在网上,这款电子钟已经成为单片机爱好者喜爱的制作对象,借助《无线电》杂志您将率先领略它的魅力,心动不如快行动,赶快打起精神制作吧!

功能特点

  • 采用独特的 8行 32列 LED点阵显示屏作为显示单元,其显示亮度高、自发光、无视角,制作者可以随意选择屏幕大小和发光颜色,其优势在众多时钟显示屏中脱颖而出。
  • 日期、时间、星期、温度全信息交替显示,所需信息一目了然。
  • 采用专业时钟芯片 DS1302和备用电池,时钟掉电依然走时,用户设置闹钟时间永久保存。
  • 远离机身的温度传感器设计,0~60℃环境温度显示更精确。
  • 全功能菜单操作,4个按键操作,可加减调时,操作方便。
  • 8路独立闹钟功能,可以设置独立闹钟时间和模式,大闹生活每一天。
  • 多种整点报时时间范围设置,保证休息时间不打扰。
  • 多种操作提示音,高音量闹钟音,耳目一新。
  • 设计有全屏 LED点阵测试功能,制作和使用时轻松检查 LED坏点。
  • 首次通电时可自动初始化时钟芯片。

采购时间

  又要拉清单了,有一些“视情况而定”的元器件就是看你喜欢什么款式或是看能买到什么样的款式。表 1所示是 3208LED电子钟元器件清单,将这个表单打印出来直接展示给卖元器件的老板看,一根烟的功夫交上钱提着东西就回家了。

表 1 
表1

  你知道现在我要说什么吗?用后脑勺想都能知道我又要唠叨几句了。干我们这行的不仅硬件、软件都要会,还要有动手能力,在制作 3208LED电子钟的过程中可以给自己的动手能力打分。

  表 1的第一项是 LED点阵屏,我可不是随便就把它放到前面的,整个制作最重要的器件就是它。假如你到了电子市场,首先就是找一款 LED点阵屏,它要是 8行 8列单色点阵屏,柜台玻璃下面摆满不同大小和风格的,你要考虑后继电路板的大小还有你想设计的样子。选 4块同样的点阵屏横着摆成一列,这就是它未来的样子,每块单价在 5元~8元左右,卖屏的老板会说这是最低价了,其实还可以砍砍。买到手里的 LED点阵屏要注意它的引脚,一般它并不会如你我想象的那样按顺序排列好,而是需要用万用表测量的,把表打到测试二极管的挡位(一般用欧姆挡也可以),随机地找两个引脚测试,看着前面的 LED有没有点亮的,没有则改其他引脚再试,有则将引脚位置、点亮的 LED的行列位置和极性记录下来。最后我们将得到一份完整的 LED点阵列数据表,这是非常重要的数据,不可以有一点差错。图2所示是 8×8LED点阵屏内部结构,16条引脚我已经标示出来,实际引脚位置并不是这个简单的顺序,万用表总结出来的数据表就是帮你整理引脚位置用的。

图 2 LED点阵屏结构
图 2 LED点阵屏结构

  本电子钟是具有温度显示功能的,这就需要有一种温度传感器芯片来实现。而现在温度传感器的种类众多,在应用于高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20温度传感器当仁不让。超小的体积、超低的硬件开消、抗干扰能力强、精度高、附加功能强,使得 DS18B20更受欢迎。对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。DS18B20温度传感器外观和普通三极管没有什么区别,它是直接将温度值处理成数字信号发送给单片机的,所以精度高、价格也高,一支 10元左右。最好把它单独包装,要是不小心当三极管来用,那你就赔大了。在制作电路的时候要将 DS18B20用导线延展出来,不然电路板发热会让温度显示失准。

  头一次用的东西不少,DS1302时钟芯片算是一个,下面的文章里还会用到,它是 8个脚的芯片,好像动漫版蜘蛛造型的装饰物。DS1302还是 DALLAS公司推出的涓流充电时钟芯片产品,它内含有一个实时时钟和 31 字节静态 RAM,通过简单的串行接口与单片机进行通信,实时时钟电路可提供秒、分、时、日、星期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个接口线。DS1302 工作时功耗很低,保持数据和时钟信息时功率小于 1mW。它可以应用于电话、传真、便携式仪器、电池供电的仪器仪表以及 3208LED电子钟当中。如果想让制作好的时钟掉电后也依然走时就应该买一个备用电池,可以选择 3.6V可充电的镍氢电源,它可以在电子钟通电时为电池涓流充电,而普通非充电电池也可以使用,只是一年半载后它会变成废铁。DS1302价格在 6元左右,多买几个再让老板白送配套的晶振。

  74HC154是一种 4线转 16线的译码器,简单说来就是一个接口扩展芯片,如果单片机有一百多个 I/O口也就用不到它了。单片机使用 4条数据线和译码器连接,并向译码器发送 BCD码,共有 16种码值,每个值对应一个输出接口的电平状态,相当于让单片机又多了一排 I/O口。这么好的芯片仅售 4元左右,应该不算贵哦。^_^

[page]


 元器件说完了,再说说原理图。现在要有耐心听我把话说完,原理图也是重要的一环,要是不小心弄错了再修改是很麻烦的。图 3是 3208LED电子钟的电路原理图,大家知道吗,我用了几个小时才把它画好的,兼顾直观与美观,如果喜欢的话就表扬我几句。电路中包括单片机最小系统部分、LED点阵屏驱动部分、列数据扩展部分、时钟电路部分、温度传感器电路部分、扬声器部分、按键部分,另外建议留出 ISP下载线接口,方便程序下载和以后的学习,反正我们已经有了 ISP下载线了,加个排针不就行了。我是选择较小一点的电路板,用多层叠加在一起制作的,这样制作可以节省空间,将飞线藏在夹层里面,如图 4所示。制作中 LED点阵屏的引脚测量是重要的,前面已经说过,还有就是要注意 P2接口的连接,如图 3所示的样子,不要接反。将这些元器件焊接起来是非常不容易的,既要认真又要耐心,没焊几条线你就会感觉到这和洗碗一样,是无聊重复的工作。别打算花一百块钱雇个人帮你焊,那样你什么也学不到,成功就在眼前了,加油!

图3 3208LED电子钟的电路原理图(点击放大)
图 3

4.背侧图
图 4背侧面

工作原理

  单片机制作的东西是不容易从原理说明的,一般都是分析程序的流程,在其它单片机制作的文章里可见一斑。事先说好了这里不谈编程,我就说一点 LED点阵屏驱动的原理吧,看看这 256个 LED是怎么按照我们的意愿点亮的。

  图 2所示是 LED点阵屏的内部是阵列的连接方式,单片机的 P0和 P2接口分别连接 4块 LED点阵屏的行接口,而 16个列接口由 74HC154控制逐一选通。现在电路被简化了许多,假设 P0和 P2接口所有数据线都变成高电平,则相应的行接口通过 VT1~VT16就被拉到高电平了,这时如果所有列都被拉到低电平则会一片光明,所有的 LED都会被点亮,虽然这并不是我们想要的效果,但控制 LED显示的味道慢慢变浓了。如果我们只想让第一列的 LED点亮,我们只要拉低第一列的电平就行了,其他列都是高电平自然是没有电流的。想让第 5列点亮就拉低第 5列,这个选择由单片机向 74HC154发出的 BCD码决定。好,如果现在我想同时只点亮第 1列和第 5列应该怎么办呢?因为可怜的 74HC154只能根据单片机的指令同一时间选通一列。如果不了解人类的生理特点,爱迪生来了也不能解决这个问题。我们可以从电视显示原理中得到真经,流畅的电视的图像是利用逐点扫描技术和人眼的视觉暂留特点而实现,图像以至少每秒 25次的频率出现时我们就被忽悠了,当我们快速地在第 1列和第 5列之间交替点亮 LED时就会让我们感觉它们是同时被点亮了。幸好单片机可以达到这样的速度,不然再高级的 LED显示屏也只是一块流水灯。基于这个原理,我们就可以同时点亮更多行甚至全屏,但这还不是我们想要的效果。不急,谜底就要浮出屏幕了。我们先让单片机帮我们从第 1列到最后 1列交替显示,让整个屏幕都亮起来,之后我们再偷偷地做点小动作。我们在交替显示到第 1列的时候在 P0和 P2接口上动手脚,让 P0.0接口为高电平,其它都为低电平,这时只有第 1行第 1列的一个 LED点亮了。当交替显示到第 2列时让 P0.1接口为高电平,其他都为低电平,这时只有第 2行第 2列的一个 LED点亮了。以此类推就显示出了一条斜线,则在交替选通某一列时就在行中送入这一列要显示的对应数据,这就是谜底:逐列扫描。可以在纸上画一个32列 8行的点阵列,之后再重看一遍上前的叙述,聪明的你豁然开朗。关于单片机如何读取温度和时间数据,这要等你学会编程之后再说,或是不用说就已经明白了。

  系统的工作流程是复杂的,复杂到我不能记得全部的细节,这里我只能简单介绍一下。系统通电后会先显示开机标志 “DoYoung”,这证明这个钟是我设计的,别人都这样设计,我也跟着凑个热闹。开机标志显示 1秒后单片机会读取时钟芯片数据并检查时间数据有没有丢失,如果芯片是第一次使用或时间数据已经丢失则单片机会对时钟进行初始化,即将时间设置为 2007年 1月 1日 0时 0分 0秒并开始走时,这是很重要的环节,不进行初始化的时钟芯片可能走时不准甚至不能走时。接下来进入时间显示程序,这是个无限循环的部分,单片机会不断地从时钟芯片、温度传感器中读出动态数据送入 LED显示屏显示。前面提到 DS1302中有一个 31字节的 RAM空间,这是供用户使用的空间,我们的 8路独立闹钟数据和整点报时数据都存放在这里。当单片机读取时钟芯片时是将时间数据和 31字节 RAM的数据一块读出来的,然后将现在的时间和闹钟方式设置为开启状态的闹钟时间进行对比,如果时间相同则说明闹钟时间到,LED显示屏闪烁显示闹钟时间,扬声器开始大喊大叫 1分钟。在这一分钟里单片机也会一直判断是否有按键被按下,如果有则关掉扬声器返回时间显示状态。不只是闹钟到时才判断按键的,在平常的时间显示时单片机也会不断判断是否有键被按下,因为它通过这个知道人们要中断时间显示而进入菜单操作。要在操作时想到你虽然是在和单片机打交道,也需要耐心而温和地操作。

使用说明

  当一切制作完成后下面的使用说明才有实效。这个电子钟的操作是简单而快捷的,也许你会为它的设计和操作而着迷。当然也可能会有令你不如意的地方,当你慢慢学会修改程序的时候就可以改到满意为止,甚至从头写一个比我这个还好的程序,我只算是引领入门或叫抛砖引玉。

  图 3所示的按键定义是这样的,SB1:菜单/退出,SB2:确定/下一项,SB3:加 1,SB4:减 1。开机画面为 DoYoung,也可在时间显示状态按下“加 1”键也可显示,1秒后自动返回。时间显示使用日期、时间、温度切换显示方式,日期和温度停留 1秒,时间停留 2秒。在时间显示状态按下“减 1”键也可显示版本信息,1秒自动返回。在时间显示状态按下“确定/下一项”键即可点亮全屏 LED, 1秒后自动返回时间显示状态。这一功能可以方便硬件电路后或使用中测试 LED坏点。在时间显示状态按下“菜单/退出”键也可进入功能主菜单或从任何菜单中退出到时间显示,按“加 1”或“减 1”键选择功能项,功能项目循环选择,它们是:

  • ALARM1~ALARM8 (从 1到 8的 8路独立闹钟设置)
  • TIME (实时时钟设置)
  • POINT (整点报时设置)
  • ON&OFF (闹钟总开/关设置)

  以上是主菜单的功能项,下面是各菜单中的二级菜单内容,按下“确定/下一项”键进入相应功能的二级菜单。在 ALARM1~ ALARM8选项中按“确定/下一项”键进入,第一项是闹钟方式设置,由数字 0~6表示:0:此闹钟独立关闭,1:此闹钟鸣响一次后自动关闭,2:此闹钟常响,3:此闹钟周一至五鸣响周六、日除外,4:此闹钟周一至六鸣响,5:此闹钟周六、为置设方式钟闹。整调键”1减“或”1加,“钟分和时小钟置闹键设”项下一/确定“按再。鸣响日周钟闹此:6,鸣响日 0时(独立关闭此闹钟)其闹钟时间数据不丢失。闹钟鸣响时间为 1分钟,在此期间按任意键可停止鸣响。

  整调键”1减“或”1加。“置设项逐分、时、周、日、月、年按,置设时间入进键”项下一/确定“按中选项TIME在它们,按“确定/下一项”键进入下一项设置,按下“菜单/退出”键退回时间显示状态。时间设置里没有秒的操作,但当 分数据更新时秒值自动变为 00秒。注意:设置值前面的“T:”表示时间设置,如果是“ A:”表示设置闹钟,“P:”设置整点报时。

  在 POINT选项中按“确定/下一项”键进入整点报时设置,当设置从 7时到 23时启动整点报时功能时不包括 7时和 23时,即从 8时到 22时。按“确定/下一项”键选择其它时段,按“菜单/退出”完成设置退回时间显示状态。

  在 ON&OFF选项中按“确定/下一项”键进入闹钟总开关设置,进入时的显示为当前设置状态,按“确定/下一项”键选择总开关状态,开关为关时 8个闹钟都不响应,但设置数据不丢失。

  好玩吧?会玩的吧?它的魅力不只停留在三分钟的新鲜感,日后的实用性更能让你受益非浅。希望你在玩够了之后回过头来研究一下源程序,看看它是怎么实现这些有趣功能的,单片机是一个非常有趣的东西,我相信你和我一样,满脸笑容、深信不疑。

练武场

  有许多朋友制作了我的这款电子钟,可是他们对如此费尽心思的设计依然不满。他们希望 LED显示屏上的字可以从右至左流动显示,感觉这样会好看一些。我也是同大家一样的审美观,不过我在设计它的时候兼顾了实用和美观,偏向任何一边都是会得罪人的。其实流动显示的实现并不困难,我也实验过,只是流动得太快会看不清显示,如果放慢的话一次时间的完整显示会让你等得不耐烦。不过并不绝对是这样的,也许你有更好的方法可以实现,现在机会在这里,聪明的你可以尝试研究一下。


[page]


12864LCD电子钟

  这个作品我投入了许多创意,在用洞洞电路板设计的时候我就考虑好了它的样子,摆在桌上很好看,我的一个朋友很喜欢这个电子钟的重要节日提醒功能,后来又夸奖我的才华、对我和我的作品美言赞叹,结果我架不住糖衣炮弹只好把这个电子钟送给了他。现在也许就摆在他家的书桌上或是借花献佛被送给了他心怡的女生。

12864LCD电子钟
图 5实物图

作品介绍

  我要煽风点火了,不然你会没有兴趣玩下去。要是这个制作没有实用性那就啥也说不下去了,我要一条一条列举它的功能,让你慢慢爱上它。先说外表的美:这个制作我创造了几处个性设计,台历式外型可以立在书桌上又可以折叠存放不占地方;调时用的四个按键隐藏到 LCD显示屏后面,在屏幕上显示按键的功能,当按压屏幕四角就触发了按键,类似于触摸屏的样子,这种设计使按键功能可以自由更改,同时也隐藏了难看的按键,这也是我洋洋得意的地方;12864LCD电子钟还具有高精度的温度显示、全部日期时间显示、公历节日提醒、白天整点报时、时钟断电依然走时等功能,绝对是你居家生活、工作学习必备佳品。如果你现在就打算制作,我还将另外在本期《无线电》配刊光盘里赠送这个钟的源程序、使用说明书等全套资料。心动不如快行动哦!

功能特点

  • 年、月、日、小时、分、秒、星期、温度、节日同屏显示,一目了然。
  • 时间设置功能,简单快捷。
  • 整点报时(早 8点至晚 21点)。
  • 128×64LED显示,信息量大、可视度高。
  • 设有备用电池,长久走时。
  • 温度显示,00.0度高精度(00.0~99.9℃)。
  • 隐藏式按键,模拟触摸屏的方位按键操作简单。
  • 国际、国内公历重要节日提醒。
  • 日历台式外型设计,至于桌面美观大方。

采购时间

  现在是拿单买货时间,我喜欢这个环节,因为介绍时提到的诸多功能把这个电子钟搞得复杂又神秘,而细看元器件表才知道没有几样东西,如表 2所示。要担心的只是组装他们的过程。注意 12864LCD显示屏要带汉字库且支持串行通信的,这是非常重要的。市场上有许多不同厂商生产的此系列显示屏,只要主控制芯片相同就可以,它们是 ST7921、ST7920。显示屏的技术资料是很重要的数据,卖显示屏的商家都会将资料和显示屏一并出售的,买屏的时候记得索取。我这里所介绍的 LCD显示屏可能和你卖到的显示屏资料上说的参数及接口方面有所不同,这时要以商家提供的资料为准,分析一下原理找到正确的连接方法。我是用两片万用电路板做成桌面台历的样子,如图 5所示,要是你不喜欢就根据实际情况把它设计成壁挂式或用绳子绑在窗户上。我上文曾说过各制作是相互独立的,好像这话有一点说大了,因为我不得不为了节省时间而略写一些,温度传感器 IC、时钟 IC还有上一个制作已经介绍的很详细的元器件这里我不能再重复了,不然显得我有写文章凑字数的企图。

表 2 
表2


[page]


元件买回来了吗?卖元件的老板和你混个脸儿熟了吧?不用砍价就打折卖给你了吧?我就曾达到这样的效果。按照惯例在制作之前应该先介绍一下电路原理,单片机怎么说原理呢,就是按程序运行的,要是讲程序还不如直接看源代码,这样来说只能从功能接口聊一点了。图 6是 12864LCD电子钟电路图,中间是单片机的最小系统电路,右边是 LCD显示屏,它们之间是用的串行接口,接线不多,制作时会简单一些。

12864LCD电子钟电路原理图
图 6

  除了 LCD显示屏之外还是有一些东西需要提及。对按键的隐藏是我这个设计的一个特点,把 LCD显示屏固定在按键上面其实挺不容易的,坚固程度也不好。如果不想这样设计就把按键对应的摆在 LCD显示屏四边上吧。有两个 LED的电路,蓝色 LED是随着时钟的秒走时而闪烁,红色 LED是调时操作时的指示灯。我感觉挺好看的,如果你嫌太俗可以不接,不会影响系统工作。

  按键应该最后焊接,有许多朋友的船都搁浅在此。焊接按键之前开机运行一下,测试按键在 LCD显示屏上的对应位置,确定无误后再焊接。其实可以不管它,当一切焊好后在程序的接口定义里面修改,在没有弄懂编程之前建议不要这样做。

工作原理

  AT89S52、DS1302、DS18B20,这些熟悉的名字在这个制作中一样存在。不同的是 LED和 LCD的区别。LCD显示屏的内部已经有专用控制器芯片将屏幕上的液晶点驱动起来了,我们只要按它的要求送入指令和数据就可以了,不会像 LED 点阵屏那样对每一个点的显示都要操心。系统通电后还是先显示开机画面,这次屏幕比 3208LED显示屏大得多了,显示的内容也多了。开机标志显示 2秒后直接进入时间显示程序,这次单片机还是会不断地从时钟芯片、温度传感器中读出动态数据送入 LCD显示屏显示。这次单片机轻闲许多,因为没有编写闹钟部分的程序,所以 DS1302中的 RAM空间没有被用到,自然也不用读取闹钟的数据。LCD显示屏上的显示数据在不写入的时候依然存在,这和 LED显示屏是完全不同的,所以分钟数据可以 1分钟刷新一次,而年数据可以 1年刷新一次。这样单片机可以腾出空来干点别的事情。公历节日提醒功能是有趣的家伙,每一天 LCD显示屏的最下边都会跳出许多莫名其妙的节日,这些节日数据是事先存放在单片机内部 8KB的 ROM单元里的,因为节日是固定的,在程序设计时就已经确定了它们,在《无线电》配刊光盘里可以找到12864LCD电子钟的源程序,在源程序里可以找到节日定义的代码。节日的名字和日期都是可以改动的,试试为自己的生日编写一个纪念日。

使用说明

  因为没有闹钟功能,所以操作上简单许多,按键的操作只是调整时间。按键定义是:左上角(SB1)、左下角(SB2)、右上角(SB3)、右下角(SB4)。第一次使用时需要手动初始化时钟芯片,方法是在开机后同时按下 SB2和 SB4两个按键。当红色 LED点亮时再转为同时按下 SB1、SB2和 SB4三个按键,长按 3秒后屏幕将显示:“初始化成功!2007-1-1 00:00.00”。

  在正常时间显示状态按下 SB3键即可进入调时状态,在调时状态里按 SB2和 SB4进行加减调时,按 SB3进入下一项调整,按 SB1则退出调时。在时间显示状态长按 SB1即可显示电子钟的设计时期和版本号,放开 SB1则退回时间显示状态。

  更详细的说明书可以在本期《无线电》的光盘里找到。和 3208LED电子钟比起来,这个制作的功能会显的少了一些,不过没关系,单片机是灵活、自由的天使,只要我们升级程序就可以拥有更好的功能,所以不用太在乎现在有的功能,眼光要放远一些。

练武场

  31个字节的 RAM空间、蜂鸣器、4个调时用按键就存在,而为什么没有设计闹钟功能呢?我想大家应该会把这当成一种遗憾。如果我把事情做的太完美了,就损害了你继往开来的机会。有 3208LED电子钟里是有闹钟功能的,你可以参考它的实现方法来丰富 12864LCD电子钟的功能。如果你真的实现了它看你可以学到什么,至少你看懂了两个电子钟的源程序和工作流程,找到了闹钟部分的相关程序,知道如何将它移植到 12864LCD电子钟上来,还要为新的闹钟程序写一个闹钟调时的操作界面。不用想了,做到这些你就已经不菜了。


[page]


2402LCD电子钟

  今天算是和电子钟较上劲了,一连 3个电子钟是不是感觉有点腻?可是要注意它们所用的模块和功能都是不同的,每款都有自己的独到之处。这一款主要是具有强大的定时功能,而且它还有再开发的空间。不久后我将增加此电子钟的远程家电控制功能,这又会增加它的实用性。也许你还有更好的想法想实现,苦于不懂程序开发,这并没有多大关系。我总认为懂硬件、懂编程没什么了不起,有一点基础的人看一段时间也都可以学会,关键还是要看设计者的思路和创意。这就好像一部小说,语言也只不过是一种表达方式,妙语连珠是很好,可是小说看重的还是内容精彩。我想多花一些时间研究有趣的创意会让单片机爱好者玩的更精彩。2402LCD电子钟外观如图 7所示。

2402LCD电子钟
图 7实物图

功能特点

  • 25路掉电不丢失数据的用户定时功能,定时生活方方面面。
  •  采用首创的忽略定时新概念。可以设置定时某项为忽略值,再配合 25路定时项目使定时内容自由发挥、千变万化。
  • SAA3010红外遥控器输入控制,数字键输入数据,方便快捷。
  • 精准温度显示,全息时间显示,定时器使用量显示。所有数据一目了然。
  • 全程帮助提示和独立的帮助菜单,易学易用。
  • 数字键输入设置内容,不只是用上/下键笨笨的调时了。
  • 人性化软件设计,设计时考虑到许多使用细节。

表 3
表3

采购时间

  表 3所示是这个设计中所用到的元器件。单片机依然选用 AT89S52,只是屏幕变成了 24列 2行的字符型 LCD显示屏。了解过单片机的朋友可能都听说过 1602LCD显示屏,好像这已经成为单片机学习的必备之物。无论是杂志、网络、图书,只要是涉及单片机学习的都有 1602显示屏介绍的部分。因为它是 LCD显示屏模块中较常用而易学习的一款,再加上价格相对便宜,吸引了不少初学者购买。现在随便在网上搜索都可以找到许多卖屏的商家,而却鲜有关于 1602LCD显示屏精致、实用的制作。我这里选择的 2402LCD显示屏是完全兼容 1602LCD显示屏的产品,区别只是多了 8列显示。用 2402LCD显示屏学习单片机也有同功之妙,现在市场上出售的 2402LCD的内部驱动芯片和 1602也都是一种,这是很容易买到的,不用完全对应型号,只要是 2402LCD显示屏都可以实现本制作,现在 2402LCD显示屏的市场价在 30元左右,买屏的时候别忘了索要显示屏的技术资料,这同属于产品的一部分。

  遥控器是采用现在单片机爱好者学习时最常用的 SAA3010型遥控器,除了现在用在本制作中,同时还可以用在红外遥控器解码之类的单片机实验内容中。随便一个卖电视机遥控器的摊位都有卖的,只要型号是 SAA3010就都可以用于本制作。 SAA3010遥控器的外观如图 8所示,市场价在 6元左右。

SAA3010遥控器
图 8 SAA3010遥控器

  型号是 TSOP1738的家伙是一种红外一体接收芯片,它可以接收并放大红外遥控器发出的信号,最后将数据发送给单片机处理。它和 SAA3010遥控器是天作之合,谁也离不开谁,它们也是学习单片机对红外信号处理不可缺少的组合。虽然红外遥控器和红外接收芯片是一对黄金搭档,可是通常它们并不会出现在同一柜台。TSOP1738还得再到主营电子元器件的地方购买,市场价在 3元左右。

  这台电子钟是具有 25路掉电不丢失数据的定时功能,这种掉电不丢失来源于一片 EEPROM芯片:AT24C02,这是一款可以擦写 100万次、保存数据近百年、拥有 256字节的存储芯片。它采用 I2C通信接口,一般的单片机学习教程里也会讲到它,而我在这里就已经实际应用了。参考本制作的电路连接方法和源程序中对 AT24C02的驱动部分,比从书本上理论地研究更容易理解,这也是“实践出真知”的道理。一片 AT24C02的价格在 2元左右。


[page]


制作过程

  图 9所示是 2402LCD电子钟的电路图,你可能会发现这次单片机和 LCD显示屏之间的连接线比上一个制作多一些。没错,这次我们采用的是 LCD显示屏的并行连接,实际上这种连接是最为常见的,我们用两个制作分别介绍了 LCD的两种连接方法,也提供了这两种连接的驱动程序。到这里我说不下去了,我已经黔驴技穷了。制作时要注意的地方前文早就介绍完了,我实在想不到还能注意什么,如果这几个制作独立成文的话我想我可以写得更多,现在只能说点无关紧要的东西拖延时间了。烙铁烧热的时候不能用手摸!这种级别的事情大家还是注意一下好。

2402LCD电子钟电路原理图
图 9

工作原理

  嗯,算一算这个 2402LCD电子钟的功能很强大了,红外遥控器操作,25路独立定时闹钟,而且还是存放在 EEPROM中,但这些功能并不会让单片机系统的工作原理显得很复杂。通电后依然先显示开机画面,5秒之后进入时间显示状态,之前也会检查时钟芯片的数据是不是已经丢失,如果丢失则自动完成初始化程序。在时间显示状态,单片机会不断从 DS1302中读取时间数据、从 DS18B20中读取温度数据、从 AT24C02中读取闹钟数据并将它们一起送入 LCD显示屏显示,和 3208LED电子钟一样,闹钟数据也是不断地与时间数据比对的,如果相同则启动闹钟到时鸣响。每秒钟单片机将重复多次这样的工作。这个制作独特的地方是单片机不去读红外接收芯片的状态,是单片机不在乎用户对红外遥控器的操作吗?不是。其实是有更好玩的东西监视红外接收芯片状态,这就是中断控制器。我好像从来没有提过有这回事,只是它还是默默存在的。中断控制器是存在于单片机内部的,故名思意中断控制器是中断单片机正在运行的工作而让它干一点别的事情。正如你可以在看书,突然电话响了,你就会中断看书而先接电话,当电话挂断后你又回过神来继续看书。单片机的正常工作就是读一堆数据送入 LCD显示屏显示,而中断就是红外一体接收芯片发给单片机的一个低电平信号。单片机接到这个中断信号后就会先处理红外遥控器发来的操作,看看用户想干什么。用户操作完成了还回到时间显示状态读数据送显示。中断的应用是比较广泛的,简单的可以用在像上述的事件中断场合,复杂的可以用在操作系统程序的多任务切换。先了解一下,日后中断的学习足够你享受的。

使用说明

  控制项(Controller00~99)为 00时定时器为长达 30秒的闹钟鸣响,为 01时定时器为单音鸣响,其它控制项(02~ 99)为预留功能,就是留着为以后的开发做准备。定时器的启动是由每个定时器组的“秒”设置项来决定开启或关闭的。当秒项被设置为忽略,则无论其它数据如何此定时项被认为关闭。当秒项被设置成 00到 59时则此定时器项为开启状态。即如果使用某定时器项则该项秒值不能为忽略。

  “!AL*”是定时器总开关,它显示在主菜单上,总有 4种选择:

!AL0:关闭所有定时器(只是关闭,定时器数据不会被删除)。
!AL1:开启闹钟定时器。
!AL2:预留功能,不要选择此项。
!AL3:开启闹钟定时器。

  采用忽略功能的定时器可以有多种样式的组合功能(?表示忽略定时的项):

1-:设置单一次定时闹钟: 2007/05/19 [?] 12:00.00 _00 (只在 2007年 5月 19日 12时闹钟响一次。注意: _00是控制项数据) 
2-:设置每日定时闹钟:?/?/?[?] 12:00.00 _00(在每天的 12时闹钟响一次) 
3-:设置某月定时闹钟:?/05/?[?] 12:00.00 _00(每年 5月份的 12时闹钟响一次) 
4-:设置星期定时闹钟:?/?/?[五] 12:00.00 _00(每周五的 12:00.00闹钟响一次)

  忽略定时功能是不是给了你更多的想象呢!这是实用、有趣、千变万化的,还有更多的定时方式等着你去挖掘,没想到定时也可以这么拽。而关于遥控器键盘功能可以在电子钟工作时按“MUTE”键查看帮助菜单,连续按“MUTE”键查看下一页帮助信息,各按键的功能上面写得很清楚。时间设置什么的功能就不介绍了,因为比较简单,玩一玩就明白了。

练武场

  定时闹钟是 2402电子钟的特长,可是生活中可能用不到这么多的闹钟。用不到的闹钟放着很浪费资源又污染环境。怎么把它们利用起来变废为宝呢?我们发现单片机的 I/O口还有一些没有用到的,如果在这些 I/O口上扩展一些控制电路来用定时功能控制家用电器定时不是很好吗!研究下源程序,不难实现。


[page]

                                                                                                                       洗衣机控制器



  我在《白手起家》里就曾说过,单片机可以帮我们洗衣、做饭。我家的洗衣机是一个便宜的二手货,里面有一个发条和齿轮组成的定时器,刚买来没几天就坏了,我非常高兴,因为我可以制作用单片机控制的洗衣机了。其实是我把它拆坏的,对单片机的热爱已经让我冒犯了洗衣机的原设计者,我找到一些高级洗衣机的洗衣流程,又加上了独一无二的无线遥控器控制功能。三次按键完成洗衣设置,这真是懒汉和想抽出洗衣服时间学习单片机的朋友之最佳选择。

功能特点

  • 用户可设置洗涤强度(柔和、低、中、高)
  • 用户可设置洗涤时间(5/10/15/20分钟)
  • 用户可选择多种洗涤方式
  • 蜂鸣器提示和 LED提示
  • 具有浸泡延时功能
  • 采用无线遥控远距离控制
  • 洗涤暂停和洗涤中止功能采购时间

  终于摆脱了电子钟的制作,心情应该好了起来。在采购洗衣机控制器的元器件时也不会感觉困难了,元器件相比要少了许多,而且还很便宜。表 3所示是洗衣机控制器的元器件清单,拿单选货不会错了,一回生二回熟,这是第五次,应该已经熟烂了。

  图 10是洗衣机控制器的元器件集体照片,有几个头一回遇见的东西我得念叨念叨。继电器对于玩过电子制作的朋友应该不会陌生,这里使用的是 5V工作电源、负载为 250V、7A的断电器两个,它们分别控制涡轮式洗衣机的电机正转和反转,在选择的时候要考虑到你的宝贝洗衣机的实际功率。继电器一定要选择质量好的,不能图便宜,不然用不了几天就坏掉了。一般这种型号的断电器的市场价在 3元左右。

  无线遥控器收、发器的选择也是关键的环节,我这里选用的是具有 2262和 2272芯片编、解码的四路无线遥控模块,其有效距离可达 100米,用户可以设置编码为遥控器加密。使用这种模块的可靠性高、易于和单片机连接,程序设计上也简单易用。这样一套收发组合的市场价在 25元左右。

元件集体照
图 10 元件集体照

表 4 
表4




[page]


制作过程

  这次的制作要有一些危险了,因为继电器部分会涉及到强电。我说的不只是你的危险还有单片机的危险。在制作时不要接电机的部分,可以用万用表先测试好最后再接入电机。单片机要尽量远离继电器,因为继电器工作时的动作会对无线遥控接收模块和单片机电路产生干扰。最好在电路中多加些滤波电容,减少电源部分的干扰。

  无线遥控接收模块是必须要外接一条天线的,用普通的绝缘导线就可以。注意天线不要过长,不然反而降低了接收的质量,一般 10cm~20cm即可。尽量缩短单片机和无线遥控接收模块的连接线长度,这也是为了防止干扰。当遥控器突然不听使唤的时候,你会知道抗干扰是多么重要,我还是希望事先预防、不要遭遇的好。洗衣机控制器的制作成品如图 11所示。

洗衣机控制器实物图
图 11 洗衣机控制器实物图

洗衣机控制器电路原理图
图 12

工作原理

  有空还是先看看我的源程序,配合源程序介绍工作原理会有事半功倍的效果。在通电时蜂鸣器长鸣一声,VD1也被点亮,这表示系统已经准备好接收无线遥控的指令了。单片机一直在读取无线遥控器的状态,当收到无线遥控器的指令后,将得到的数据作为第一项的设置内容,即洗涤强度。蜂鸣器短鸣一声进入等待洗涤时间的设置,这个数据同样来自无线遥控器上的 4个按键。蜂鸣器短鸣两声进入等待洗涤方式的设置,过程都是相同的。因为这款洗衣机控制器没有各状态的指示灯和显示屏,所以采用了分步设置的方法以简化操作。长鸣一声后洗衣机按事先的设置开始洗衣,VD1快速闪烁表示洗衣状态,懒汉们可以躲在一旁看电视,洗衣机控制器会完成初洗、浸泡、洗涤的工作,之后长鸣 6声表示洗衣结束。洗涤期间单片机的 P2.1和 P2.3会不断输出高、低电平来操作两个断电器让电机正、反转,同时还要接收无线遥控器发来的中断信号,以暂停或结束洗涤。当洗涤过程结束,蜂鸣器长鸣 6声,系统又回到了开机时等待无线遥控信号的状态,这方便漂洗或是洗涤其它衣物。

练武场

  现在家电中用到电机的地方不只是洗衣器,同样是用继电器在控制电机,可不可以将洗衣机控制器易居到电风扇里呢?用无线遥控器控制风扇开关、风速、定时等功能。硬件电路完全适合这一场合,只要修改程序就可以实现。面对天书般的代码你头晕了吗?单片机可以帮助你异想天开,不过首先你要学会和它交流的语言。

使用说明

  冷启动或复位后顺序按三次按键,选择强度、时间和方式,在无线遥控器上有 A、B、C、D 共 4个按键,按顺序按下它们即可实现设置。其详细功能设置如下:

  第一次按键是选择洗衣强度,A:柔和;B:低;C:中;D:高。

  第二次按键是选择洗衣时间,A:5分钟;B:10分钟;C:15分钟;D:20分钟。

  第二次按键是选择洗衣方式,A:3分钟初洗-->15分钟浸泡-->洗涤-->结束;B:3分钟初洗-->30分钟浸泡-->洗涤-->结束;C:15分钟浸泡-->洗涤-->结束;D:洗涤-->结束。

  在洗涤过程中也可以暂停或结束洗涤,长按 B 键:暂停洗涤;长按 A 键:继续洗涤(暂停时有效);长按 D 键:结束并复位程序。

  在操作过程中可以用提示音中了解设置的状态,短鸣 1次:强度设置完成;短鸣 2次:时间设置完成;长鸣 1次:冷启动/方式设置完成/开始洗涤;长鸣 6次:洗涤结束。

  在操作和洗涤过程中指示灯可以显示系统当前的工作状态,长亮:冷启动/等待输入/洗涤结束;慢闪(1秒):浸泡;快闪(每 1/4秒):洗涤。

尾声

  我认真地完成着,打磨每一个细节的棱角,希望可以呼应《无线电》扩版的喜讯,带给大家技术类文章全新面貌。有喜有优,请大家给予我鼓励,让我可以继续与大家交流、分享;有过有失,请诸位务必指正批评,令我在大家的帮助下学习、进步。希望本文可以给您带来技术上的收益和快乐的心情。

  未来的日子里你会安静的坐在自己的房间看书、实验,时而苦思冥想,时而欢呼胜利。单片机世界疆土辽阔,有看不完的知识、学不尽的门道。我能做的事情也只是激发你对单片机的兴趣,后面的路还有很长要靠你自己慢慢摸索。《无线电》是不错的导师,集合优秀的制作和思想,伴随着爱好者成长。除此之外还要多看一些书籍,在书店里单片机相关的图书较来较多,无数后起之秀开始关注单片机,选择一本适合你的书显得特别重要。以我的经验而言,在选择时最好不要被书名的绚丽所吸引,关键是要看全书的内容。如果翻开一本书,前面的内容能看懂,后面的内容看不懂,则说明这是适合你的书。同时还要看书中是不是理论结合实验,即不只是讲一堆理论,又不完全倾向于实验。或是问一问老师或是学习单片机的前辈,让他们推荐几本口碑不错的书。除了书本的知识,有条件的朋友可以上网找一些优秀的网站和论坛“泡一泡”,多学习、多看帖子、多参与讨论、多收集网上的优秀资源。深入学习的同时也要广闻各方面知识,要尽量概观全局,用开扩的眼界发现新的价值。最重要的是始终保持谦虚谨慎的状度,在单片机的武林,高手如云。最后祝各位书山顺风路、学海顺风舟。













网站导航

售前咨询:023-58556299

技术咨询:023-58722688

返回顶部