资源描述
单片机学习C51的介绍C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。C51的特点C语言作为一种非常方便的语言而得到广泛的支持,语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用很多硬件开发都用C语言编程,如:各种单片机、语言编程,如:各种单片机、DSP、ARM等等.C语言程序本身不依赖于机器硬件系统,基本上不语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。作修改就可将程序从不同的单片机中移植过来。C提供了很多数学函数并支持浮点运算,开发效率提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维高,故可缩短开发时间,增加程序可读性和可维护性。护性。学习的主要内容1.LED发光管的工作原理2.简单延时程序的介绍3.动静态数码管的显示4.中断控制5.总结练习1、LED发光管的工作原理编程函数的介绍Main Main 函数函数格式:格式:void main()void main()特点:无返回值,无参。特点:无返回值,无参。任何一个任何一个C C程序有且仅有一个程序有且仅有一个mainmain函数,它是整函数,它是整个程序开始执行的入口。个程序开始执行的入口。例:例:void main()void main()总程序从这里开始执行总程序从这里开始执行;其他语句;其他语句;LED发光管发光程序#includesbit d1=P13;Void main()d1=0;2、简单的延时程序For(For(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3)语句(内部可为空)语句(内部可为空)执行过程:执行过程:1.1.求解一次表达式求解一次表达式1.1.2.2.求解表达式求解表达式2 2,若其值为真(非,若其值为真(非0 0 即为真),则即为真),则执行执行forfor中语句。然后执行第中语句。然后执行第3 3步。否则结束步。否则结束for for 语语句,直接跳出,不再执行第句,直接跳出,不再执行第3 3步。步。3.3.求解表达式求解表达式3.3.4.4.跳到第跳到第2 2步重复执行。步重复执行。While循环While(表达式)语句(内部也可为空)特点:先判断表达式,后执行语句。原则:若表达式不是0,即为真,那么执行语句。否则跳出while 语句。流水灯程序的编写3、动静态数码管的显示使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。本实验板用共阳LED显示器,根据电路连接图显示16进制数的编码已列在下表。共阳极数码管码表0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 1 2 3 4 50 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,67 8 9 A B 0 xc6,0 xa1,0 x86,0 x8e C D E F LED数码显示方式及电路数码显示方式及电路静态显示方式 LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示 动态显示的特点是将所有位数码管的段选线动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。时应略小于静态显示电路中的。4.中断控制80C5180C5180C5180C51的中断系的中断系的中断系的中断系统结统结构构构构一、中断的概念一、中断的概念 CPUCPU在处理某一事件在处理某一事件A A时,发生了另一事件时,发生了另一事件B B请求请求CPUCPU迅速去处理(中断发生);迅速去处理(中断发生);CPUCPU暂时中断当前的工作,转去处理事件暂时中断当前的工作,转去处理事件B B(中断(中断响应和中断服务);响应和中断服务);待待CPUCPU将事件将事件B B处理完毕后,再回到原来事件处理完毕后,再回到原来事件A A被中被中断的地方继续处理事件断的地方继续处理事件A A(中断返回),这一过程(中断返回),这一过程称为中断称为中断 。引起引起CPUCPU中断的根源,称为中断源。中断源向中断的根源,称为中断源。中断源向CPUCPU提出的中断请求。提出的中断请求。CPUCPU暂时中断原来的事务暂时中断原来的事务A A,转去处,转去处理事件理事件B B。对事件。对事件B B处理完毕后,再回到原来被中断的地处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。件称为中断系统(中断机构)。随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:分时操作 CPU可以分时为多个I/O设备服务,提高了计算机的利用率;实时响应 CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;可靠性高 CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。二、二、二、二、80C5180C51中断系统的结构中断系统的结构中断系统的结构中断系统的结构 80C5180C51的中断系统有的中断系统有的中断系统有的中断系统有5 5个中断源个中断源个中断源个中断源(80528052有有6 6个)个),2 2个优先级,可实现二级中断嵌套个优先级,可实现二级中断嵌套个优先级,可实现二级中断嵌套个优先级,可实现二级中断嵌套 。三、80C51中断的控制 中断允许控制中断允许控制 CPUCPU对中断系统所有中断以及某个中断源的开对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器放和屏蔽是由中断允许寄存器IEIE控制的控制的。EX0EX0(IE.0)(IE.0),外部中断,外部中断,外部中断,外部中断0 0允许位;允许位;允许位;允许位;ET0ET0(IE.1)(IE.1),定时,定时,定时,定时/计数器计数器计数器计数器T0T0中断允许位;中断允许位;中断允许位;中断允许位;EX1EX1(IE.2)(IE.2),外部中断,外部中断,外部中断,外部中断0 0允许位;允许位;允许位;允许位;ET1ET1(IE.3)(IE.3),定时,定时,定时,定时/计数器计数器计数器计数器T1T1中断允许位;中断允许位;中断允许位;中断允许位;ESES(IE.4)IE.4),串行口中断允许位;,串行口中断允许位;,串行口中断允许位;,串行口中断允许位;EAEA(IE.7)(IE.7),CPUCPU中断允许(总允许)位。中断允许(总允许)位。中断允许(总允许)位。中断允许(总允许)位。同一优先级中的中断申请不止一个时,则有中同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如由中断系统硬件确定的自然优先级形成,其排列如所示:所示:中断响应条件:中断源有中断请求;此中断源的中断允许位为1;CPU开中断(即EA=1)。以上三条同时满足时,CPU才有可能响应中断。四、定时器 实现定时功能,比较方便的办法是利用单片机内部实现定时功能,比较方便的办法是利用单片机内部实现定时功能,比较方便的办法是利用单片机内部实现定时功能,比较方便的办法是利用单片机内部的定时的定时的定时的定时/计数器。也可以采用下面三种方法:计数器。也可以采用下面三种方法:计数器。也可以采用下面三种方法:计数器。也可以采用下面三种方法:软件定时:软件定时不占用硬件资源,但占用了软件定时:软件定时不占用硬件资源,但占用了软件定时:软件定时不占用硬件资源,但占用了软件定时:软件定时不占用硬件资源,但占用了CPUCPU时时时时间,降低了间,降低了间,降低了间,降低了CPUCPU的利用率。的利用率。的利用率。的利用率。采用时基电路定时:例如采用采用时基电路定时:例如采用采用时基电路定时:例如采用采用时基电路定时:例如采用555555电路,外接必要的元器电路,外接必要的元器电路,外接必要的元器电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好件(电阻和电容),即可构成硬件定时电路。但在硬件连接好件(电阻和电容),即可构成硬件定时电路。但在硬件连接好件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可以后,定时值与定时范围不能由软件进行控制和修改,即不可以后,定时值与定时范围不能由软件进行控制和修改,即不可以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。编程。编程。编程。采用可编程芯片定时:这种定时芯片的定时值及定时范围采用可编程芯片定时:这种定时芯片的定时值及定时范围采用可编程芯片定时:这种定时芯片的定时值及定时范围采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵很容易用软件来确定和修改,此种芯片定时功能强,使用灵很容易用软件来确定和修改,此种芯片定时功能强,使用灵很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时活。在单片机的定时活。在单片机的定时活。在单片机的定时/计数器不够用时,可以考虑进行扩展。计数器不够用时,可以考虑进行扩展。计数器不够用时,可以考虑进行扩展。计数器不够用时,可以考虑进行扩展。(1)定时/计数器的结构和工作原理 定时定时定时定时/计数器的结构计数器的结构计数器的结构计数器的结构 定时定时定时定时/计数器的实质是加计数器的实质是加计数器的实质是加计数器的实质是加1 1计数器(计数器(计数器(计数器(1616位),由高位),由高位),由高位),由高8 8位和低位和低位和低位和低8 8位两个寄存器组成。位两个寄存器组成。位两个寄存器组成。位两个寄存器组成。TMODTMOD是定时是定时是定时是定时/计数器的工作方式寄存器,计数器的工作方式寄存器,计数器的工作方式寄存器,计数器的工作方式寄存器,确定工作方式和功能;确定工作方式和功能;确定工作方式和功能;确定工作方式和功能;TCONTCON是控制寄存器,控制是控制寄存器,控制是控制寄存器,控制是控制寄存器,控制T0T0、T1T1的启动的启动的启动的启动和停止及设置溢出标志和停止及设置溢出标志和停止及设置溢出标志和停止及设置溢出标志。(2)定时/计数器的工作原理 加加1 1计数器输入的计数脉冲有两个来源计数器输入的计数脉冲有两个来源,一个是由系一个是由系统的时钟振荡器输出脉冲经统的时钟振荡器输出脉冲经1212分频后送来;一个是分频后送来;一个是T0T0或或T1T1引脚输入的外部脉冲源。每来一个脉冲计数器加引脚输入的外部脉冲源。每来一个脉冲计数器加1 1,当加到计数器为全当加到计数器为全1 1时,再输入一个脉冲就使计数器回时,再输入一个脉冲就使计数器回零,且计数器的溢出使零,且计数器的溢出使TCONTCON中中TF0TF0或或TF1TF1置置1 1,向,向CPUCPU发发出中断请求(定时出中断请求(定时/计数器中断允许时)。如果定时计数器中断允许时)。如果定时/计计数器工作于定时模式,则表示定时时间已到;如果工作数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加可见,由溢出时计数器的值减去计数初值才是加1 1计计数器的计数值。数器的计数值。设置为定时器模式时,加设置为定时器模式时,加1 1计数器是对内部机器周期计数器是对内部机器周期计数(计数(1 1个机器周期等于个机器周期等于1212个振荡周期,即计数频率为个振荡周期,即计数频率为晶振频率的晶振频率的1/121/12)。计数值)。计数值N N乘以机器周期乘以机器周期TcyTcy就是定时就是定时时间时间t t。(3 3)定时)定时)定时)定时/计数器的控制计数器的控制计数器的控制计数器的控制 80C5180C51单片机定时单片机定时单片机定时单片机定时/计数器的工作由两个特殊功能计数器的工作由两个特殊功能计数器的工作由两个特殊功能计数器的工作由两个特殊功能寄存器控制。寄存器控制。寄存器控制。寄存器控制。TMODTMOD用于设置其工作方式;用于设置其工作方式;用于设置其工作方式;用于设置其工作方式;TCONTCON用于用于用于用于控制其启动和中断申请。控制其启动和中断申请。控制其启动和中断申请。控制其启动和中断申请。工作方式寄存器工作方式寄存器工作方式寄存器工作方式寄存器TMODTMOD 工作方式寄存器工作方式寄存器工作方式寄存器工作方式寄存器TMODTMOD用于设置定时用于设置定时用于设置定时用于设置定时/计数器的工计数器的工计数器的工计数器的工作方式,低四位用于作方式,低四位用于作方式,低四位用于作方式,低四位用于T0T0,高四位用于,高四位用于,高四位用于,高四位用于T1T1。其格式如下:。其格式如下:。其格式如下:。其格式如下:GATEGATE:门控位。:门控位。:门控位。:门控位。GATEGATE0 0时,只要用软件使时,只要用软件使时,只要用软件使时,只要用软件使TCONTCON中的中的中的中的TR0TR0或或或或TR1TR1为为为为1 1,就可以启动定时,就可以启动定时,就可以启动定时,就可以启动定时/计数器工作;计数器工作;计数器工作;计数器工作;GATAGATA1 1时,时,时,时,要用软件使要用软件使要用软件使要用软件使TR0TR0或或或或TR1TR1为为为为1 1,同时外部中断引脚或也为高电平,同时外部中断引脚或也为高电平,同时外部中断引脚或也为高电平,同时外部中断引脚或也为高电平时,才能启动定时时,才能启动定时时,才能启动定时时,才能启动定时/计数器工作。即此时定时器的启动多了一计数器工作。即此时定时器的启动多了一计数器工作。即此时定时器的启动多了一计数器工作。即此时定时器的启动多了一条件。条件。条件。条件。:定时定时定时定时/计数模式选择位。计数模式选择位。计数模式选择位。计数模式选择位。0 0为定时模式;为定时模式;为定时模式;为定时模式;=1=1为计数模式。为计数模式。为计数模式。为计数模式。M1M0M1M0:工作方式设置位。定时:工作方式设置位。定时:工作方式设置位。定时:工作方式设置位。定时/计数器有四种工作方式,由计数器有四种工作方式,由计数器有四种工作方式,由计数器有四种工作方式,由M1M0M1M0进行设置。进行设置。进行设置。进行设置。(4 4)控制寄存器)控制寄存器TCONTCON TCONTCON的低的低4 4位用于控制外部中断。位用于控制外部中断。TCONTCON的高的高4 4位用于控位用于控制定时制定时/计数器的启动和中断申请。其格式如下计数器的启动和中断申请。其格式如下:TF1TF1(TCON.7TCON.7):):):):T1T1溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。T1T1计数溢出时由硬件自计数溢出时由硬件自计数溢出时由硬件自计数溢出时由硬件自动置动置动置动置TF1TF1为为为为1 1。CPUCPU响应中断后响应中断后响应中断后响应中断后TF1TF1由硬件自动清由硬件自动清由硬件自动清由硬件自动清0 0。T1T1工作时,工作时,工作时,工作时,CPUCPU可随时查询可随时查询可随时查询可随时查询TF1TF1的状态。所以,的状态。所以,的状态。所以,的状态。所以,TF1TF1可用作查询测试的标志。可用作查询测试的标志。可用作查询测试的标志。可用作查询测试的标志。TF1TF1也也也也可以用软件置可以用软件置可以用软件置可以用软件置1 1或清或清或清或清0 0,同硬件置,同硬件置,同硬件置,同硬件置1 1或清或清或清或清0 0的效果一样。的效果一样。的效果一样。的效果一样。TR1TR1(TCON.6TCON.6):):):):T1T1运行控制位。运行控制位。运行控制位。运行控制位。TR1TR1置置置置1 1时,时,时,时,T1T1开始工作;开始工作;开始工作;开始工作;TR1TR1置置置置0 0时,时,时,时,T1T1停止工作。停止工作。停止工作。停止工作。TR1TR1由软件置由软件置由软件置由软件置1 1或清或清或清或清0 0。所以,用软件可控制定。所以,用软件可控制定。所以,用软件可控制定。所以,用软件可控制定时时时时/计数器的启动与停止。计数器的启动与停止。计数器的启动与停止。计数器的启动与停止。TF0TF0(TCON.5TCON.5):):):):T0T0溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与TF1TF1类同。类同。类同。类同。TR0TR0(TCON.4TCON.4):):):):T0T0运行控制位,其功能与运行控制位,其功能与运行控制位,其功能与运行控制位,其功能与TR1TR1类同。类同。类同。类同。定时定时/计数器应用举例计数器应用举例 初始化程序应完成如下工作:初始化程序应完成如下工作:初始化程序应完成如下工作:初始化程序应完成如下工作:对对对对TMODTMOD赋值,以确定赋值,以确定赋值,以确定赋值,以确定T0T0和和和和T1T1的工作方式。的工作方式。的工作方式。的工作方式。计算初值计算初值计算初值计算初值,并将其写入并将其写入并将其写入并将其写入TH0TH0、TL0TL0、TH1TH1、TL1TL1。中断方式时,则对中断方式时,则对中断方式时,则对中断方式时,则对IEIE赋值,开放中断。使赋值,开放中断。使赋值,开放中断。使赋值,开放中断。使TR0TR0或或或或TR1TR1置位,启动定时置位,启动定时置位,启动定时置位,启动定时/计数器定时或计数。计数器定时或计数。计数器定时或计数。计数器定时或计数。5、总结练习 发光二极管由左到右依次闪烁,当发光二极管到达最右端时数码管加1,按键盘按键可使数码管和流水灯停止,蜂鸣器报警,按另一按键可使数码管和流水灯复位重新开始
展开阅读全文