毕业设计结束了一年多,为什么今天还带着怨气又重新提起这个话题呢。
当然是因为头顶上的语气严肃的告知,是告知不是询问,一定要我辅导沙阿小哥完成毕业设计,这涉及到两国邦交、国际友谊...关键点在这里:他(沙阿小哥)最后要是做不出来的,得我来做...不服气能行?
经询问,沙阿小哥连最基础的技术文献都读不懂并没学过,专业并上公共课(都是挂掉的)16门没考完,表示各种忙,表示看不懂我给他的中文资料。把他所有的对白总结起来就一句话:我啥都不会,你看着办。
...呵呵呵呵...看来就算纯粹浪费有限的人生与存活的意义,也得把时间如同海绵宝宝脑子里面的水一样挤出来为他人做贡献。
做的毕业设计很简单,AVR atmega16单片机+光敏传感器+温度传感器DS18B20。感兴趣的朋友可以按照下列步骤很简单复现。(文章结尾奉上全套资料的网盘地址)
具体内容: 连接电路,设计制作PCB板,烧制.hex文件下载到单片机,焊接元件。
步骤:
-
购买元器件,淘宝京东实体电子市场都可以。
-
在面包板上搭建电路验证单片机最小系统能否工作正常(我们跳过Protues仿真,毕竟功能单一,系统简单,不需要额外浪费时间)。设计单片机的各个模块。
-
在CVAVR软件上编写atmega16单片机对应的代码,编译链接生成.hex文件,下载到单片机里面,测试传感器能否工作。
-
在altium designer软件上绘制单片机系统原理图,导入原理图绘制PCB电路板。
-
把绘制好的PCB板发给淘宝上专门打印PCB板的商家并付钱。
-
取快递,把各个元器件焊接到PCB板上。
正文:
第一章: 元件
全是槽点,本科的时候在工作室,一堆元器件摆在我面前,我没有去珍惜,等到读研究生了要掏钱买,才后悔莫及。幸而我还保留了当时元器件的购买清单,附上如下表所示:
名称 | 数量 | 描述 |
AVR单片机 | 1 | atmega16 |
ISP-USB下载器 | 1 | |
ISP-USB下载口 | 1 | (这是个10针的插槽,焊接在电路板上供下载器连接PC和单片机) |
晶振 | >=1 | 8M |
瓷片电容 | 22pf(建议买一套,多的少的一点钱而已) | |
电解电容 | nf-mf(同瓷片电容) | |
按键 | 酌情 | |
电阻 | >=16 | 4.7k+10k(同瓷片电容) |
共阳极数码管 | >=1 | 4个装 |
排针 | 4排 | |
LED灯 | 若干,主要是单独几个商家也不卖 | |
温度传感器 | 1 | |
光敏传感器 | 1 | |
面包板 | >=2 | |
导线+杜邦线 | 若干 | 直插、公母头、公公、母母 |
PS:电子元器件一般不做活动,邮费自理,(包邮的都是在元件上补差价了),如果自己购买,一定多挑几家店铺。
除了以上元器件 ,在焊接的时候还需要电烙铁,焊锡之类。
第二章:最小系统
就其属性而言,最小系统是保证单片机能用正常运行的基础。正如麦之于馍,馍之于泡馍,泡馍之于羊肉泡馍是也。
简单来说,最小系统就需要三个电路连接:
-
VCC和GND
-
ISP下载端口
-
时钟(可忽略由内部RC振荡器供应)
在这里需要注意的是,直插式ATMEGA16芯片上40个引脚中,有两个GND引脚,要连在一起。
图1 直插式ATMEGA16芯片引脚图
ISP下载电路可以连接PC端的调试软件和单片机芯片,进而把编译好的机器代码下载到芯片中运行,或者对单片机的端口进行数据传输调试。
要想实现这个功能,则需要做以下几件事情:
-
针对单片机
先连接ISP电路,和时钟电路。在测试阶段,没有设计PCB且ISP接口在面包板上不方便安装,需要直接把单片机上用到的ISP端口电路连接到图3所示的ISP口上,使用公母头杜邦线。
图2 ISP电路连接图
图3 USB-ISP实物
图4 时钟发生电路图
值得说明一下的是,图4中晶振和瓷片电容的公共端所连线的端口标注了引脚名,与图1中芯片所示的引脚相连接。
-
2. 针对PC机
首先需要一个PROGISP软件,用来沟通PC机和芯片。软件界面如图5:
图5 PROGISP软件界面截图
将图3所示的USB口插在电脑上,需要安装下载线的驱动usbasp。但是对于win10系统会有一个问题。即驱动程序强制签名会组织该驱动的安装。所以需要以下步骤:
win->左栏中的设置->更新和安全->恢复-> 高级启动 ->立即重新启动->疑难杂症->高级选项->启动设置->重启->7(禁用驱动程序强制签名)
第四层状态,你在哪里。这一层同样建立在第三层基础之上。掌握了以上三层,只要基本不涉及复杂算法的程序,可以组织小规模的程序的编写了。在这个时候,如何有效区分系统中的状态,利用状态来进行迁移,变得尤为重要。有人说通用结构好。反而我认为,针对特定应用来规划更优秀。对于单片机程序而言,几乎没有能够一摸一样的项目。而对于可移植性而言,能够做到函数级别的复用,已经非常难能可贵了。
通过以上步骤设置过后重新打开的win10系统,即可以安装没有签名的驱动(可能不同的win10系统界面不一样,但是都在恢复这个选项里)。
图6 部分步骤示意
-
PROGISP软件设置
首先在select Chip 选项,选择ATmega16。其后打开“...”,对熔丝位进行设置,只用把图7中的高位值设为D9就行。
图7 熔丝位设置
其后在文件栏目选择调入Flash,选择你经过CVAVR(或者AVRstudio)之类的EDA工具生成的 .hex文件。擦除->自动。若消息框中提示写入成功,则代码已成功加载到单片机内存。
第三章:给单片机加外设
这里我们使用了几个简单的外设,LED灯、按键、光敏传感器、温度传感器DS18B20、数码管,这些外设都很使用,其具体功能容易理解。将这些外设按照电路图连接到单片机上即可。具体原理在这里就不介绍了,感兴趣的同学请转身问度娘。
图8 电路原理图
加上外设后再次烧录代码进单片机进行测试,如果功能都能实现,则进行PCB板的制作。
第四章:制作PCB板
使用软件: Altium Designer 9
步骤:
-
创建工程、创建schametic文件和PCB文件。
-
添加元件、Vcc、GND,给元件添加封装,给元件引脚命名,连接元件之间的电路。(元件的封装有特定的封装库和封装模型,当然可也以使用系统自带的封装,对于我们所制作的PCB板,要求并不严格)
-
检查设计规则。
-
导入到PCB。
-
设置PCB线宽,移动PCB进行布局,其后布线。
-
交付完成的PCB板给淘宝商家,或者有条件的自己在覆铜板上打印出来进行后续处理。
图9 完成PCB布线布局
图10 制作好的PCB板
上图使用的是双层布线,为了节约时间,布线很随意。在PCB板上焊接元器件,即完成本设计。
图11 焊接好的开发板
小结
本文讲了小制作的过程。能实现的功能主要两个:
-
测量环境温度并显示
-
光敏电阻周围光照强度下降到一定的阈值会点亮LED灯
这篇文章中单片机的功能很简单,重要在于涉及到了硬件设计的一整套流程,并且在我制作的过程中遇到的问题也在上文反映出来。在本文中没有介绍程序如何编写,没有介绍CVAVR、Altium Designer 软件具体如何操作。
在网盘给出的文件中有Altium Designer 9的简单使用视频,给吃了CVAVR版本的编程文件和.hex文件,给出了设计好的PCB文件,这些文件对于想要学习这个软件的朋友会有帮助。
对于那些想立刻上手使用的同学,可以直接购买元件,交付淘宝商家打印PCB板,焊接,通过PROGISP将制作好的.hex烧录进单片机,即可使用。
或者后台回复190627获取网盘
下节展望:
(我这个人就是太懒了,开公众号到现在快一年了才发了两篇文章——包括这篇,所以我专门为自己设了这个版块,把下一篇文章要写的东西提前说出来,督促自己更文)
使用Quartus II和Modelsim仿真一个 RISC CPU的工作过程。
转自公众号:水银系与黑
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。