流水灯程序设计说明与有关讲述.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“流水灯”程序设计说明 程序设计思路 流水灯是经典测试是否正常工作学习使用发光二极管的案例 流水灯电路连接 关键代码设计说明void Init() 初始化函数 { P0M1 = 0x00;//0000 0000 P0M0 = 0xff;//1111 1111 将P0各位设置为推挽输出 P2M1 = 0x00;//0000 0000 P2M0 = 0xff;//1111 1111 将P2各位设置为推挽输出 led_sel = 1;//为1时是led灯显示,为0时是数码管显示 } (2)void delay(uint t):本过程目的是延时tms;但是延时的时间可能不是很准确。 单片机工作时,是在统一的时钟脉冲控制下有序进行的。这个脉冲是由单片机控制器中的时钟电路产生的。时钟电路由振荡器和分频器组成,振荡器产生基本的振荡信号,然后进行分频,得到相应的时钟。振荡电路通常有内部振荡和外部振荡两种方式。STC15F2K60S2单片机内部集成高精度R/C时钟,工作时钟可以使用内部振荡器或者外部晶体振荡器(简称晶振)产生的时钟。外部振荡信号通过内部时钟电路,经过分频,得到相应的时钟信号。 图2外部振荡模式工作原理示意图 说明: 振荡周期: 晶体振荡器的周期。 状态周期: 振荡信号经二分频后形成的时钟脉冲信号,用S表示。一个状态周期的两个振荡周期作为两个节拍分别称为节拍P1和节拍P2。P1有效时,通常完成算术逻辑操作;P2有效时,一般进行内部寄存器之间的传输。 机器周期: 完成一个基本操作所需的时间称为机器周期。一个机器周期包含6个状态周期,用S1、S2、….、S6表示;共12个节拍,依次可表示为S1P1、S1P2、S2P1、S2P2、……、S6P1、S6P2。 指令周期:CPU执行一条指令所需要的时间。CPU执行指令是在时钟脉冲控制下一步一步进行的,由于指令的功能和长短各不相同,因此,指令执行所需的时间也不一样。一个指令周期通常含有1~4个机器周期。 MCS-51单片机各种周期的相互关系 例:若MCS-51单片机外接晶振为12MHz时,则单片机的四个周期的具体值为: 振荡周期=1/12MHz=1/12μs=0.0833μs 时钟周期=1/6μs=0.167μs 机器周期=1μs 指令周期=1~4μs 单片机晶体振荡器M的频率可以在4MHz~48MHz之间选择,典型值是11.0592MHz(因为使用这个频率的晶振可以准确地得到9600bits/s和19200bits/s的波特率)。 (3)主函数:每隔一定延时给P0口赋值,P0位中为1的对应发光二极管将选通。由于显示模式是从右向左不断循环,因此可以利用移位计算来完成不同发光二极管依次显示的效果。要显示的信息放置在了led中,初始化 void main() { Init(); //初始化 led = 0x01; //第一个LED发光 while(1) { P0 = led; //LED显示 delay(500); //延时500mS if(led == 0x80) { led = 0x01; } else { led = led 1;//led值逐一左移 } } }

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档