单片机控制系统运行与维护 任务1.3 流水灯设计与制作 1.3流水灯.pptVIP

单片机控制系统运行与维护 任务1.3 流水灯设计与制作 1.3流水灯.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
九江职业技术学院电气工程系 九江职业技术学院电气工程系 * 情境一 AT89S51单片机输入/输出接口设计 任务1.3 流水灯的设计与制作 * 教学目标 1.掌握子程序及函数的基本概念。 2.掌握转移指令用法。 3.掌握延时程序设计。 知识目标 技能目标 1.制作流水灯硬件电路。 2.掌握单片机程序编译及调试方法。 * 制作任务 用LED发光二极管、单片机及电阻、电容等器件,在老师指导下制作多种显示方式的流水灯。 如何实现流水灯控制? 怎样闪烁? 怎样流水? * 【例1】编程实现P1.0所连接的发光二极管每隔0.5s闪烁。 LED灯闪烁控制 画流程图 P1.0=0 P1.0=1 * 100ms延时程序 延时程序设计 设置寄存器R1初值为199 设置寄存器R7初值为250 $代表当前指令的起始地址DL 标号:代表了延时程序的开始 调用返回 延时时间为:[1+(501 +2)×199] ×1μs =100.098ms≈100ms * 条件转移指令 减1不等于0转移 DJNZ Rn , rel ;Rn?(Rn)-1,若(Rn)≠0,则PC?PC+rel, 则顺序执行 DJNZ dir , rel;(direct)?(direct)-1,若(direct)≠0,则PC?PC+rel,否则顺序执行 比较不相等转移 CJNE A,dir , rel CJNE A , #data , rel CJNE Rn , #data , rel CJNE @Ri , #data , rel 1、CJNE指令都是3字节指令,作减操作,不回送结果,影响CY标志。 若第一操作数大于或等于第二 操作数,2、则标志CY=0。若第一操作数小于第二操作数,则CY=1。 3、这几条指令除实现两操作数相等与否的判断外,利用对CY的判断,还可完成两数大小的比较。 * 汇编语言源程序 LED灯闪烁控制 ORG 0000H LJMP START ORG 0050H START:CLR P1.0 ;点亮发光二极管 ACALL DELAY ;调用0.5s延时子程序 SETB P1.0 ;熄灭发光二极管 ACALL DELAY SJMP START ;回到程序的开始,重复执行这段程序 DELAY:MOV R0,#5 ;延时0.5s子程序(略) ······ * 子程序的调用与返回 长调用 绝对无条件调用 子程序返回 * C51基础 C51程序结构 include long fun1( ); float fun2( ); int x,y; float z; fun1( ) { 函数体… } main( ) { 主函数体… } fun2( ) { 函数体… } 预处理命令 函数说明 变量定义 功能函数1 主函数 功能函数2 * C51源程序 LED灯闪烁控制 #includereg52.h sbit P1_0=P1^0; void delayms(unsigned int i) //使用12MHz时的延时循环次数 { unsigned int j; for(;i!=0;i--) { for(j = 0; j 123; j++); } } 接下页 * LED灯闪烁控制 C51源程序 int main(void) { while(1) { P1_0=0; delayms(500); P1_0=1; delayms(500); } return 0; } * 问题 流水灯如何循环点亮? * 流程图 * 程序设计 汇编源程序: ORG 0000H LJMP START ORG 0030H START:MOV A,#0FEH ;送显示模式字 NEXT: MOV P1,A ;点亮连接P1.0的发光二极管 ACALL DELAY RL A ;左移一位,改变显示模式字 SJMP START DELAY:MOV R3,#0FFH ;延时子程序 DEL1: MOV R4,#0FFH DJNZ R4,$ DJNZ

您可能关注的文档

文档评论(0)

WanDocx + 关注
实名认证
文档贡献者

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档