1.设计一个秒表计时器,用来计00~59秒(利用软件延时)。
答:设计如图11-2所示,在AT89S51单片机的P0和P2端口分别接有两个共阴极数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。
程序设计:①在设计过程中用一个存储单元作为秒计数单元,当1秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,从新秒计数;②对于秒计数单元中的数据要把它的十位数和个位数分开,方法仍采用对10整除和对10求余;③在数码上显示,通过查表的方式完成。
1秒时间的产生采用软件精确延时的方法来完成,经过精确计算得到1秒时间为1.002秒。
图11-2 增选习题1附图
RET
程序框图如图11-3所示:
汇编源程序如下:
图11-3 增选习题1程序框图
C语言源程序如下:
2.设计一个由模拟开关控制的灯。
答:设计如图11-4所示,监视开关S1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关闭合,L1亮;开关打开,L1熄灭。
图11-4 增选习题2附图
程序设计内容如下:
1)开关状态的检测过程。单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当开关S1被拨上去,即输入高电平,相当于开关断开;当开关S1被拨下去,即输入低电平,相当于开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测。(www.xing528.com)
图11-5 增选习题2程序框图
2)输出控制。当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮。可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
程序框图如图11-5所示。
汇编源程序如下:
3.利用查表指令实现,端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2s)。
答:电路原理如图11-6所示。
程序设计内容:在用表格进行程序设计的时候,要用以下的指令来完成:
1)利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。
2)利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。
程序框图如图11-7所示。
汇编源程序如下:
ORG 0000H
图11-6 增选习题3电路图
图11-7 增选习题3程序框图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。