1. 闪烁灯

1.  实验任务

如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。

2.  电路原理图

图4.1.1

3.  系统板上硬件连线

把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4.  程序设计内容

(1). 延时程序的设计方法

作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒

机器周期 微秒

MOV R6,#20 2个  2

D1: MOV R7,#248 2个  2       2+2×248=498 20×

DJNZ R7,$ 2个  2×248             (498

DJNZ R6,D1 2个   2×20=40           10002

因此,上面的延时程序时间为10.002ms。

由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:

DELAY: MOV R5,#20
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET

(2). 输出控制

如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。

5.程序框图

如图4.1.2所示

 

图4.1.2

6. 汇编源程序
ORG 0
START: CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
LJMP START
DELAY: MOV R5,#20 ;延时子程序,延时0.2秒
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END

7. C语言源程序
#include <AT89X51.H>
sbit L1=P1^0;
void delay02s(void) //延时0.2秒子程序
{

unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);

}

void main(void)
{
while(1)
{
L1=0;
delay02s();
L1=1;
delay02s();
}

单片机实例1——闪烁灯(硬件电路图+汇编程序+C语言程序)相关推荐

  1. 单片机实例22——电子琴(硬件电路图+汇编程序+C语言程序)

    22. 电子琴 1. 实验任务 (1. 由4X4组成16个按钮矩阵,设计成16个音. (2. 可随意弹奏想要表达的音乐. 2. 电路原理图 图4.22.1 3. 系统板硬件连线 (1. 把" ...

  2. 单片机实例4——广告灯的左移右移(硬件电路图+汇编程序+C语言程序)

    4. 广告灯的左移右移 1. 实验任务 做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出"0"时,发光二极管亮 ...

  3. 单片机实例3——多路开关状态指示(硬件电路图+汇编程序+C语言程序)

    3. 多路开关状态指示 1. 实验任务 如图4.3.1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极 ...

  4. 单片机实例2——模拟开关灯(硬件电路图+汇编程序+C语言程序)

    2. 模拟开关灯 1. 实验任务 如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭. 2. 电 ...

  5. 单片机实例6——报警产生器(硬件电路图+汇编程序+C语言程序)

    6. 报警产生器 1. 实验任务 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开 ...

  6. 单片机实例21——拉幕式数码显示技术(硬件电路图+汇编程序+C语言程序)

    21. 拉幕式数码显示技术 1. 实验任务 用AT89S51单片机的P0.0/AD0-P0.7/AD7端口接数码管的a-h端,8位数码管的S1-S8通过74LS138译码器的Y0-Y7来控制选通每个数 ...

  7. 单片机实例26——点阵式LED简单图形显示技术(硬件电路图+汇编程序+C语言程序)

    26. 点阵式LED简单图形显示技术 1. 实验任务 在8X8点阵式LED显示"★"."●"和心形图,通过按键来选择要显示的图形. 2. 电路原理图 图4.26 ...

  8. 单片机实例14——4×4矩阵式键盘识别技术(硬件电路图+汇编程序+C语言程序)

    14. 4×4矩阵式键盘识别技术 1. 实验任务 如图4.14.2所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线:在数码管上显示每个按键 ...

  9. 单片机实例19—— “叮咚”门铃(硬件电路图+汇编程序+C语言程序)

    19. "叮咚"门铃 1. 实验任务 当按下开关SP1,AT89S51单片机产生"叮咚"声从P1.0端口输出到LM386,经过放大之后送入喇叭. 2. 电路原理 ...

最新文章

  1. 北京智源人工智能研究院启动“智源学者计划”,与旷视发布首个智源联合实验室
  2. IT业爆发“新人”争夺战
  3. c++ 新建一个数组
  4. 组装电脑最容易犯的五大错误
  5. 使用Redis Stream来做消息队列和在Asp.Net Core中的实现
  6. Django复习:视图和模版
  7. 近期 AI 领域招聘招生信息汇总
  8. android 应用区高度,Android创建显示区高度可以调整的ScrollView
  9. 怎么去调需要登录的接口_遇到需要的登录的网站怎么办?学好python,用这3招轻松搞定...
  10. 程序员除了会 CRUD 之外,还应该知道什么叫 CQRS!
  11. java web应用程序_说说Java Web中的Web应用程序|乐字节
  12. BootStrap学习(1)
  13. STM32 磁场传感器HMC5883
  14. UART协议就应该这么理解
  15. 哈工大计算机保研面试专业课问题,[转载]哈工大保研面试
  16. 工作三年的java程序员修行之路
  17. 河北外国语学院计算机宿舍,2021年河北外国语学院新生宿舍条件和宿舍环境图片...
  18. ai人工智能测面相 准吗_金融界的AI:如何最终开始相信自己的回测[1/3]
  19. 图解线性相关与线性无关(引出可逆矩阵、奇异矩阵)
  20. golang 读取Response Body 超时问题

热门文章

  1. 天天在做的数据可视化,才是企业数字化转型的关键
  2. vue父与子组件,子与子组件间的方法调用和通信
  3. php怎么给视频加水印,视频怎么加水印 添加文字水印和图片水印 给视频加水印的软件...
  4. sql中的left join 查询
  5. 花与剑尚未获取服务器信息,花与剑澄心无忆攻略,触发条件及完成方式介绍
  6. 什么是Saas,以及什么是PLG下的Saas
  7. 图形 1.1渲染流水线(知识梳理笔记)
  8. windows7下系统保护中出现错误“文件名、目录名或卷标语法不正确。(0x8007007B)“ 以及保护设置列表中出现“Windows7_os(c:)(找不到)”选项时的解决方法...
  9. MySQL ERROR 1698 (28000) 错误
  10. 基于激光雷达的室内探测系统