单片机项目设计.docx
《单片机项目设计.docx》由会员分享,可在线阅读,更多相关《单片机项目设计.docx(38页珍藏版)》请在冰豆网上搜索。
![单片机项目设计.docx](https://file1.bdocx.com/fileroot1/2023-2/3/61951a05-1f7f-4fb6-b498-baee32ed745a/61951a05-1f7f-4fb6-b498-baee32ed745a1.gif)
单片机项目设计
单片机项目设计指导
适用专业:
电气自动化技术
应用电子技术
学习情景一:
快速掌握PROTEUS的用法
为了更快掌握PROTEUS设计与仿真操作,我们先从一简单实例入手。
让我们首先来熟悉一下仿真软件的主界面:
图5-1仿真软件的主界面
运行protues的ISIS模块,进入仿真软件的主界面,如图5-1所示,区域①为菜单及工具栏,区域②为元器件预览区,区域③为对象选择器窗口,区域④为编辑窗口,区域⑤为绘图工具栏,区域⑥为元器件调整工具栏,区域⑦为运行工具条。
Proteus是一种集单片机仿真和SPICE分析于一身的仿真软件。
其功能非常强大,不仅能仿真模拟电路、数字电路以及模拟数字混合电路,更重要的是可以仿真51系列、AVR、PIC等常用主流单片机。
Protues提供了丰富的资源:
(1)Proteus拥有的元器件资源:
Proteus可提供30多种元件库,超过8000种模拟、数字元器件。
(2)Proteus可提供的仿真仪表资源:
仿真仪器仪表的数量、类型和质量是衡量仿真实验室是否合格的一个关键因素。
Proteus可提供常用的示波器(本文的实例中示波器被用来观察产生的波形)、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
以下简要罗列了proteus中常用元器件和仿真仪表中英文对照表:
7407驱动门
1N914二极管
74Ls00与非门
74LS04非门
74LS08与门
74LS390TTL双十进制计数器
7SEG4针BCD-LED输出从0-9对应于4根线的BCD码
7SEG3-8译码器电路BCD-7SEG转换电路
AND与门
BATTERY电池/电池组
BUS总线
CAP电容
CAPACITOR电容器
CLOCK时钟信号源
CRYSTAL晶振
FUSE保险丝
GROUND地
LAMP灯
LED-RED红色发光二极管
LM016L2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。
LOGICANALYSER逻辑分析器
LOGICPROBE逻辑探针
LOGICPROBE[BIG]逻辑探针用来显示连接位置的逻辑状态
LOGICSTATE逻辑状态用鼠标点击,可改变该方框连接位置的逻辑状态
LOGICTOGGLE逻辑触发
MOTOR马达
OR或门
POT-LIN三引线可变电阻器
POWER电源
RES电阻
RESISTOR电阻器
SWITCH按钮手动按一下一个状态
VOLTMETER伏特计
VOLTMETER-MILLImV伏特计
VTERM串行口终端
Electromechanical电机
Inductors变压器
LaplacePrimitives拉普拉斯变换
Miscellaneous各种器件AERIAL-天线;ATAHDD;ATMEGA64;BATTERY;CELL;CRYSTAL-晶振;FUSE;METER-仪表;
Optoelectronics各种发光器件发光二极管,LED,液晶等等
Resistors各种电阻
SimulatorPrimitives常用的器件
Speakers&Sounders 扬声器
Switches&Relays开关,继电器,键盘
Transistors晶体管(三极管,场效应管)
TTL74series
TTL74ALSseries
TTL74ASseries
TTL74Fseries
TTL74HCseries
TTL74HCTseries
TTL74LSseries
TTL74Sseries
此模拟电路集成芯片
Capacitors电容集合
Connectors排座,排插
DataConvertersADC,DAC
DebuggingTools调试工具
下面开始我们的第一个任务:
1.1子情境内容:
让单片机动起来,用单片机控制一个LED灯闪烁发光。
用P1口的第一个引脚控制一个LED灯,1秒钟闪烁一次。
1.2子情境目标:
通过此子情境的练习,快速掌握PROTEUS的基本用法
1.3子情境步骤
1.3.1步骤一:
PROTEUS电路设计
整个设计都是在ISIS编辑区中完成的。
(1)单击工具栏上的“新建”按钮
,新建一个设计文档。
单击“保存”按钮
,弹出如图5-2所示的“SaveISISDesigneFile”对话框,在文件名框中输入“LED”(简单实例的文件名),再单击“保存”按钮,完成新建设计文件操作,其后缀名自动为.DSN。
图5-2保存ISIS设计文件
(2)选取元器件
此简单实例需要如下元器件:
单片机:
AT89C51
发光二极管:
LED-RED
瓷片电容:
CAP*
电阻:
RES*
晶振:
CRYSTAL
按钮:
BUTTON
单击图5-3中的“P”按钮
,弹出如图5-4所示的选取元器件对话框,在此对话框左上角“keywords(关键词)”一栏中输入元器件名称,如“AT89C52”,系统在对象库中进行搜索查找,并将与关键词匹配的元器件显示在“Results”中。
在“Results”栏中的列表项中,双击“AT89C51”,则可将“AT89C52”添加至对象选择器窗口。
按照此方法完成其它元器件的选取,如果忘记关键词的完整写法,可以用“*”代替,如“CRY*”可以找到晶振。
被选取的元器件都加入到ISIS对象选择器中。
如图5-5所示。
图5-3单击“P”按钮选取元器件
图5-4选取元器件窗口
图5-5选取元器件均加入到ISIS对象选择器中
(3)放置元器件至图形编辑窗口
在对象选择器窗口中,选中AT89C51,将鼠标置于图形编辑窗口该对象的欲放置的位置、单击鼠标左键,该对象被完成放置。
同理,将BUTTON、RES等放置到图形编辑窗口中。
如图5-6所示。
若元器件方向需要调整,先在ISIS对象选择器窗口中单击选中该元器件,再单击工具栏上相应的转向按钮
,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。
若对象位置需要移动,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到,该对象的颜色已变至红色,表明该对象已被选中,按下鼠标左键,拖动鼠标,将对象移至新位置后,松开鼠标,完成移动操作。
通过一系列的移动、旋转、放置等操作,将元器件放在ISIS编辑窗口中合适的位置。
如图5-6所示。
(4)放置终端(电源、地)
放置电源操作:
单击工具栏中的终端按钮
,在对象选择器窗口中选择“POWER”如图5-7所示,再在编辑区中要放电源的位置单击完成。
放置地(GROUND)的操作与此类似。
图5-6各元器件放在ISIS编辑窗口中合适的位置
图5-7放置终端符号
(5)元器件之间的连线
Proteus的智能化可以在你想要画线的时候进行自动检测。
下面,我们来操作将电阻R1的右端连接到LED显示器的左端,如图5-6所示。
当鼠标的指针靠近R1右端的连接点时,跟着鼠标的指针就会出现一个“□”号,表明找到了R1的连接点,单击鼠标左键,移动鼠标(不用拖动鼠标),将鼠标的指针靠近LED的左端的连接点时,跟着鼠标的指针就会出现一个“□”号,表明找到了LED显示器的连接点,单击鼠标左键完成电阻R1和LED的连线。
Proteus具有线路自动路径功能(简称WAR),当选中两个连接点后,WAR将选择一个合适的路径连线。
WAR可通过使用标准工具栏里的“WAR”命令按钮
来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。
同理,我们可以完成其它连线。
在此过程的任何时刻,都可以按ESC键或者单击鼠标的右键来放弃画线。
(6)修改、设置元器件的属性
PROTEUS库中的元器件都有相应的属性,要设置修改元器件的属性,只需要双击ISIS编辑区中的该元器件。
例如,发光二极管的限流电阻R1,双击它弹出如图5-7所示的属性窗口,在窗口中已经将电阻的阻值修改为330欧姆。
图5-9是编辑完成的“简单实例”的电路。
图5-8设置限流电阻阻值为330欧姆
图5-9编辑完成的简单实例的电路图
1.3.2步骤二:
源程序设计与生成目标代码文件
(1)程序流程图
图5-10发光二极管闪烁的流程图
(2)源程序设计(略)
1.3.3步骤三:
PROTEUS仿真
(1)加载目标代码文件
双击编辑窗口的AT89C52器件,在弹出如图5—11所示属性编辑对话框ProgramFile一栏中单击打开按钮
,出现文件浏览对话框,找到FLASH_LED.HEX文件,单击“打开”按钮,完成添加文件。
在Clockfrequency栏中把频率设置为12MHZ,仿真系统则以12MHZ的时钟频率运行。
因为单片机运行的时钟频率以属性设置中的“Clockfrequency”为准,所以在编辑区设计MCS-51系列单片机系统电路时,可以略去单片机振荡电路,并且复位电路也可以略去。
所以从子情境三开始就将振荡电路和复位电路省略。
图5-11加载目标代码文件窗口
(2)仿真。
单击按钮
,启动仿真,发光二极管间隔500毫秒闪烁。
图5—12仿真运行片段
红色方块代表低电平,蓝色方块代表高电平,灰色方块代表不确定电平
学习情景二:
用发光二极管实现流水灯乒乓球效果
2.1子情境目标:
(1)通过AT89C52单片机控制8个发光二极管,实现亮点由低位到高位再由高位到低位来回流动的乒乓球效果
(2)用PROTEUS设计、仿真以AT89C52为核心的放光二极管流水灯电路。
(3)掌握发光二极管的控制方法
2.2子情境步骤
2.2.1步骤一:
PROTEUS电路设计
(1)选取元器件:
按快捷键“P”按钮
,打开元器件选择窗口。
在关键词栏中输入元器件的关键词,选取需要的元器件。
①单片机:
AT89C52
②电阻、8排阻:
RES*
③红色发光二极管:
LED-RED
④瓷片电容:
CAP*
⑤晶振:
CRYSTAL
(2)放置元器件:
在对象选择器中单击选中AT89C52,在编辑区中合适的位置单击,器件AT89C52就被放置到编辑区中。
如果要改变元器件的放置方向,先在ISIS对象选择器中单击选中该元器件,再单击工具栏上相应的转向按钮
,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。
(3)放置终端(电源、地)
放置电源操作:
单击工具栏中的终端按钮
,在对象选择器窗口中选择“POWER”,再在编辑区中要放电源的位置单击完成。
放置地(GROUND)的操作与此类似。
(4)元器件之间的连线
因为ISIS的智能化程度很高,只要单击所要连线的起点和终点。
例如元器件的引脚、终端等,在这两点间会自动生成一条线。
若要画折线,只要在转折点单击;若中途想取消连线,右击即可。
(5)元器件属性设置
PROTEUS库中的元器件都有相应的属性,要设置修改元器件的属性,只需要双击ISIS编辑区中的该元器件。
设置好的原理图如图5-13所示。
图5-13流水灯乒乓效果原理图
2.2.2步骤二:
源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
2.2.3步骤三:
PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框ProgramFile一栏中单击打开按钮
,出现文件浏览对话框,找到pingpang.hex文件,单击“打开”按钮,完成添加文件。
单击按钮
,启动仿真,仿真运行片段如图5-15所示。
通过AT89C52单片机控制8个发光二极管,实现亮点由低位到高位再由高位到低位来回流动的乒乓球效果。
图5-15流水灯乒乓效果运行片段
学习情景三:
数码管动态扫描
3.1子情境内容:
利用动态扫描让四位数码管稳定的显示1234。
3.2子情境目标:
(1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电
路设计,本任务的效果是让四位数码管稳定的显示1234。
(2)用PROTEUS进行电路设计和实时仿真
3.3知识点链接
(1)数码管动态扫描(动态扫描的定义以及与静态显示的区别)
动态显示的特点是将所有位数码管的段选线s一位数码管有效。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
(2)总线的应用
元器件与总线的连线
P0口的接线采用总线方式,详细如图5-17所示。
1选择总线按钮
2绘制总线:
与普通电线的绘制方法一样,选择合适的起点、终点单击。
如果终点在空白处,左键双击结束连线。
画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。
此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。
在画斜线时,需要关闭线路自动路径功能
才好绘制。
Proteus的线路自动路径功能简称WAR,当选中两个连接点后,WAR将选择一个合适的路径连线。
WAR可通过使用标准工具栏里的“WAR”命令按钮
来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。
3给与总线连接的导线贴标签PARTLABELS
与P0口相连的线标签名依次为P00—P06,本电路中的P0口的上拉电阻通过总线与P0口相连,数码管也是通过总线与P0口相连,这些都需要标注,以表明正确的电气连接。
单击绘图工具栏中的导线标签按钮
,使之处于选中状态。
将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“×”号,表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口,如图5-16所示。
在“string”栏中,输入标签名称(如p00),单击“OK”按钮,结束对该导线的标签标定。
同理,可以标注其它导线的标签,如图5-16所示。
注意,在标定导线标签的过程中,相互接通的导线必须标注相同的标签名。
图5-16编辑导线标签窗口
3.4任务步骤
3.4.1步骤一:
PROTEUS电路设计,单片机控制四位共阴极数码管动态扫描显示的原理图如图5-17所示。
图5-17四位共阴极数码管动态扫描显示的原理图
1、选取元器件
①单片机:
AT89C52
②带公共端的排阻:
RESPACK-8
③四位共阴极数码管:
7SEG-MPX4-CC
2、放置元器件、放置电源和地、连线、元器件属性设置
数码管动态扫描显示的原理图如图5-17所示,整个电路设计操作都在ISIS平台中进行。
(1)带公共端的排阻(RESPACK-8)如图5-18所示,在本电路中作为P0的
上拉电阻,在如图5-19所示ComponentValue一栏中可更改阻值,例如本例中将阻值更改为200欧姆。
图5-18排阻图5-19排阻属性框
至此,我们便完成了整个电路图的绘制。
3.4.2步骤二:
源程序设计与目标代码文件生成
(1)程序流程图
图5-20数码管动态扫描的流程图
(2)源程序设计
3.4.3步骤三:
PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框ProgramFile一栏中单击打开按钮
,出现文件浏览对话框,找到dongtai.hex文件,单击“打开”按钮,完成添加文件。
单击按钮
,启动仿真,仿真运行片段如图5-21所示。
通过AT89C52单片机控制四位数码管,实现让四位数码管稳定的显示“1234”的效果。
图5-21数码管动态扫描显示“1234”
学习情景四:
定时/计数器的使用——方波发生器
4.1子情境内容:
用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。
4.2子情境目标:
(1)通过用AT89C52单片机定时/计数器0的定时功能构成一简单的方波发生器,掌握定时器的基本用法。
(2)用PROTEUS进行电路设计和实时仿真
(3)学会使用虚拟示波器观察波形
4.3知识点链接
虚拟示波器的基本操作:
单击工具栏中的按钮
(虚拟仪器),在对象选择器列表中选择OSCILLOSCOPE(示波器),在ISIS编辑窗口中合适位置单击就可以将示波器放置好了。
最后将单片机的P1.0口与示波器的A通道相连,如图5-22所示。
4.4任务步骤
4.4.1步骤一:
PROTEUS电路设计,实现周期为2s的方波的原理图如图5-22所示。
图5-22方波发生器原理图
1、选取元器件
①单片机:
AT89C52
②电阻:
RES
③LED发光二极管:
LED-RED
2、放置元器件、放置电源和地、连线、元器件属性设置
方波发生器的原理图如图5-22所示,整个电路设计操作都在ISIS平台中进行。
与子情景3相似,故不详述。
(1)程序流程图
中断服务程序
主程序
图5-23方波发生器的流程图
(2)源程序设计
4.4.3步骤三:
PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框ProgramFile一栏中单击打开按钮
,出现文件浏览对话框,找到fangbo.hex文件,单击“打开”按钮,完成添加文件。
单击按钮
,启动仿真,仿真运行片段如图5-24所示。
用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。
我们可以适当调整示波器面板上的按钮来使波形最有利于我们观察。
调整好以后,系统产生的波形效果如图5-25所示。
转动如图5-26所示的A通道的转盘旋钮,可调整A通道的电压显示幅值,范围为2ms-20v/格,如图电压幅值为2v/格,从波形可以看出P1.0口输出电压近似为5V。
转动如图5-27所示的转盘旋钮,可调整时基。
如图时基为0.5s/格。
从图中我们能够看出,波形的周期为2s,这与我们设定的目标相一致。
图5-24方波发生器仿真运行图
图5-25示波器上显示的方波图
图5-26调节电压幅值图5-27调节时基
4.5扩展练习
将子情境中方波的周期更改为1秒,并能在虚拟示波器上直观地显示波形。
学习情景五:
单片机外部中断
5.1子情境内容:
外部中断是单片机的重要内容,本子情境用外部中断功能改变流水灯和数码管的显示状态。
没有发生中断时,数码管从0至F顺序显示,不断循环。
当有外部中断0发生时(在单片机P3.2引脚上有低电平),立即产生中断,数码管从0至F顺序显示的工作停下来,转去执行中断服务程序。
中断服务程序为:
流水灯上下来回流动3次。
完成中断服务程序后,返回主程序原断点处继续执行,数码管接着原来的数字继续顺序显示。
程序流程图如5-29所示。
5.2子情境目标:
(1)理解单片机的中断原理及中断过程
(2)用PROTEUS设计、仿真单片机的外部中断。
5.3知识点链接
5.4任务步骤
5.4.1步骤一:
PROTEUS电路设计,实现外部中断功能改变流水灯和数码管的显示状态的原理图如图5-28所示。
1、选取元器件
①单片机:
AT89C51
②电阻、排阻:
RES*
③LED发光二极管:
LED-RED
④按钮:
BUTTON
⑤带公共端共阳七段蓝色数码管:
7SEG-COM-AN-BLUE
2、放置元器件、放置电源和地、连线、元器件属性设置
外部中断实验的原理图如图5-28所示,整个电路设计操作都在ISIS平台中进行。
与子情景3相似,故不详述。
与LED串联的排阻阻值为1K欧姆,与数码管串联的电阻的阻值为330欧姆左右。
图5-28外部中断子情境原理图
5.4.2步骤二:
源程序设计与目标代码文件生成
(1)程序流程图
图5-29外部中断流程图
(2)源程序设计
5.4.3步骤三:
PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框ProgramFile一栏中单击打开按钮
,出现文件浏览对话框,找到zhongduan.hex文件,单击“打开”按钮,完成添加文件。
单击按钮
,启动仿真,仿真运行片段如图5-30、5-31、5-32所示。
图5-30中是主程序的运行片段,主程序中数码管从0至F顺序显示
图5-31中,按下按钮后,在单片机P3.2引脚上有低电平,立即产生中断,数码管从0至F顺序显示的工作停下来,流水灯上下循环移动三次。
图5-32中,完成中断服务程序后,返回主程序原断点处继续执行,数码管接着原来的数字继续顺序显示。
图5-30主程序中数码管从0至F顺序显示
图5-31按下按钮后数码管停下来,流水灯上下循环移动三次
图5-32完成中断服务程序后,返回主程序原断点处继续执行,数码管接着原来的数字继续顺序显示。
5.5扩展练习
主程序中数码管从0至9顺序显示数字,中断发生后(在单片机P3.2引脚上有低电平),数码管从9至0反序显示。
学习情景六:
直流电机正反转
6.1子情境内容:
用单片机AT89C51控制直流电机正反转。
在此将由89C51的P2.0,P2.1通过晶体管控制继电器,当P2.0输出低电平,P2.1输出高电平时,三极管Q1导通,而三极管Q2截止,从而导致与Q1相连的继电器吸合,电机因两端产生电压而转动。
由P3.0,P3.1,P3.2控制电机的正传、反转和停止。
6.2子情境目标:
(1)掌握趋动电机正反转的电路
(2)用PROTEUS实现电机正反转电路的设计,并进行实时交互仿真
6.3知识点链接
二极管保护电路:
在图5-33中,在两个继电器的两端都反相接了一个二极管,这个二极管非常重要,当使用电磁继电器时必须接。
原因如下:
线圈通电正常工作时,二极管对电路不起作用。
当继电器线圈在断电的一瞬间会产生一个很强的反向电动势,在继电器线圈两端反相并联二极管就是用来消耗这个反向电动势的,通常这个二极管叫做消耗二极管,如果不加这个消耗二极管,反向电动势就会直接作用在趋动三极管上,很容易将三极管烧毁。
6.4任务步骤
6.4.1步骤一:
PROTEUS电路设计,实现用单片机AT89C51控制直流电机正反转原理图如图5-33所示。
图5-33直流电机正反转原理图
1、选取元器件
①单片机:
AT89C51
②电阻:
RES*
③直流电机:
MOTOR
④按钮:
BUTTON
⑤三极管:
NPN*
⑥继电器:
RELAY*
⑦二极管:
DIODE*
2、放置元器件、放置电源和地、连线、元器件属性设置
直流电机正反转的原理图如图5-33所示,整个电路设计操作都在ISIS平台中进行。
与子情景3相似,故不详述。
(1)关于元器件属性的设置在此实例中需要特别注意:
①三极管基极的限流电阻更改为1K欧姆
②双击电机图标,弹出如图5-34所示的电机属性对话框,在NominalVoltage一栏中将默认值更改为5v
4双击继电器图标,在弹出的如图5-35所示的继电器属性对话框中,在ComponentValue一栏中将默认值更改为5v
图5-34更改电机属性
图5-35更改继电器属性
6.4.2步骤二:
源程序设计与目标代码文件生成
(1)程序流程图
图5-36电机正反转流程