单片机开发系统使用4.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
公选课 ——《单片机应用实训》 设计实例 1、用1个LED发光二极管,设计一个循环闪烁的指示灯。 2、用8个LED发光二极管,设计一个循环闪烁的流水灯。 3、通过设置中断,改变灯的循环方向,控制灯的亮灭。 4、通过定时,精确控制P1.0闪烁500ms。 5、以秒为单位,用LED数码管显示当前计数值。 1、用1个LED发光二极管,设计一个循环闪烁的指示灯。 1.1硬件设计 1.2软件设计 1)初始化 51头文件、宏定义 2)主程序,即main()程序 灯的亮灭控制 3)延时功能 延时子程序设计 #include at89X52.h #define uint unsigned int #define uchar unsigned char 2、用8个LED发光二极管,设计一个循环闪烁的流水灯。 2.1硬件设计 2.2软件设计 1)初始化 51头文件、宏定义 2)主程序,即main()程序 灯的循环闪亮控制 3)延时功能 延时子程序设计 如何进行灯的循环闪亮控制? intrins.h 内部函数库 (包含变量循环移位、位操作等函数) 需要将该函数包含进来,同时对函数原型进行声明。 #include INTRINS.H uchar _crol_(uchar a,uchar n); /*函数原型,左循环*/ uchar _cror_(uchar a,uchar n); /*函数原型,右循环*/ 3、通过设置中断,改变灯的循环方向,控制灯的亮灭。 3.1硬件设计 1)中断的概念 中断技术是计算机中一项很重要的技术。 中断系统的功能是为了解决快速CPU和慢速外设间的矛盾,它由软件和硬件组成。 有了中断系统,能使计算机的功能更强、效率更高、使用更灵活。 51单片机系统有5个中断源。 2)日常中断的例子 3)计算机中的中断概念 4)相关的特殊功能寄存器 3.2软件设计 1)初始化 51头文件、宏定义 2)主程序,即main()程序 灯的循环闪亮控制 中断初始化 3)延时功能 4)中断服务程序设计 3.2软件设计 中断初始化 触发方式设置 中断允许控制 中断服务程序设计 中断初始化 IT0=1; EA=1; EX0=1; 中断服务程序 函数名()interrupt n [using m ] { } Void int0(void) interrupt 0 /* 外部中断0的服务函数定义,使用第二组工作寄存器组*/ void int0(void) interrupt 0 { uchar a=0xfe,i=16; P1=0x0; delay(5000); P1=0x0ff; delay(5000); P1=0x0; delay(5000); P1=0x0ff; delay(5000); do { P1=a; delay(5000); a=_cror_(a,1); }while(i--); } 4、通过定时,精确控制闪烁500ms。 针对任务一进行操作。 使用定时器T0 1)设置定时器工作方式 2)计算初始值 3)编写初始化程序 4)编写中断服务程序 1)设置定时器工作方式 2)计算初始值 晶振12Mhz 1个机器周期: 3)编写初始化程序 TMOD=0X01; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TR0=1; 4)编写中断服务程序 Void timer0(void) interrupt 1 { TH0=0x3c; TL0=0xb0; i++; if(i==9) { i=0; P1_0=~P1_0; } } 5、以秒为单位,用LED数码管显示当前计数值。 5.1硬件设计 5.2软件设计 1)定时中断服务程序 定时50ms,中断20次为1秒 每中断20次,计数1次。 2)显示程序 将显示数值分为:个位、十位、百位、千位,分别查表显示。 初始化: uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段码组合,共阴极 uchar m=0; //计数循环变量 uint n=0; //计数值 定时中断服务程序 void timer0(void) interrupt 1 { TH0=0x3C; TL0=0xB0; m++; if(m==19) {m=0; n++; P1_0=~P1_0; } } 显示程序 void display(void) { P2=0xf7,P0=a[n%10]; delay(20); P2=0xfb,P0=a[n%

文档评论(0)

hong333666 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档