欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Proteus仿真单片机实验模拟资料.doc

    • 资源ID:809421       资源大小:7.99MB        全文页数:47页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Proteus仿真单片机实验模拟资料.doc

    目录目录引言.1实验 1 PROTUES 环境及 LED 闪烁综合实验.6实验 2 多路开关状态指示.9实验 3 报警产生器.12实验 4 I/O 并行口直接驱动 LED 显示.15实验 5 按键识别方法之一.18实验 6 一键多功能按键识别技术.21实验 7 定时计数器 T0 作定时应用技术.24实验 8 定时计数器 T0 作定时应用技术.27实验 9 “嘀、嘀、”报警声.31实验 10 8X8 LED 点阵显示技术 .35实验 11 电子琴.39引言引言 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多 种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以 单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中, 开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。 利用 Proteus 我们可以很好地解决这个问题,由此我们可以快速地建立一个单片机仿真系统。1. Proteus 介绍介绍Proteus 是英国 Labcenter Electronics 公司开发的一款电路仿真软件,软件由两部分组成: 一部分是智能原理图输入系统 ISIS(Intelligent Schematic Input System)和虚拟系统模型 VSM(Virtual Model System);另一部分是高级布线及编辑软件 ARES (Advanced Routing and Editing Software)也就是 PCB。1.1 Proteus VSM 的仿真的仿真Proteus 可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus 可提供 30 多种元件库,超过 8000 种模拟、数字元器件。可以按照设计的要求 选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件 自己创建。 除拥有丰富的元器件外,Proteus 还提供了各种虚拟仪器,如常用的电流表,电压表, 示波器,计数/定时/频率计,SPI 调试器等虚拟终端。支持图形化的分析功能等。Proteus 特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真 8051,PIA,AVR,ARM 等多种系列的处理器。Protues 包含强大的调试工具,具有对寄存 器和存储器、断点和单步模式 IAR C-SPY, Keil, MPLAB 等开发工具的源程序进行调试的功 能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视 化进行仿真。1.2 Proteus PCBProteus 的 PCB 设计除了有自动布线仿真功能外,还集成了 PCB 设计,支持多达 16 个 布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行 PCB 设计。2. 一个基于一个基于 Protesus 的单片机实例的单片机实例2.1 软件的编写软件的编写本例题采用 8 个 LED,编写程序使之闪烁起来。 软件的编写是采用汇编语言,芯片的型号选择 AT89C51, 编写 LED.ASM 文件,利用 Proteus 本身的 51 汇编功能进行编译,编译成功后生成 LED.hex 文件。2.2 绘制绘制电路图电路图运行 Proteus 的 ISIS,进入仿真软件的主界面,如图 1 所示。主界面分为菜单栏,工具 栏,模型显示窗口,模型选择区,元件列表区等。图 1 ISIS 启动界面通过左侧的工具栏区的 P(从库中选择元件)命令,在 Pick devices 窗口中选择系统所需 元器件,还可以选择元件的类别,生产厂家等。本例所需主要元器件有:AT89C51 芯片, 电阻、电容、石英晶振和发光二极管,详见表 1。 表 1 元器件清单选择元器件后连接图 2 所示电路。图 2 电路原理图Microproccessor ICs 类的芯片的引脚与实际的芯片基本相同, 唯一的差别是隐去了 GND 和 VCC 引脚,系统默认的是把它们分别连接到地和+5V 直流电源。故在电路连线时 可以不考虑电源和地的连接。 电路连接完成后,选中 AT89C51 单击鼠标左键,打开“Edit Component”对话窗口如图 3 所示,可以直接在“Clock Frequency”后进行频率设定,设定单片机的时钟频率为 12MHz。在“Add/remove source file”栏中选择已经编好的 LED.asm 文件,然后单击“OK”按 钮保存设计。至此,就可以进行单片机的仿真。图 3 单片机属性的设定2.3 Proteus 仿真结果仿真结果单片机的仿真结果图如图 4,模拟信号经 A/D 转换后,结果送入单片机,再在数码管上 显示;通过调节可调电阻的阻值,可以得到不同的显示结果。仿真结果表明,系统达到了 预先的设计要求。 在仿真的过程中每个管脚旁边会出现一个小方块,红色的方快表示高电平,蓝色的表 示低电平。 通过方快颜色的变化可以很方便地知道每个管脚电平的变化,从而能对系统的 运行有更直观的了解,这对程序的调试有很大的帮助。 图 4 仿真结果3总结本文结合一个 LED 闪烁的单片机电路详细说明了 Proteus 在单片机开发中的应用。可 以看出,Proteus 功能十分强大,能仿真各种数字模拟电路,且操作简单,使用方便。能快 速地进行单片机仿真,加快系统开发的过程,降低开发成本。实验实验 1 PROTUES 环境及环境及 LED 闪烁综合实验闪烁综合实验1 实验任务 做单一灯的左移右移,硬件电路如图所示,八个发光二极管 L1L8 分别接在单片机 的 P1.0P1.7 接口上,输出“0”时,发光二极管亮,开始时 P1.0P1.1P1.2P1.3P1.7P1.6P1.0 亮,重复循环。 2 电路原理图 图 1 3 程序设计内容 我们可以运用输出端口指令 MOV P1,A 或 MOV P1,DATA,只要给累加器 值或常数值,然后执行上述的指令,即可达到输出控制的动作。 每次送出的数据是不同,具体的数据如下表 1 所示 :P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0说明 L8L7L6L5L4L3L2L1 11111110L1 亮 11111101L2 亮 11111011L3 亮11110111L4 亮 11101111L5 亮 11011111L6 亮 10111111L7 亮 01111111L8 亮4 程序框图图 25 汇编源程序ORG 0 START: MOV R2,#8 MOV A,#0FEH SETB C LOOP: MOV P1,A LCALL DELAY RLC A DJNZ R2,LOOP MOV R2,#8 LOOP1: MOV P1,A LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#20 ; D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END实验实验 2 多路开关状态指示多路开关状态指示 1 实验任务 如图 1 所示,AT89S51 单片机的 P1.0P1.3 接四个发光二极管 L1L4,P1.4P1.7 接了四个开关 K1K4,编程将开关的状态反映到发光二极管上。 (开关闭合,对应的灯亮, 开关断开,对应的灯灭) 。 2 电路原理图 图 1 3 程序设计内容 3.1 开关状态检测 对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用 JB P1.X,REL 或 JNB P1.X,REL 指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用 MOV A,P1 指令一次把 P1 端口的状态全部读入,然后取高 4 位的状态来指示。 3.2 输出控制 根据开关的状态,由发光二极管 L1L4 来指示,我们可以用 SETB P1.X 和 CLR P1.X 指令来完成,也可以采用 MOV P1,1111XXXXB 方法一次指示。 4 程序框图 读 P1 口数据到 ACC中 ACC内容右移 4 次 ACC内容与 F0H 相或 ACC内容送入 P1 口 图 2 5 解决方案方法一(汇编源程序) ORG 00H START: MOV A,P1 ANL A,#0F0H RR ARR A RR A RR A ORl A,#0F0H MOV P1,A SJMP START END方法二(汇编源程序) ORG 00H START: JB P1.4,NEXT1 CLR P1.0 SJMP NEX1 NEXT1: SETB P1.0 NEX1: JB P1.5,NEXT2 CLR P1.1 SJMP NEX2 NEXT2: SETB P1.1 NEX2: JB P1.6,NEXT3 CLR P1.2 SJMP NEX3 NEXT3: SETB P1.2 NEX3: JB P1.7,NEXT4 CLR P1.3 SJMP NEX4 NEXT4: SETB P1.3 NEX4: SJMP START END实验实验 3 报警产生器报警产生器 1 实验任务 用 P1.0 输出 1KHz 和 500Hz 的音频信号驱动扬声器,作报警信号,要求 1KHz 信号响 100ms,500Hz 信号响 200ms,交替进行,P1.7 接一开关进行控制,当开关合上响报警信号, 当开关断开告警信号停止,编出程序。 2 电路原理图 图 1 3 程序设计内容 3.1 信号产生的方法 500Hz 信号周期为 2ms,信号电平为每 1ms 变反 1 次,1KHz 的信号周期为 1ms,信号 电平每 500us 变反 1 次; 4 程序框图 图 2 5 汇编源程序FLAG BIT 00H ORG 00H START: JB P1.7,START JNB FLAG,NEXT MOV R2,#200 DV: CPL P1.0 LCALL DELY500 LCALL DELY500 DJNZ R2,DV CPL FLAG NEXT: MOV R2,#200 DV1: CPL P1.0 LCALL DELY500 DJNZ R2,DV1CPL FLAG SJMP START DELY500: MOV R7,#250 LOOP: NOP DJNZ R7,LOOP RET END实验实验 4 I/O 并行口直接驱动并行口直接驱动 LED 显示显示 1. 实验任务 如图 1 所示,利用 AT89S51 单片机的 P0 端口的 P0.0P0.7 连接到一个共阴数码管 的 ah 的笔段上,数码管的公共端接地。在数码管上循环显示 09 数字,时间间隔 0.2 秒。 2. 电路原理图 图 1 3 程序设计内容 (1) LED 数码显示原理 七段 LED 显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED 数码管的 ga 七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不 同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见 表 2 “0”3FH“8”7FH “1”06H“9”6FH “2”5BH“A”77H “3”4FH“b”7CH “4”66H“C”39H “5”6DH“d”5EH “6”7DH“E”79H “7”07H“F”71H (2) 由于显示的数字 09 的字形码没有规律可循,只能采用查表的方式来完成我们所需 的要求了。这样我们按着数字 09 的顺序,把每个数字的笔段代码按顺序排好!建立的表 格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。4程序框图图 25 汇编源程序ORG 0 START: MOV R1,#00HNEXT: MOV A,R1 MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A LCALL DELAY INC R1 CJNE R1,#10,NEXT LJMP START DELAY: MOV R5,#20 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END实验实验 5 按键识别方法之一按键识别方法之一1 实验任务 每按下一次开关 SP1,计数值加 1,通过 AT89S51 单片机的 P1 端口的 P1.0 到 P1.3 显示出其的二进制计数值。 2 电路原理图 3 程序设计方法 (1)其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我 们按下一个按键时,总希望某个命令只执行一次,而在按键按下的 过程中,不要有干扰进 来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想 要的。因此在按键按下的时候,图 2 要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下, 我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积, 这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这 些干扰 信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信 号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号 图如上图所示: 从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时 5ms 以上,从 而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下, 这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触 发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命 令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释 放的过程,显然释放的过程,就是使其恢复成高电平状态。 (1)对于按键识别的指令,我们依然选择如下指令 JB BIT,REL 指令是用来检测 BIT 是否为高电平,若 BIT1,则程序转向 REL 处执行程序,否则就继续向下执行程序。 或者是 JNB BIT,REL 指令是用来检测 BIT 是否为低电平,若 BIT0,则程序转向 REL 处执行程序,否则就继续向下执行程序。 (2)但对程序设计过程中按键识别过程的框图如右图所示:图 34 程序框图 图 46 汇编源程序ORG 0 START: MOV R1,#00H ;初始化 R1 为 0,表示从 0 开始计数 MOV A,R1 ; CPL A ;取反指令 MOV P1,A ;送出 P1 端口由发光二极管显示 REL: JNB P3.7,REL ;判断 SP1 是否按下 LCALL DELAY10MS ;若按下,则延时 10ms 左右 JNB P3.7,REL ;再判断 SP1 是否真得按下 INC R1 ;若真得按下,则进行按键处理,使 MOV A,R1 ;计数内容加 1,并送出 P1 端口由 CPL A ;发光二极管显示 MOV P1,A ; JNB P3.7,$ ;等待 SP1 释放 SJMP REL ;继续对 K1 按键扫描 DELAY10MS: MOV R6,#20 ;延时 10ms 子程序 L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RET END实验实验 6 一键多功能按键识别技术一键多功能按键识别技术 1实验任务 如图 1 所示,开关 SP1 接在 P3.7/RD 管脚上,在 AT89S51 单片机的 P1 端口接有四 个发光二极管,上电的时候,L1 接在 P1.0 管脚上的发光二极管在闪烁,当每一次按下开 关 SP1 的时候,L2 接在 P1.1 管脚上的发光二极管在闪烁,再按下开关 SP1 的时候,L3 接 在 P1.2 管脚上的发光二极管在闪烁,再按下开关 SP1 的时候,L4 接在 P1.3 管脚上的发光 二极管在闪烁,再按下开关 SP1 的时候,又轮到 L1 在闪烁了,如此轮流下去。 2电路原理图 图 1 3程序设计方法 (1)设计思想由来 在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是 因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同 的功能,我们给每个不同的功能模块用不同的 ID 号标识,这样,每按下一次按键,ID 的值是不相同的,所以单片机就很容易识别不同功能的身份了。 (2)设计方法 从上面的要求我们可以看出,L1 到 L4 发光二极管在每个时刻的闪烁的时间是受开关 SP1 来控制,我们给 L1 到 L4 闪烁的时段定义出不同的 ID 号,当 L1 在闪烁时,ID0; 当 L2 在闪烁时,ID1;当 L3 在闪烁时,ID2;当 L4 在闪烁时,ID3;很显然,只要 每次按下开关 K1 时,分别给出不同的 ID 号我们就能够完成上面的任务了。下面给出有关 程序设计的框图。 4程序框图 图 25 汇编源程序ID EQU 30H SP1 BIT P3.7 L1 BIT P1.0 L2 BIT P1.1L3 BIT P1.2 L4 BIT P1.3 ORG 0 MOV ID,#00H START: JB K1,REL LCALL DELAY10MS JB K1,REL INC ID MOV A,ID CJNE A,#04,REL MOV ID,#00H REL: JNB K1,$ MOV A,ID CJNE A,#00H,IS0 CPL L1 LCALL DELAY SJMP START IS0: CJNE A,#01H,IS1 CPL L2 LCALL DELAY SJMP START IS1: CJNE A,#02H,IS2 CPL L3 LCALL DELAY SJMP START IS2: CJNE A,#03H,IS3 CPL L4 LCALL DELAY SJMP START IS3: LJMP START DELAY10MS: MOV R6,#20 LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET DELAY: MOV R5,#20 LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END实验实验 7 定时计数器定时计数器 T0 作定时应用技术作定时应用技术 1 实验任务 用 AT89S51 单片机的定时/计数器 T0 产生一秒的定时时间,作为秒计数时间,当一 秒产生时,秒计数加 1,秒计数到 60 时,自动从 0 开始。硬件电路如下图所示 2 电路原理图 3程序设计内容 AT89S51 单片机的内部 16 位定时/计数器是一个可编程定时/计数器,它既可以工作 在 13 位定时方式,也可以工作在 16 位定时方式和 8 位定时方式。只要通过设置特殊功能 寄存器 TMOD,即可完成。定时/计数器何时工作也是通过软件来设定 TCON 特殊功能寄 存器来完成的。 现在我们选择 16 位定时工作方式,对于 T0 来说,最大定时也只有 65536us,即 65.536ms,无法达到我们所需要的 1 秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取 T0 的最大定时为 50ms,即要定时 1 秒需要经过 20 次的 50ms 的定时。对于这 20 次我们就可以采用软件的方法来统计了。 因此,我们设定 TMOD00000001B,即 TMOD01H 下面我们要给 T0 定时/计数器的 TH0,TL0 装入预置初值,通过下面的公式可以计算 出 TH0(21650000) / 256 TL0(21650000) MOD 256 当 T0 在工作的时候,我们如何得知 50ms 的定时时间已到,这回我们通过检测 TCON 特殊功能寄存器中的 TF0 标志位,如果 TF01 表示定时时间已到。 5 程序框图 图 2 6 汇编源程序(查询法)SECOND EQU 30H TCOUNT EQU 31HORG 00H START: MOV SECOND,#00H MOV TCOUNT,#00H MOV TMOD,#01H MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0 DISP: MOV A,SECOND MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,B MOVC A,A+DPTR MOV P2,A WAIT: JNB TF0,WAIT CLR TF0 MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT MOV A,TCOUNT CJNE A,#20,NEXT MOV TCOUNT,#00H INC SECOND MOV A,SECOND CJNE A,#60,NEX MOV SECOND,#00H NEX: LJMP DISP NEXT: LJMP WAIT TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END实验实验 8 定时计数器定时计数器 T0 作定时应用技术作定时应用技术 1 实验任务 用 AT89S51 的定时/计数器 T0 产生 2 秒钟的定时,每当 2 秒定时到来时,更换指示 灯闪烁,每个指示闪烁的频率为 0.2 秒,也就是说,开始 L1 指示灯以 0.2 秒的速率闪烁, 当 2 秒定时到来之后,L2 开始以 0.2 秒的速率闪烁,如此循环下去。0.2 秒的闪烁速率也 由定时/计数器 T0 来完成。 2 电路原理图 3.程序设计内容 (1)由于采用中断方式来完成,因此,对于中断源必须它的中断入口地址,对于定时/计 数器 T0 来说,中断入口地址为 000BH,因此在中断入口地方加入长跳转指令来执行中断 服务程序。书写汇编源程序格式如下所示: ORG 00H LJMP START ORG 0BH ;定时/计数器 T0 中断入口地址 LJMP INT_T0 START: NOP ;主程序开始 . INT_T0: PUSH ACC ;定时/计数器 T0 中断服务程序 PUSH PSW POP PSW POP ACC RETI ;中断服务程序返回 END (2)定时 2 秒,采用 16 位定时 50ms,共定时 40 次才可达到 2 秒,每 50ms 产生一中断, 定时的 40 次数在中断服务程序中完成,同样 0.2 秒的定时,需要 4 次才可达到 0.2 秒。对 于中断程序,在主程序中要对中断开中断。 (3)由于每次 2 秒定时到时,L1L4 要交替闪烁。采用 ID 来号来识别。当 ID0 时, L1 在闪烁,当 ID1 时,L2 在闪烁;当 ID2 时,L3 在闪烁;当 ID3 时,L4 在闪烁 5 程序框图 T0 中断服务程序框图 主程序框图 6.汇编源程序TCOUNT2S EQU 30H TCNT02S EQU 31H ID EQU 32H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV TCOUNT2S,#00HMOV TCNT02S,#00H MOV ID,#00H MOV TMOD,#01H MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $ INT_T0: MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT2S MOV A,TCOUNT2S CJNE A,#40,NEXT MOV TCOUNT2S,#00H INC ID MOV A,ID CJNE A,#04H,NEXT MOV ID,#00H NEXT: INC TCNT02S MOV A,TCNT02S CJNE A,#4,DONE MOV TCNT02S,#00H MOV A,ID CJNE A,#00H,SID1 CPL P1.0 SJMP DONE SID1: CJNE A,#01H,SID2 CPL P1.1 SJMP DONE SID2: CJNE A,#02H,SID3 CPL P1.2 SJMP DONE SID3: CJNE A,#03H,SID4 CPL P1.3 SID4: SJMP DONE DONE: RETI END实验实验 9 “嘀、嘀、嘀、嘀、”报警声报警声 1 实验任务 用 AT89S51 单片机产生“嘀、嘀、”报警声从 P1.0 端口输出,产生频率为 1KHz,根据上面图可知:1KHZ 方波从 P1.0 输出 0.2 秒,接着 0.2 秒从 P1.0 输 出电平信号,如此循环下去,就形成我们所需的报警声了。 2 电路原理图 图 1 3 程序设计方法 (1)生活中我们常常到各种各样的报警声,例如“嘀、嘀、”就是常见的一种声音报警声, 但对于这种报警声,嘀 0.2 秒钟,然后断 0.2 秒钟,如此循环下去,假设嘀声的频率为 1KHz,则报警声时序图如下图所示: 上述波形信号如何用单片机来产生呢? (2) 由于要产生上面的信号,我们把上面的信号分成两部分,一部分为 1KHZ 方波,占 用时间为 0.2 秒;另一部分为电平,也是占用 0.2 秒;因此,我们利用单片机的定时/计数 器 T0 作为定时,可以定时 0.2 秒;同时,也要用单片机产生 1KHZ 的方波,对于 1KHZ 的 方波信号周期为 1ms,高电平占用 0.5ms,低电平占用 0.5ms,因此也采用定时器 T0 来完 成 0.5ms 的定时;最后,可以选定定时/计数器 T0 的定时时间为 0.5ms,而要定时 0.2 秒则 是 0.5ms 的 400 倍,也就是说以 0.5ms 定时 400 次就达到 0.2 秒的定时时间了。 5 程序框图 主程序框图 中断服务程序框图 图 26 汇编源程序T02SA EQU 30H T02SB EQU 31H FLAG BIT 00H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV T02SA,#00H MOV T02SB,#00H CLR FLAG MOV TMOD,#01H MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $ INT_T0: MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 INC T02SAMOV A,T02SA CJNE A,#100,NEXT INC T02SB MOV A,T02SB CJNE A,#04H,NEXT MOV T02SA,#00H MOV T02SB,#00H CPL FLAG NEXT: JB FLAG,DONE CPL P1.0 DONE: RETI END实验实验 10 8X8 LED 点阵显示技术点阵显示技术 1 实验任务 在 8X8 LED 点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑 移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。 2 电路原理图 3 程序设计内容 (1) 8X8 点阵 LED 工作原理说明 8X8 点阵 LED 结构如下图所示:图 2从图 2 中可以看出,8X8 点阵共需要 64 个发光二极管组成,且每个发光二极管是放 置在行线和列线的交叉点上,当对应的某一列置 1 电平,某一行置 0 电平,则相应的二极 管就亮;因此要实现一根柱形的亮法,如图 49 所示,对应的一列为一根竖柱,或者对应的 一行为一根横柱,因此实现柱的亮的方法如下所述: 一根竖柱:对应的列置 1,而行则采用扫描的方法来实现。 一根横柱:对应的行置 0,而列则采用扫描的方法来实现。 5汇编源程序ORG 00H START: NOP MOV R3,#3 LOP2: MOV R4,#8 MOV R2,#0 LOP1: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2 MOVC A,A+DPTRMOV P3,A INC R2 LCALL DELAY DJNZ R4,LOP1 DJNZ R3,LOP2MOV R3,#3 LOP4: MOV R4,#8 MOV R2,#7 LOP3: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2 MOVC A,A+DPTR MOV P3,A DEC R2 LCALL DELAY DJNZ R4,LOP3 DJNZ R3,LOP4MOV R3,#3 LOP6: MOV R4,#8 MOV R2,#0 LOP5: MOV P3,#00H MOV DPTR,#TABB MOV A,R2 MOVC A,A+DPTR MOV P1,A INC R2 LCALL DELAY DJNZ R4,LOP5 DJNZ R3,LOP6MOV R3,#3 LOP8: MOV R4,#8 MOV R2,#7 LOP7: MOV P3,#00H MOV DPTR,#TABB MOV A,R2 MOVC A,A+DPTR MOV P1,A DEC R2 LCALL DELAY DJNZ R4,LOP7 DJNZ R3,LOP8LJMP STARTDELAY: MOV R5,#10 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RETTABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH TABB: DB 01H,02H,04H,08H,10H,20H,40H,80H END实验实验 11 电子琴电子琴 1 实验任务 (1)由 4X4 组成 16 个按钮矩阵,设计成 16 个音。 (2)可随意弹奏想要表达的音乐。 2 电路原理图 图 1 3 相关程序内容 (1)4X4 行列式键盘识别; (2)音乐产生的方法; 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用 不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非 常方便,我们可以利用单片机的定时/计数器 T0 来产生这样方波频率信号,因此,我们只 要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机 12MHZ 晶振为例,例出高 中低音符与单片机计数 T0 相关的计数值如下表所示 音符频率 (HZ)简谱码(T 值)音符频率 (HZ)简谱码(T 值) 低 1 DO26263628# 4 FA#74064860 #1 DO#27763731中 5 SO78464898 低 2 RE29463835# 5 SO#83164934 #2 RE#31163928中 6 LA88064968 低 3 M33064021# 693264994 低 4 FA34964103中 7 SI98865030 # 4 FA#37064185高 1 DO104665058 低 5 SO39264260# 1 DO#110965085 # 5 SO#41564331高 2 RE117565110 低 6 LA44064400# 2 RE#124565134 # 646664463高 3 M131865157 低 7 SI49464524高 4 FA139765178 中 1 DO52364580# 4 FA#148065198 # 1 DO#55464633高 5 SO156865217 中 2 RE58764684# 5 SO#166165235 # 2 RE#62264732高 6 LA176065252 中 3 M65964777# 6186565268 中 4 FA69864820高 7 SI196765283 下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的 数据 低音 019 之间,中音在 2039 之间,高音在 4059 之间 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,65110,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 2、音乐的音拍,一个节拍为单位(C 调) 曲调值DELAY曲调值DELAY 调 4/4125ms调 4/462ms 调 3/4187ms调 3/494ms 调 2/4250ms调 2/4125ms 对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。 下面就用 AT89S51 单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。 在这个程

    注意事项

    本文(Proteus仿真单片机实验模拟资料.doc)为本站会员(一***)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开