protues简介锁存器,这个元器件叫什么?

 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
PROTUES元器件查找对应表
下载积分:1000
内容提示:
文档格式:DOC|
浏览次数:1|
上传日期: 01:15:43|
文档星级:
该用户还上传了这些文档
PROTUES元器件查找对应表.DOC
官方公共微信protues中74ls148连74ls279锁存器后148的gs端始终是高电平_protues吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:752贴子:
protues中74ls148连74ls279锁存器后148的gs端始终是高电平收藏
protues中74ls148连74ls279锁存器后148的gs端始终是高电平protues中74ls148连74ls279锁存器后148的gs端始终是高电平protues中74ls148连74ls279锁存器后148的gs端始终是高电平protues中74ls148连74ls279锁存器后148的gs端始终是高电平protues中74ls148连74ls279锁存器后148的gs端始终是高电平
1楼 18:41&|
登录百度帐号
内&&容:使用签名档&&
为兴趣而生,贴吧更懂你。&或请问一下这个元器件在protues中怎么查找??_百度知道
请问一下这个元器件在protues中怎么查找??
/zhidao/pic/item/fbf2b7cae42://d://d.com/zhidao/wh%3D600%2C800/sign=d109c4b6a1b4e168e087/fbf2b7cae42.baidu.hiphotos.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.jpg" esrc="http.hiphotos.hiphotos<a href="/zhidao/wh%3D450%2C600/sign=77aea801ccbf6c81f7d03/fbf2b7cae42://d.baidu
提问者采纳
告诉你方法如下:点击键盘快捷键P键后,在最上边的关键字处输入GENELECT 10U单词,有3个你要的10U电压不同的电容我亲自搜索后
其他类似问题
protues的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
protues元件库
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口简单实例助你快速掌握PROTEUS的用法
子情境1:简单实例助你快速掌握PROTEUS的用法
1.1& 子情境内容:让单片机动起来,用单片机控制一个LED灯闪烁发光。
1.2& 子情境目标:
1.3& 子情境步骤
1.3.1步骤一: PROTEUS电路设计
1.3.2步骤二:源程序设计与生成目标代码文件
(1)程序流程图
(2)源程序设计
1.3.3 步骤三:PROTEUS仿真
1.4& 扩展练习
子情境二:用发光二极管实现流水灯乒乓球效果
2.1 子情境目标:
2.2 子情境步骤
2.2.1 步骤一: PROTEUS电路设计
2.2.2步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
2.2.3 步骤三:PROTEUS仿真
2.4& 扩展练习
子情境三:数码管动态扫描
3.1子情境内容:利用动态扫描让四位数码管稳定的显示1234。
3.2 子情境目标:
(1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电
3.3 知识点链接
3.4 任务步骤
3.4.1 步骤一:PROTEUS电路设计,单片机控制四位共阴极数码管动态扫描显示的原理图如图5-17所示。
3.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
3.4.3 步骤三:PROTEUS仿真
3.5& 扩展练习
子情境四:定时/计数器的使用——方波发生器
4.1子情境内容:用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。
4.2 子情境目标:
4.3 知识点链接
4.4.1 步骤一:PROTEUS电路设计,实现周期为2s的方波的原理图如图5-22所示。
(1)程序流程图
(2)源程序设计
4.4.3 步骤三:PROTEUS仿真
4.5& 扩展练习
子情境五:单片机外部中断仿真
5.1子情境内容:外部中断是单片机的重要内容,本子情境用外部中断功能改变流水灯和数码管的显示状态。
5.2 子情境目标:
(1)理解单片机的中断原理及中断过程
(2)用PROTEUS设计、仿真单片机的外部中断。
5.3 知识点链接
5.4 任务步骤
5.4.1 步骤一:PROTEUS电路设计,实现外部中断功能改变流水灯和数码管的显示状态的原理图
5.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
5.4.3 步骤三:PROTEUS仿真
5.5& 扩展练习
主程序中数码管从0至9顺序显示数字,中断发生后(在单片机P3.2引脚上有低电平),数码管从9至0反序显示。
子情境六:直流电机正反转
6.1子情境内容:用单片机AT89C51控制直流电机正反转。
6.2 子情境目标:
(1)掌握趋动电机正反转的电路
(2)用PROTEUS实现电机正反转电路的设计,并进行实时交互仿真
6.3 知识点链接
6.4 任务步骤
6.4.1 步骤一:PROTEUS电路设计,实现用单片机AT89C51控制直流电机正反转原理图
6.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
6.4.3 步骤三:PROTEUS仿真
6.5& 扩展练习
子情境七:用ADC0809实现电压表
7.1子情境内容:利用单片机AT89C52和ADC0809设计一个数字电压表,能够测量0-5V之间的电压值,用四位数码管显示。
7.2 子情境目标:
(1)掌握PROTEUS中电压探针和电压表的使用方法
(2)通过制作简易电压表,学会AD转换芯片在单片机应用系统中的硬件接口技术和编程方法。
7.3 知识点链接
了解ADC0809芯片的功能以及使用方法
(1)功能:ADC0809芯片为8通道模/数转换器,可以和单片机直接接口,将IN0~IN7任何一通道输入的模拟电压转换成八位二进制数,在时钟为500KHZ时,一次变换时间约为100us。
(2)使用方法:28脚双列直插式封装如图5-39所示,各引脚功能如下:
7.4 任务步骤
步骤一:PROTEUS电路设计,利用单片机AT89C52和ADC0809设计一个数字电压表的原理图如图5-40所示。
7.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
7.4.3 步骤三:PROTEUS仿真
7.5& 扩展练习
子情境八:1602液晶显示器
8.1子情境内容:利用单片机AT89C52控制液晶显示器(Liquid Crystal
Display,简称为LCD)实时显示。在1602液晶的第一行显示“I LOVE MY
FAMILY”,在第二行显示“”。
8.2 子情境目标:
(1)掌握1602液晶与单片机的接口电路
(2)通过控制LCD,学会LCD液晶模块在单片机应用系统中的编程方法。
8.3 知识点链接
了解LCD1602芯片的功能以及使用方法
(1)功能:本情境中所使用的液晶显示器型号为1602,意思是每行显示16个字符,一共可以显示两行。此液晶只能显ASCII字符,如数字、大小写字母、各种符号等。
(2)使用方法:1602液晶的引脚图
8.4 任务步骤
8.4.1 步骤一:PROTEUS电路设计,利用单片机AT89C52控制液晶显示器实时显示的原理图如图5-46所示。
8.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
8.4.3 步骤三:PROTEUS仿真
8.5& 扩展练习
子情境九:简易秒表制作
9.1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。
9.2 子情境目标:
(1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路
(2)学习定时/计数器、中断技术的综合运用并会使用简易键盘
9.3 知识点链接
9.4 任务步骤
9.4.1 步骤一:PROTEUS电路设计,简易秒表的原理图如图5-51所示。
9.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
9.4.3 步骤三:PROTEUS仿真
9.5& 扩展练习
此子情境设计的秒表只能显示两位整数,如果要记录110跨栏12:88秒的成绩,则必须再增加两位数码管来显示小数位。想想硬件和软件应该做如何改动。
子情境十:点阵LED简单图形显示技术
10.1子情境内容:利用单片机AT89C52在8&8点阵上逐次显示心形、圆形和菱形图。
10.2 子情境目标:
(1)通过学习点阵LED显示技术,掌握单片机与点阵的接口电路。
(2)进一步熟悉单片机I/O口的运用方法,了解动态显示的编程方法
10.3 知识点链接
10.4 任务步骤
10.4.1 步骤一:PROTEUS电路设计,LED点阵的原理图如图5-56所示。
10.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
10.4.3 步骤三:PROTEUS仿真
10.5& 扩展练习
子情境1:简单实例助你快速掌握PROTEUS的用法
为了更快掌握PROTEUS设计与仿真操作,我们先从一简单实例入手带你入门。
让我们首先来熟悉一下仿真软件的主界面:
图5-1 仿真软件的主界面
运行protues的ISIS模块,进入仿真软件的主界面,如图5-1所示,区域&#9312;为菜单及工具栏,区域&#9313;为元器件预览区,区域&#9314;为对象选择器窗口,区域&#9315;为编辑窗口,区域&#9316;为绘图工具栏,区域&#9317;为元器件调整工具栏,区域&#9318;为运行工具条。
Proteus是一种集单片机仿真和SPICE分析于一身的仿真软件。其功能非常强大,不仅能仿真模拟电路、数字电路以及模拟数字混合电路,更重要的是可以仿真51系列、AVR、PIC等常用主流单片机。
Protues提供了丰富的资源:
(1)Proteus拥有的元器件资源:Proteus可提供30多种元件库,超过8000种模拟、数字元器件。
(2)Proteus可提供的仿真仪表资源
:仿真仪器仪表的数量、类型和质量是衡量仿真实验室是否合格的一个关键因素。Proteus可提供常用的示波器(本文的实例中示波器被用来观察产生的波形)、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
以下简要罗列了proteus中常用元器件和仿真仪表中英文对照表:
7407 驱动门&
1N914 二极管&
74Ls00 与非门
74LS04 非门
74LS08 与门&
74LS390 TTL 双十进制计数器
7SEG 4针BCD-LED 输出从0-9 对应于4根线的BCD码
3-8译码器电路BCD-7SEG转换电路&&&
BATTERY 电池/电池组&
CAPACITOR 电容器&
CLOCK 时钟信号源&
CRYSTAL 晶振&
FUSE 保险丝&
GROUND 地&
LED-RED 红色发光二极管&
2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。
LOGIC ANALYSER 逻辑分析器&
LOGICPROBE 逻辑探针&
LOGICPROBE[BIG] 逻辑探针 用来显示连接位置的逻辑状态
LOGICSTATE 逻辑状态 用鼠标点击,可改变该方框连接位置的逻辑状态
LOGICTOGGLE 逻辑触发&
MOTOR 马达&
POT-LIN 三引线可变电阻器
POWER 电源
RESISTOR 电阻器&
SWITCH 按钮 手动按一下一个状态
VOLTMETER 伏特计
VOLTMETER-MILLI mV伏特计
VTERM 串行口终端&
Electromechanical 电机
Inductors 变压器&
Laplace Primitives 拉普拉斯变换
Miscellaneous 各种器件
AERIAL-天线;ATAHDD;ATMEGA64;BATTERY;CELL;CRYSTAL-晶振;FUSE;METER-仪表;
Optoelectronics 各种发光器件 发光二极管,LED,液晶等等
Resistors 各种电阻&
Simulator Primitives 常用的器件&
Speakers & Sounders& 扬声器
Switches & Relays 开关,继电器,键盘
Transistors 晶体管(三极管,场效应管)
TTL 74 series
TTL 74ALS series
TTL 74AS series
TTL 74F series
TTL 74HC series
TTL 74HCT series
TTL 74LS series
TTL 74S series
此 模拟电路集成芯片
Capacitors 电容集合
Connectors 排座,排插
Data Converters ADC,DAC
Debugging Tools 调试工具&
下面开始我们的第一个任务:
1.1& 子情境内容:让单片机动起来,用单片机控制一个LED灯闪烁发光。
用P1口的第一个引脚控制一个LED灯, 1秒钟闪烁一次。
1.2& 子情境目标:
通过此子情境的练习,快速掌握PROTEUS的基本用法
1.3& 子情境步骤
1.3.1步骤一: PROTEUS电路设计
整个设计都是在ISIS编辑区中完成的。
(1)单击工具栏上的“新建”按钮,新建一个设计文档。单击“保存”按钮,弹出如图5-2所示的“Save ISIS Designe
File”对话框,在文件名框中输入“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右端的连接点时,跟着鼠标的指针就会出现一个“&#9633;”号,表明找到了R1的连接点,单击鼠标左键,移动鼠标(不用拖动鼠标),将鼠标的指针靠近LED的左端的连接点时,跟着鼠标的指针就会出现一个“&#9633;”号,表明找到了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)源程序设计
将放光二极管闪烁的程序保存在文件FLASH_LED.C中,在keil中编译生成目标代码文件,本例为FLASH_LED.HEX。
#include&reg52.h&&&&&&&&&&&&
#define uint unsigned
D1=P1^0;&&&&&&&&&&&&&&
//声明单片机P1口的第一位
void delay(uint
z);&&&&&&&&
//声明子函数
void main()
while(1)&&&&&&&&&&
&&&&&&&&&&&&
D1=0;&&&&&&&&&
//点亮第一个发光二极管
&&&&&&&&&&&&
delay(500);&&&
//延时500毫秒
&&&&&&&&&&&&
D1=1;&&&&&&&&&
//关闭第一个发光二极管
&&&&&&&&&&&&
delay(500);&&&
//延时500毫秒
void delay(uint
//延时子程序延时约z毫秒
for(x=z;x&0;x--)
&&&&&&&&&&&&
for(y=110;y&0;y--);
1.3.3 步骤三:PROTEUS仿真
(1)加载目标代码文件
双击编辑窗口的AT89C52器件,在弹出如图5—11所示属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到FLASH_LED.HEX文件,单击“打开”按钮,完成添加文件。在Clock
frequency栏中把频率设置为12MHZ,仿真系统则以12MHZ的时钟频率运行。因为单片机运行的时钟频率以属性设置中的“Clock
frequency”为准,所以在编辑区设计MCS-51系列单片机系统电路时,可以略去单片机振荡电路,并且复位电路也可以略去。所以从子情境三开始就将振荡电路和复位电路省略。
图5-11加载目标代码文件窗口
单击按钮,启动仿真,仿真运行片段如图5-12所示。发光二极管间隔500毫秒闪烁。
图5—12仿真运行片段
红色方块代表低电平,蓝色方块代表高电平,灰色方块代表不确定电平
1.4& 扩展练习
改成让P1.1口控制LED灯1秒钟闪烁一次。
子情境二:用发光二极管实现流水灯乒乓球效果
2.1 子情境目标:
(1)通过AT89C52单片机控制8个发光二极管,实现亮点由低位到高位再由高位到低位来回流动的乒乓球效果
(2)用PROTEUS设计、仿真以AT89C52为核心的放光二极管流水灯电路。
(3)掌握发光二极管的控制方法
2.2 子情境步骤
2.2.1 步骤一: PROTEUS电路设计
(1)选取元器件:按快捷键“P”按钮,打开元器件选择窗口。在关键词栏中输入元器件的关键词,选取需要的元器件。
&#9312;单片机:AT89C52
&#9313;电阻、8排阻:RES*
&#9314;红色发光二极管:LED-RED
&#9315;瓷片电容:CAP*
&#9316;晶振:CRYSTAL
(2)放置元器件:在对象选择器中单击选中AT89C52,在编辑区中合适的位置单击,器件AT89C52就被放置到编辑区中。如果要改变元器件的放置方向,先在ISIS对象选择器中单击选中该元器件,再单击工具栏上相应的转向按钮,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。
(3)放置终端(电源、地)
放置电源操作:单击工具栏中的终端按钮,在对象选择器窗口中选择“POWER”,再在编辑区中要放电源的位置单击完成。放置地(GROUND)的操作与此类似。
(4)元器件之间的连线
因为ISIS的智能化程度很高,只要单击所要连线的起点和终点。例如元器件的引脚、终端等,在这两点间会自动生成一条线。若要画折线,只要在转折点单击;若中途想取消连线,右击即可。
(5)元器件属性设置
PROTEUS库中的元器件都有相应的属性,要设置修改元器件的属性,只需要双击ISIS编辑区中的该元器件。设置好的原理图如图5-13所示。
图5-13流水灯乒乓效果原理图
2.2.2步骤二:源程序设计与目标代码文件生成
(1)程序流程图
(2)源程序设计
#include&reg52.h&&&&&&&
//52系列单片机头文件
&intrins.h&&&&
//包含_crol_(循环左移)函数所在的头文件
void delay(int
//声明子函数
unsigned char
//定义一个变量,用来给P1口赋值
void main()
temp=0&&&&&&&&&
P1=&&&&&&&&&&&
//先点亮第一个发光二极管
while(1)&&&&&&&&&&&
&&&&&&&&&&&&
for(i=7;i&0;i--)&&&&&&&&
//控制亮点从低位往高位移动7次
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
delay(500);&&&&&&&&&
//延时500毫秒
&&&&&&&&&&&&&&&&&&&
temp=_crol_(temp,1); //将temp循环左移一位后再赋给temp
P1=&&&&&&&&
//将移位后的值赋给P1口,从低位到高位逐个点亮发光二极管
&&&&&&&&&&&&
&&&&&&&&&&&&
for(j=7;j&0;j--)&&&&&&&&
//控制亮点从高位往低位移动7次
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
delay(500);&&&&&&&&&
//延时500毫秒
&&&&&&&&&&&&&&&&&&&
temp=_cror_(temp,1); //将temp循环右移一位后再赋给temp
P1=&&&&&&&&&
//将移位后的值赋给P1口,从高位到地位逐个点亮发光二极管&&&&
&&&&&&&&&&&&
void delay(int z)
unsigned int x,y;
for(x=z;x&0;x--)&&&&&&&&&&&&&
//延时z毫秒
&&&&&&&&&&&&
for(y=110;y&0;y--);
(2)生成目标代码文件
在KEIL软件中,编译C语言源程序,生成目标代码文件,本例中为pingpang.hex。
2.2.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到pingpang.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图5-15所示。通过AT89C52单片机控制8个发光二极管,实现亮点由低位到高位再由高位到低位来回流动的乒乓球效果。
图5-15流水灯乒乓效果运行片段
2.4& 扩展练习
此子情境中流水灯在同一时刻只显示一盏灯,现在完成同时亮着两个灯流动的效果。
子情境三:数码管动态扫描
3.1子情境内容:利用动态扫描让四位数码管稳定的显示1234。
3.2 子情境目标:
(1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电
路设计,本任务的效果是让四位数码管稳定的显示1234。
(2)用PROTEUS进行电路设计和实时仿真
3.3 知识点链接
(1)数码管动态扫描 (动态扫描的定义以及与静态显示的区别)
动态显示的特点是将所有位数码管的段选线s一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
(2)总线的应用
元器件与总线的连线
P0口的接线采用总线方式,详细如图5-17所示。
&#9312;&&&
选择总线按钮
&#9313;&&&
绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。
如果终点在空白处,左键双击结束连线。
画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。在画斜线时,需要关闭线路自动路径功能才好绘制。
Proteus的线路自动路径功能简称WAR,当选中两个连接点后,WAR将选择一个合适的路径连线。WAR可通过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。
&#9314;&&&
给与总线连接的导线贴标签PART LABELS
与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、选取元器件
&#9312;单片机:AT89C52
&#9313;带公共端的排阻:RESPACK-8
&#9314;四位共阴极数码管:7SEG-MPX4-CC
2、放置元器件、放置电源和地、连线、元器件属性设置
数码管动态扫描显示的原理图如图5-17所示,整个电路设计操作都在ISIS平台中进行。
(1)带公共端的排阻(RESPACK-8)如图5-18所示,在本电路中作为P0的
上拉电阻,在如图5-19所示Component Value一栏中可更改阻值,例如本例中将阻值更改为200欧姆。
图5-18排阻&&&&&&&&&&&&&&&&&&&&&&&&&&
图5-19排阻属性框
至此,我们便完成了整个电路图的绘制。
3.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
图5-20 数码管动态扫描的流程图
(2)源程序设计
#include&reg52.h&&&&&&&&&&&&
//52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};&&&&&&&&&&&
//共阴极数码管编码
void display(uchar,uchar,uchar,uchar);&
//声明子函数
delay(int);&&&&&&&&&&&&&&&&&&&&&
//声明子函数
void main()
&&&&&&&&&&&
display(1,2,3,4);&&&&&&&&&
//主程序始终调用数码管显示子程序
void display(uchar a,uchar b,uchar c,uchar d)
P2=0&&&&&&&&&&&&&&&&&&&&&&&&&&&&
P0=table[a];&&&&&&&&&&&&&&&&&&&&&&
//给第一个数码管送"a"
delay(1);&&&&&&&&&&&&&&&&&&&&&&&&&
//延时1ms&&&&&&&&&&&&&&&&&&&&&
P0=table[b];&&&&&&&&&&&&&&&&&&&&&
//给第二个数码管送"b"
delay(1);&&&&&&&&&&&&&&&&&&&&&&&&
P0=table[c];&&&&&&&&&&&&&&&&&&&&&
//给第三个数码管送"c"
delay(1);&&&&&&&&&&&&&&&&&&&&&&&&
P2=0x7f;&&&&&&&&&&&&&&&&&&&&&&&&
P0=table[d];&&&&&&&&&&&&&&&&&&&&&
//给第三个数码管送"d"
delay(1);&&&&&&&&&&&&&&&&&&&&&&&&
void delay(uint
z)&&&&&&&&&&&&&&&&&&
//延时子函数
for(x=z;x&0;x--)
&&&&&&&&&&&
for(y=110;y&0;y--);
(2)生成目标代码文件
在KEIL软件中,编译C语言源程序,生成目标代码文件,本例中为dongtai.hex。
3.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到dongtai.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图5-21所示。通过AT89C52单片机控制四位数码管,实现让四位数码管稳定的显示“1234”的效果。
图5-21数码管动态扫描显示“1234”
3.5& 扩展练习
本子情境中单片机趋动的是共阴极的数码管,请使用四位共阳极的数码管重新设计和仿真。
子情境四:定时/计数器的使用——方波发生器
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、选取元器件
&#9312;单片机:AT89C52
&#9313;电阻:RES
&#9314;LED发光二极管:LED-RED
2、放置元器件、放置电源和地、连线、元器件属性设置
方波发生器的原理图如图5-22所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。
(1)程序流程图
中断服务程序
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图5-23 方波发生器的流程图
(2)源程序设计
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
sbit D1=P1^0;
void main()
&& TMOD=0x01;
&& TH0=()/256;
TL0=()%6;&&&&&&
//定时50ms中断一次
EA=1;&&&&&&&&&&&&&&&&
//开总中断
ET0=1;&&&&&&&&&&&&&&&
//允许定时器T0中断
TR0=1;&&&&&&&&&&&&&&&&&&
//起动定时器开始工作
D1=1;&&&&&&&&&&&&&
//让LED灯初始时处在熄灭状态
while(1);&&&
//等待中断产生
void my_timer0() interrupt
//中断服务程序
TH0=()/256;&&&&
TL0=()%6;&&&&&&&
//重新赋初值
aa++;&&&&&&&&&&&&&&&&&&&
//中断一次变量aa加1
if(aa==20)&&&&&&&&&&&
//当aa=20时中断了20次,定时时间为20*50ms=1s,更改一次P1.0口的输出状态,这样得到的方波周期为2s
aa=0;&&&&&&&&&&&&
//将变量aa清零,以便于下次重新定时
D1=~D1;&&&&&&&&&&&&&
//改变引脚P1.0的输出状态
4.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到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-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、选取元器件
&#9312;单片机:AT89C51
&#9313;电阻、排阻:RES*
&#9314;LED发光二极管:LED-RED
&#9315;按钮:BUTTON
&#9316;带公共端共阳七段蓝色数码管:7SEG-COM-AN-BLUE
2、放置元器件、放置电源和地、连线、元器件属性设置
外部中断实验的原理图如图5-28所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。与LED串联的排阻阻值为1K欧姆,与数码管串联的电阻的阻值为330欧姆左右。
图5-28外部中断子情境原理图
5.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
图5-29 外部中断流程图
(2)源程序设计
#include&reg52.h&
#include&intrins.h&&&
//包含_crol_和_cror_函数所在的头文件
#define uchar unsigned char
#define uint unsigned int
d1=P1^0;&&&&&&&&&&&&&
//定义P1口的第一个引脚
char i,j,m,n,temp,k;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x98,0x88,0x83,
0xa7,0xa1,0x06,0x8e};//共阳极数码管编码
void delay(int z);
void main()
EA=1;&&&&&&&&&&&
//中断总允许
EX0=1;&&&&&&&&&&
//允许外部中断0中断
IT0=0;&&&&&&&&&&
//外部中断0的触发方式为低电平触发
&&&&&&&&&&&&
for(i=0;i&16;i++)&&&
//主程序一直在从事顺序显示数字的工作
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
P0=table[i];&&&&&
//将段码逐个送至P0口
&&&&&&&&&&&&&&&&&&&
delay(500);&&&&&&
//延时500ms
&&&&&&&&&&&&
void my_int0() interrupt
//外部中断0的中断服务程序:中断后流水灯上下循环三次
&&&&&&&&&&&&
temp=0&&&&&&&&
//给流水灯赋初值
&&&&&&&&&&&&
P1=&&&&&&&&&
// 让第一个灯点亮
&&&&&&&&&&&&
for(k=0;k&3;k++)// 实现循环三次的功能
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
for(m=0;m&7;m++)//左移7次
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
delay(200);
temp=_crol_(temp,1);//库函数里面的循环左移函数,将temp的值左移一位后重新赋给temp
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//将左移一位后的temp值送P1口显示
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
for(n=0;n&7;n++)//右移7次
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
delay(200);
temp=_cror_(temp,1);//库函数里面的循环右移函数,将temp的值右移一位后重新赋给temp
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
P1=//将右移一位后的temp值送P1口显示
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
delay(200);
&&&&&&&&&&&&
void delay(int z)//延时子函数
for(x=z;x&0;x--)
&&&&&&&&&&&&
for(y=110;y&0;y--);
5.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到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、选取元器件
&#9312;单片机:AT89C51
&#9313;电阻:RES*
&#9314;直流电机:MOTOR
&#9315;按钮:BUTTON
&#9316;三极管:NPN*
&#9317;继电器:RELAY*
&#9318;二极管:DIODE*
2、放置元器件、放置电源和地、连线、元器件属性设置
直流电机正反转的原理图如图5-33所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。
(1)关于元器件属性的设置在此实例中需要特别注意:
&#9312;三极管基极的限流电阻更改为1K欧姆
&#9313;双击电机图标,弹出如图5-34所示的电机属性对话框,在Nominal Voltage一栏中将默认值更改为5v
&#9315;&&&
双击继电器图标,在弹出的如图5-35所示的继电器属性对话框中,在Component Value一栏中将默认值更改为5 v
图5-34更改电机属性
图5-35更改继电器属性
6.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
图5-36 电机正反转流程图
(2)源程序设计
#include&reg51.h&&&&&&
p20=P2^0;&&&&&&&&&&&
//P2^0的功能是控制三极管的导通和截止
p21=P2^1;&&&&&&&&&&&
//P2^1的功能是控制三极管的导通和截止
p30=P3^0;&&&&&&&&&&&
//声明直流电机的正传位置
p31=P3^1;&&&&&&&&&&&
//声明直流电机的反转位置
p32=P3^2;&&&&&&&&&&&
//声明直流电机的停止位置
void main()
while(1)&&&&&&&&&&&&&&
//无穷循环
&&&&&&&&&&&
if(p30==0)&& //若按下p30
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
p20=1;&& //P2^0控制的三极管截止
//P2^1控制的三极管导通,线圈吸合,两者共同控制电机正转
&&&&&&&&&&&
&&&&&&&&&&&
if(p31==0)//若按下p31
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
p20=0;//P2^0控制的三极管导通,线圈吸合
&&&&&&&&&&&&&&&&&&
p21=1;//P2^1控制的三极管截止,两者共同控制电机反转
&&&&&&&&&&&
&&&&&&&&&&&
if(p32==0)//若按下p32
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
p20=1;//P2^0控制的三极管截止
&&&&&&&&&&&&&&&&&&
p21=1;//P2^1控制的三极管截止,两者共同控制电机停转
&&&&&&&&&&&
}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
6.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到dianji.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图所示。
图5-37为电机正转运行状态,按下“正转”按钮,P2.0口输出高电平,三极管处于导通状态,继电器吸合,从而使电机左端为高电平。右端依然为低电平(由于P2.1&&&&&&
口输出低电平,三极管处于截止状态,继电器不吸合)。在电机两端有一个+5v的电压,所以电机正转。
图5-38为电机反转运行状态,按下“反转”按钮,原理与正转的情况恰好相反,故不详述。但请大家关注两个图中继电器开关的状态,是恰好相反的。这样在两种情况下,电机的转向是相反的。
图5-37电机正转运行状态
图5-38电机反转运行状态
6.5& 扩展练习
在此子情境的基础上加上两个按键:加速和减速。控制电机的转速。想想硬件和软件应该做如何改动。
子情境七:用ADC0809实现电压表
7.1子情境内容:利用单片机AT89C52和ADC0809设计一个数字电压表,能够测量0-5V之间的电压值,用四位数码管显示。
7.2 子情境目标:
(1)掌握PROTEUS中电压探针和电压表的使用方法
(2)通过制作简易电压表,学会AD转换芯片在单片机应用系统中的硬件接口技术和编程方法。
7.3 知识点链接
了解ADC0809芯片的功能以及使用方法
(1)功能:ADC0809芯片为8通道模/数转换器,可以和单片机直接接口,将IN0~IN7任何一通道输入的模拟电压转换成八位二进制数,在时钟为500KHZ时,一次变换时间约为100us。
(2)使用方法:28脚双列直插式封装如图5-39所示,各引脚功能如下:
图5-39& ADC0809引脚图
IN0~IN7:8个通道的模拟量输入端。可输入0~5V待转换的模拟电压。本实例中采用IN0通道。
ADDA、ADDB、ADDC:为地址输入线,用于选通IN0~IN7上的一路模拟量输入,通道选择表如表5-1所示。在本实例中直接将ADDA、ADDB、ADDC接地,选通IN0通道。
文本框: 表5-1 0809输入通道地址
CLK:外部时钟信号输入端。ADC0809的典型时钟频率为640kHz,转换时间约为100μs。本实例中产生时钟信号的方法由软件来提供。
START:启动转换信号输入端。在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换;A/D转换期间,START应保持低电平。
D0~D7:8位转换结果输出端。三态输出,D7是最高位,D0是最低位。
EOC:ADC0809自动发出的转换状态端,EOC=0,表示正在进行转换;EOC=1,表示转换结束;
OE:转换数据允许输出控制端。OE=0,表示禁止输出;OE=1,表示允许输出。
REF(-)、REF(+):参考电压输入端。ADC0809的参考电压为+5V。
ALE:为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。所以本实例中将ALE与START相连。由于ALE和START连在一起,因此ADC0809启动转换同时也在锁存通道地址。
7.4 任务步骤
步骤一:PROTEUS电路设计,利用单片机AT89C52和ADC0809设计一个数字电压表的原理图如图5-40所示。
图5-40& ADC0809与单片机的接口电路
1、选取元器件
&#9312;单片机:AT89C52
&#9313;电阻:RES*
&#9314;4位共阴极的数码管:7SEG-MPX4-CC
&#9315;A/D转换芯片:ADC0808(代替0809)
&#9316;电位器:POT-LOG
&#9317;瓷片电容:CAP
&#9318;晶振:CRYSTAL
2、放置元器件、放置电源和地、连线、元器件属性设置
数字电压表的原理图如图5-40所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。
(1)电压探针和电压表
单击工具栏中中的电压探针按钮,连接到要实时监控的电路上,以便仿真时观察该处电压的实时变化。见图5-40所示。
单击工具栏中的按钮(虚拟仪器),在对象选择器列表中选择DC&&&&&&&&&&&&&&&&
VOLTMETER(直流电压表),在ISIS编辑窗口中合适位置单击就可以将电压表放置
好了。通过电压表可以观察到电位器电压的实时变化。
(2)ADC0809与单片机的接口电路需要做些说明
ADDA、ADDB、ADDC:在本实例中直接将ADDA、ADDB、ADDC接地,选通IN0通道。
CLK:在图5-40所示的电路中,CLK与P3^3口相连,单片机通过软件的方法在P3^3口输出时钟信号供ADC0809使用。
START:在图5-40所示的电路中,START与P3^0口相连。
D0~D7:8位转换结果输出端。在图5-40所示的电路中,与P0口相连,从P0口读出转换结果。
EOC:ADC0809自动发出的转换状态端,在图5-40所示的电路中,EOC与P3^2口相连。
OE:转换数据允许输出控制端,在图5-40所示的电路中,OE与P3^1口相连。
ALE:在图5-40所示的电路中将ALE与START相连。由于ALE和START连在一起,因此ADC0809启动转换同时也在锁存通道地址。
7.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
图5-41 电压表流程图
(2)源程序设计
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
uchar disp[4];& //定义数组变量
sbit ST=P3^0;&& //定义START引脚
sbit OE=P3^1;&& //定义OE引脚
sbit EOC=P3^2;& //定义EOC引脚
sbit CLK=P3^3;& //定义CLOCK引脚
sbit p17=P1^7;& //定义数码管小数点
int getdata,
void delay(uint z);
void display();
void initial();
void main()
initial();& //调用初始化函数
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
OE=0; //刚开始禁止将转换结果输出
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
ST=0;&&&&&&&&&
//启动AD转换开始
&&&&&&&&&&&&&&&&&&&
while(EOC==0);&& //等待转换结束
&&&&&&&&&&&&&&&&&&&
OE=1;&&&&&&&&&
//允许转换结果输出
&&&&&&&&&&&&&&&&&&&
getdata=P0;&&&
//将转换结果赋值给变量getdata
&&&&&&&&&&&&&&&&&&&
OE=0;&&&&&&&&&
//禁止转换结果输出
&&&&&&&&&&&&&&&&&&&
temp=getdata*1.0/255*5000;& //将得到的数据进行处理
&&&&&&&&&&&&&&&&&&&
disp[0]=&&&&&
//取得个位数
&&&&&&&&&&&&&&&&&&&
disp[1]=temp/10;&& //取得十位数
&&&&&&&&&&&&&&&&&&&
disp[2]=temp/100;& //取得百位数
&&&&&&&&&&&&&&&&&&&
disp[3]=temp/1000;&&&
//取得千位数
&&&&&&&&&&&&&&&&&&&
display();&&&&
//调用显示子程序
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
}&&&&&&&&&&&&&&&&&
void delay(uint z)
for(x=z;x&0;x--)
&&&&&&&&&&&&
for(y=110;y&0;y--);
void initial()&&
//中断服务程序初始化
TMOD=0x01;
void timer0() interrupt 1&&
//给AD0809提供25KHZ的时钟脉冲
display()&&&
//将显示结果在数码管中显示
P1=table[disp[0]];
P1=table[disp[1]];
P1=table[disp[2]];
P1=table[disp[3]];
p17=1;&&&&&&&&&&&&&&&
7.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到dianya.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图所示。
图5-42中,电位器调节到最左端,为最高电压。图5-43中电压探针和电压表实时显示此电压值。
调节电位器,IN0通道获得的模拟量都可以在数码管上实时显示。如图&&&&
5-44调节电位器后采集到的电压。图5-45中电压探针和电压表实时显示此电压值。
图5-42 电位器调节到最左端采集到的最高电压
图5-43 电压表和电压探针实时显示
图5-44 调节电位器后采集到的电压
图5-45 调节电位器后采集到的电压用电压表和电压探针实时显示
7.5& 扩展练习
试着扩大电压表的量程,做一个最大量程为12V的电压表。想想硬件和软件应该做如何改动。
子情境八:1602液晶显示器
8.1子情境内容:利用单片机AT89C52控制液晶显示器(Liquid Crystal
Display,简称为LCD)实时显示。在1602液晶的第一行显示“I LOVE MY
FAMILY”,在第二行显示“”。
8.2 子情境目标:
(1)掌握1602液晶与单片机的接口电路
(2)通过控制LCD,学会LCD液晶模块在单片机应用系统中的编程方法。
8.3 知识点链接
了解LCD1602芯片的功能以及使用方法
(1)功能:本情境中所使用的液晶显示器型号为1602,意思是每行显示16个字符,一共可以显示两行。此液晶只能显ASCII字符,如数字、大小写字母、各种符号等。
(2)使用方法:1602液晶的引脚图如图5-45所示。
图5-45 1602液晶引脚图
接口说明如下:
&#9312;液晶1,2端为电源;15、16为背光电源;为防止直接加5V电压烧坏背光灯,在15脚串接一个10欧姆电阻用于限流。
&#9313;液晶3端为液晶对比度调节端,通过一个10K欧姆电位器接地来调节液晶显示对比度。首次使用时,在液晶上电状态下,调节至液晶上面一行显示出黑色小格为止。
&#9314;液晶4端为向液晶控制器写数据/写命令选择端,接单片机的P3.0口。
&#9315;液晶5端为读/写选择端,因为我们不从液晶读取任何数据,只向其写入命令和显示数据,因此此端始终选择写状态,我们直接将它接地。
&#9316;&&&
液晶6端为使能信号,是操作时必需的信号,接单片机的P3.1口
&#9317;&&&
液晶7-14端为八位数据口,接单片机的P2口。
8.4 任务步骤
8.4.1 步骤一:PROTEUS电路设计,利用单片机AT89C52控制液晶显示器实时显示的原理图如图5-46所示。
图5-46 1602液晶原理图
1、选取元器件
&#9312;单片机:AT89C52
&#9313;电位器:POT-LOG
&#液晶显示器:LM016L
2、放置元器件、放置电源和地、连线、元器件属性设置
单片机AT89C52控制液晶显示器实时显示的原理图如图5-46所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。
(1)做标记
8.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
图5-47 液晶显示流程图
(2)源程序设计
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LIKE MY FAMILY";
uchar code table1[]="";
lcden=P3^1;&&&
//液晶使能端
lcdrs=P3^0;&&&
//液晶数据命令选择端
void delay(uint z)
for(x=z;x&0;x--)
&&&&&&&&&&&&
for(y=110;y&0;y--);
void write_com(uchar com)//写命令函数
lcdrs=0;&&&&&&&&
//选择写命令模式
P2=&&&&&&&&&
//将要写的命令字送到数据总线上
delay(5);&&&&&&&
//稍作延时以待数据稳定
lcden=1;&&&&&&&&
//使能端给一高脉冲,因为初始化函数中已经将lcden置为0
delay(5);&&&&&&&
//稍作延时
lcden=0;&&&&&&&&
//将使能端置0以完成高脉冲
void write_data(uchar date)//写数据函数
lcdrs=1;&&&&&&
//选择写数据模式
//将要写的数据送到数据总线上
delay(5);&&&&&&&
//稍作延时以待数据稳定&&&&
lcden=1;&&&&&&&&
//使能端给一高脉冲,因为初始化函数中已经将lcden置为0
delay(5);&&&&&&&
//稍作延时
lcden=0;&&&&&&&
//将使能端置0以完成高脉冲
void init()
lcden=0;&&&&&
//初始化函数中将lcden置为0
write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c); //设置开显示,不显示光标
write_com(0x06); //写一个字符后地址指针自动加一
write_com(0x01); //显示清零,数据指针自动清零
void main()
init();& //调用初始化函数
write_com(0x80);&&
//将数据指针定位到第一行第一个字处
for(num=0;num&16;num++)&
//使用FOR语句逐个写完要显示的字符
&&&&&&&&&&&&
write_data(table[num]);
&&&&&&&&&&&&
delay(5);& //在每两个字符间做简短延时
write_com(0x80+0x40);//重新定位数据指针,将数据指针定位到第二行第一个字处
for(num=0;num&12;num++)//使用FOR语句逐个写完要显示的字符
&&&&&&&&&&&&
write_data(table1[num]);
&&&&&&&&&&&&
delay(5);//在每两个字符间做简短延时
8.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到yejing.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图5-48所示。
在1602液晶的第一行从第一个字符开始显示“I LOVE MY
FAMILY”,在第二行也从第一个字符开始显示“”。
图5-48& 1602液晶显示图
8.5& 扩展练习
另外一种型号的液晶显示器12864可以显示汉字,试着仿真一下显示“扬州工业职业技术学院 电子系”这几个字。
子情境九:简易秒表制作
9.1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。
9.2 子情境目标:
(1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路
(2)学习定时/计数器、中断技术的综合运用并会使用简易键盘
9.3 知识点链接
独立式按键的使用:图5-49为按键与单片机的连接图。
机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图5-50所示,抖动时间的长短与开关的机械特性有关,一般为5~10ms。
在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。本子情境中采用软件去抖。
按键与单片机连接图&&&&&&&
图5-50 按键被按下时电压的变化
9.4 任务步骤
9.4.1 步骤一:PROTEUS电路设计,简易秒表的原理图如图5-51所示。
1、选取元器件
&#9312;单片机:AT89C51
&#9313;两位共阴极蓝色数码管:7SEG-MPX2-CC-BLUE
&#9314;排阻:RESPACK-8
&#9315;按钮:BUTTON
2、放置元器件、放置电源和地、连线、元器件属性设置
简易秒表的原理图如图5-51所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。
图5-51 简易秒表的原理图
9.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
图5-52 秒表流程图
(2)源程序设计
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
key1=P3^0;&&&&&&&&&&&&&
//定义"启动"按钮
key2=P3^1;&&&&&&&&&&&&&
//定义"停止"按钮
key3=P3^2;&&&&&&&&&&&&&
//定义"复位"按钮
uchar temp,aa,shi,
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};&&&&&&
//共阴极数码管编码
void display(uchar shi,uchar ge);& //声明显示子函数
void delay(uint
z);&&&&&&&&&&&&&&&&&
//声明延时子函数
init();&&&&&&&&&&&&&&&&&&
//声明初始化函数
void main()
init();&&&&&&&&&&&&&&&&&&&&&&&&
//调用初始化子程序
{&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
if(key1==0)&&&&&&&&&&
//检测"启动"按钮是否按下
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
delay(10);&&&&&&&
//延时去抖动
&&&&&&&&&&&&&&&&&&&
if(key1==0)&&&&&&&&
//再次检测"启动"按钮是否按下
&&&&&&&&&&&&&&&&&&&
while(!key1);&&
//松手检测,若按键没有释放,key1始终为0,那么!key1始终为1,程序就一直停在此while语句处
&&&&&&&&&&&&&&&&&&&&&&&&&&&
TR0=1;&&&&&&
//启动定时器开始工作
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
if(key2==0)&&&&&&&&&&&
//检测"停止"按钮是否按下&
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
delay(10);&&&&&&&&&
//延时去抖动
&&&&&&&&&&&&&&&&&&&
if(key2==0)&&&&&&&
//再次检测"停止"按钮是否按下
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
while(!key2);&& //松手检测
&&&&&&&&&&&&&&&&&&&&&&&&&&
TR0=0;&&&&&&&
//关闭定时器
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
if(key3==0)&&&&&&&&&&
//检测"复位"按钮是否按下&&
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
delay(10);&&&&&&&&&&&&
//延时去抖动
&&&&&&&&&&&&&&&&&&&
if(key3==0)&&&&&&
//再次检测"复位"按钮是否按下
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
while(!key3);& //松手检测
&&&&&&&&&&&&&&&&&&&&&&&&&&
temp=0;&&&&&&
//将变量temp的值清零
&&&&&&&&&&&&&&&&&&&&&&&&&&
shi=0;&&&&&&
//将十位清零
&&&&&&&&&&&&&&&&&&&&&&&&&&
ge=0;&&&&&&&&&
//将个位清零
&&&&&&&&&&&&&&&&&&&&&&&&&&
TR0=0;&&&&&&
//关闭定时器
&&&&&&&&&&&&&&&&&&&
}&&&&&&&&&&
&&&&&&&&&&&&
}&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&
display(shi,ge);&&
//调用显示子函数
void delay(uint z)&&
//延时子函数
for(x=z;x&0;x--)
&&&&&&&&&&&&
for(y=110;y&0;y--);
void display(uchar shi,uchar ge)& //显示子程序
{&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
P0=table[shi];
&&&&&&&&&&&&
delay(10);
&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
P0=table[ge];
&&&&&&&&&&&&
delay(10);&&&&&&&&&&&
//使用动态扫描的方法实现数码管显示
init()&&&&&&&&&
//初始化子程序
TMOD=0x01;&&&&&&&&&&&
//使用定时器T0的方式1
TH0=()/256;
TL0=()%6;&&
//定时50ms中断一次
EA=1;&&&&&&&&&&&&&&&&&&&&&
//中断总允许
ET0=1;&&&&&&&&&&&&&&&&
//允许定时器T0中断
void timer0() interrupt 1
TH0=()/256;//重新赋初值
aa++;&&&&&&&&&&&&&&&&&&
//中断一次变量aa的值加1
if(aa==20)&&&&&&&&&&
//中断20次后,定时时间为20*50ms=1000ms=1s,将变量temp的值加1
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
if(temp==60)&& //秒表到达60s后回零
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
shi=temp0/10;
&&&&&&&&&&&&&&&&&&&
ge=&&&&&&&&&&
//分离个位和十位
9.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到miaobiao.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图5-53所示。
按下“启动”按钮后,秒表开始计时,如图5-53所示。
按下“停止”按钮,秒表停止计时。
按下“复位”按钮,秒表回到最初始的状态,如图5-54所示。
图5-53按下“启动”按钮后秒表开始计时
图5-54按下“复位”按钮后,秒表回到最初始的状态
9.5& 扩展练习
此子情境设计的秒表只能显示两位整数,如果要记录110跨栏12:88秒的成绩,则必须再增加两位数码管来显示小数位。想想硬件和软件应该做如何改动。
子情境十:点阵LED简单图形显示技术
10.1子情境内容:利用单片机AT89C52在8&8点阵上逐次显示心形、圆形和菱形图。
10.2 子情境目标:
(1)通过学习点阵LED显示技术,掌握单片机与点阵的接口电路。
(2)进一步熟悉单片机I/O口的运用方法,了解动态显示的编程方法
10.3 知识点链接
怎样利用单片机系统实现LED点阵显示:
一般的LED显示屏是用许多发光二极管排成行与列构成点阵,点亮不同位置的放光二极管,就可以显示不同的图形或文字符号。在电子市场,有专门的LED点阵模块产品,本子情境中使用的是8&8点阵模块,它有64个像素,可以显示一些较为简单的字符或图形。
图5-55是LED点阵模块内部结构等效电路。从图中可以看出,它有8行(Y0-Y7),8列(X0-X7),对外共有16个引脚,其中8根行线用数字0-7表示,8根列线用字母A-H表示。
点亮跨接在某行某列的二极管的条件是:对应的行为高电平,对应的列为低电平,例如Y0=1,X0=0点亮的是第一个发光二极管。在很短的时间内依次点亮多个发光二极管,就可以看到多个发光二极管同时发光,即可以看到显示的数字、字母和图形符号。
图5-55& LED点阵模块内部结构等效电路
10.4 任务步骤
10.4.1 步骤一:PROTEUS电路设计,LED点阵的原理图如图5-56所示。
1、选取元器件
&#9312;单片机:AT89C52
&#9313;点阵:MATRIX-8&8-RED
2、放置元器件、放置电源和地、连线、元器件属性设置
点阵模块的原理图如图5-56所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。
图5-56& LED点阵的原理图
10.4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
图5-57 点阵显示流程图
(2)源程序设计
#include &AT89X52.H&
unsigned char code
tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code digittab[][]=
{{0x1c,0x22,0x42,0x84,0x84,0x42,0x22,0x1c},//心形
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
{0x00,0x3c,0x42,0x81,0x81,0x81,0x42,0x3c},//圆形
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
{0x00,0x18,0x24,0x42,0x81,0x42,0x24,0x18},//菱形
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
unsigned char
unsigned char
void main(void)
TMOD=0x01;&&&&&&&&&
//使用定时器T0的方式1
& TH0=()/256;
& TL0=()%6;&
//5ms中断一次
EA=1&&&&&&&&&&&&&&&&&&&
//中断总允许
TR0=1;&&&&&&&&&&&&&&&
//启动定时器开始工作
ET0=1;&&&&&&&&&&&&&&
//允许定时器T0中断&&&&&&&&&&
& while(1)
}&&&&&&&&&&&&&&&&&&
//等待中断产生
void t0(void) interrupt 1 using
//中断服务程序
TH0=()/256;&&&&&&&&&&&&&
//重新赋初值
TL0=()%6;&&&&&&
P3=tab[cnta];&&&&&&&&&&&&&&&&&
& P1=digittab[cntb][cnta];//行数保持不变,列每中断一次加1
if(cnta==8)&&&&&&&
//一行只有8个数码,列加到8之后回零
timecount++;&&&
if(timecount==200)&&&&&
//200*5=1000ms后行加1,控制每个图形显示的时间为1000ms,即为1s
timecount=0;
if(cntb==3)&&&&&
//只有三行数码,行加到3之后回零
10.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C52器件,在弹出属性编辑对话框Program
File一栏中单击打开按钮,出现文件浏览对话框,找到dianzhen.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图所示。
图5-58 显示心形图形;
图5-59 显示圆形图形;
图5-60 显示心形图形;
图5-58 显示心形图形;
图5-59 显示圆形图形
图5-60 显示心形图形;
10.5& 扩展练习
试着在8&8点阵上逐个0-9这几个数字。
(1)P0口的1、3、5、7个引脚控制发光二极管1秒钟闪烁一次。
(2)用单片机控制扬声器产生“滴、滴、滴…”的报警声从P1.0端口输出,产生频率为1KHZ。
(3)用单片机趋动蜂鸣器产生1KHZ的频率的声音,持续0.1s,停0.1s,然后从头执行。
(4)8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
(5)用单片机趋动4位共阳极数码管同时点亮,依次显示从0到F,时间间隔1秒。此过程一直循环。
(6)用动态扫描方法在6位共阴极数码管上显示出稳定的654321。
(7)利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以
1HZ闪烁,设晶振频率为12MHz。
(8)利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数。
(9)用定时器T0以间隔500ms在6位数码管上依次显示0、1、2、3….C、D、E、F,一直重复下去。
(10)主程序中P1口控制的8个流水灯1s钟闪烁一次,中断发生后(在单片机P3.2引脚上有低电平),进行单灯左移三次。
(11)主程序中数码管从0至9顺序显示数字,中断发生后,8个流水灯一起闪烁三次。
(12)控制单片机输出不同占空比PWM信号来控制直流电机的转速,分别让PWM为1:3,2:2,3:1。
(13)用单片机控制步进电机,使用按键分别控制电机正转、反转、加速、减速。
(14)用单片机控制DAC0832芯片输出电流,让发光二极管由灭均匀变到最亮,再由最亮均匀熄灭。
(15)用单片机控制ADC0809测量电阻的阻值。
(16)用单片机控制液晶,实现第一行从右侧移入“Good morning!”同时第二行从左侧移入“Hello
everyone!”
(17)用单片机控制12864液晶,能在液晶上显示图片。
(18)用液晶做一个可以预置时间的倒计时简易秒表,利用按键构成键盘实现秒表的启动、停止与复位。
(19)使用1302时钟芯片和1602液晶仿真做一个实时时钟。
(20)在8&8点阵上实现“GOOD LUCK TO YOU”这行字循环显示。
(21)在8&8点阵上实现先让横向亮条从上至下流动,再让竖向亮条从左至右流动,一直循环下去。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 protues简介 的文章

 

随机推荐