求:“单片机花样流水灯程序”

[复制链接]
3216|2
 楼主| fjfjja 发表于 2008-5-29 13:47 | 显示全部楼层 |阅读模式
要求89C51用P1控制8只LED,P2.1控制一只蜂鸣器实现以下功能:&nbsp;<br />一、发光二级管有5种工作状态,每隔5秒切换一次;&nbsp;<br />二、第一种状态是8只LED以0.5秒的间隔一起闪烁。蜂鸣器也同步间歇鸣叫&nbsp;<br />三、其他四种蜂鸣器不响,只有8只LED的花式变换。&nbsp;<br /><br />各位,如何才能让不同的LED花式之间每隔5秒切换呢?好像不是用查表的方法,因为要求这五种状态都是在五个子程序里。如何才能实现切换啊?其他的四种花式不用写上,只有子程序的空壳就可以!&nbsp;<br />请大家帮帮忙!谢谢了!最好能写上程序,我刚学,不是太明白!
cgkdxx 发表于 2008-5-29 17:17 | 显示全部楼层

cgkdxx@yeah.net

  
 楼主| fjfjja 发表于 2008-5-30 12:27 | 显示全部楼层

三楼的谢谢了!

不过!这个简单的流水灯我还是会的!我已经找到答案了!谢谢!<br /><br />以下是答案程序:<br />设一个标志位flag,&nbsp;以标志位的5种状态对应发光二极管的5种工作状态,如当flag=1;发光二极管工作在1,当flag=2;发光二极管工作在2,......!然后根据定时器定时功能,5秒到,刷新flag的值,程序如下;&nbsp;<br />;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&nbsp;<br />;/*程序功能:定时5S到切换LED显示状态.&nbsp;<br />;作者:w418781840.2008.5.29&nbsp;*/&nbsp;<br />;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&nbsp;<br />FLAG&nbsp;BIT&nbsp;30H&nbsp;;定义标志位&nbsp;<br />ORG&nbsp;0&nbsp;<br />LJMP&nbsp;MAIN&nbsp;<br />ORG&nbsp;0BH&nbsp;<br />LJMP&nbsp;AGA&nbsp;<br />;;;;;;主程序;;;;;;;;;;;;&nbsp;<br />ORG&nbsp;0030H&nbsp;<br />MAIN:&nbsp;MOV&nbsp;FLAG,#01H&nbsp;;标志位清0&nbsp;<br />MOV&nbsp;TMOD,#01H&nbsp;;赋值50MS&nbsp;<br />MOV&nbsp;TH0,#3CH&nbsp;<br />MOV&nbsp;TL0,#0B0H&nbsp;<br />MOV&nbsp;R0,#100&nbsp;;中断100*50=5S&nbsp;<br />SETB&nbsp;EA&nbsp;<br />SETB&nbsp;ET0&nbsp;<br />SETB&nbsp;TR0&nbsp;<br />SJMP&nbsp;$&nbsp;<br />;;;;;;;;;中断服务程序;;;;;;;;;;;;;;&nbsp;<br />AGA:&nbsp;MOV&nbsp;TH0,#3CH&nbsp;<br />MOV&nbsp;TL0,#0B0H&nbsp;<br />DJNZ&nbsp;R0,LOOP&nbsp;;5S到否?否,返回&nbsp;<br />INC&nbsp;FLAG&nbsp;;到,标志加1&nbsp;<br />MOV&nbsp;A,FLAG&nbsp;<br />CJNE&nbsp;A,#05,L1&nbsp;;扫描5种状态了否?&nbsp;<br />MOV&nbsp;FLAG,#01H&nbsp;;是,归0,重新开始&nbsp;<br />;;;;;;;;;切换程序;;;;;;;;;;;;&nbsp;<br />L1:&nbsp;CJNE&nbsp;A,#01H,L2&nbsp;;判断是否是状态1?否,转判断2&nbsp;<br />LCALL&nbsp;LED1&nbsp;;是,调有状态1&nbsp;<br />SJMP&nbsp;LOOP&nbsp;;返回&nbsp;<br />L2:&nbsp;CJNE&nbsp;A,#02H,L3&nbsp;;&nbsp;以下跟上面判断相同&nbsp;<br />LCALL&nbsp;LED2&nbsp;<br />SJMP&nbsp;LOOP&nbsp;<br />L3:&nbsp;CJNE&nbsp;A,#03H,L4&nbsp;<br />LCALL&nbsp;LED3&nbsp;<br />SJMP&nbsp;LOOP&nbsp;<br />L4:&nbsp;CJNE&nbsp;A,#04H,L5&nbsp;<br />LCALL&nbsp;LED4&nbsp;<br />SJMP&nbsp;LOOP&nbsp;<br />L5:&nbsp;CJNE&nbsp;A,#05H,LOOP&nbsp;<br />LCALL&nbsp;LED5&nbsp;<br />LOOP:&nbsp;RETI&nbsp;<br />;;;;;;LED子程序区;;;;;;;;;;&nbsp;<br />LED1:&nbsp;RET&nbsp;<br />LED2:&nbsp;RET&nbsp;<br />LED3:&nbsp;RET&nbsp;<br />LED4:&nbsp;RET&nbsp;<br />LED5:&nbsp;RET&nbsp;<br />/////////////////&nbsp;<br />///////////////////////////////&nbsp;<br />/*程序功能:定时5S到切换LED显示状态.&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

101

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部