简介:51单片机闪烁灯制作:在单片机P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭形成闪烁灯状态,一亮一灭的时间间隔为0.2秒。
1.电路原理图
图4.1.1
2.系统板上硬件连线
把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。
3.程序设计内容
(1). 延时程序的设计方法
作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:
如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微
MOV R6,#20 2个 2
D1: MOV R7,#248 2个 22+2×248=49820×
DJNZ R7,$ 2个 2×248 (498
DJNZ R6,D1 2个2×20=4010002
因此,上面的延时程序时间为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亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。
4. 程序框图
5. 汇编源程序
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
6. C语言源程序
#include
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();
}
}
完毕!您现在会不会制作自己的闪烁灯了呢?
关键字:51单片机 闪烁灯 发光二极管
引用地址:
51单片机闪烁灯制作
推荐阅读最新更新时间:2024-11-08 12:31
采用多51单片机的液位监控仪设计
采用单片机设计液位监控仪是很通用的做法。如果要测量的液位有很多路(16路以上),每路要求能滚动显示1年内每班、每日、每月的输入输出总量(1日3班),正常或意外停电数据不丢失,人机交互能力要强(要设置适当数量的按键及采用LCD显示),并且每路液位要求对应2路控制输出信号(液罐液体输入控制和输出控制),配置微型打印机端口,设置声音报警,所有这些无疑需要很多的I/O端口来支持,单凭一个单片机是办不到的,需要扩展I/O端口。在此设计中,笔者认为采用专用I/O扩展芯片有较多的弊端,权衡利弊,选择了用单片机来代替专用I/O接口芯片的方法。 1 专用 I/O芯片与单片机用作I/O芯片的对比 ①专用I/O接口芯片的I/O口数量不
[单片机]
基于tx-1c 51单片机中断使用及数码管显示的使用方法
初学51单片机,中断快把我弄晕了,终于明白点了,怕忘了,贴在这里需要时方便自己找 锁存器电路 LED显示器连接电路 数码表编制方式:共8位从低4位到高4位,显示送高电平,如数字2二进制是0101 1011即16进制为:0x5B C语言程序代码如下: 1 #include REG52.H 2 #define uint unsigned int 3 #define uchar unsigned char 4 5 sbit dula = P2^6; //段选 6 sbit wela = P2^7; //位选 7 uchar time,num; //定时器0计数次数,数码管显示字符 8 9 vo
[单片机]
从零开始51单片机教程 —— 22 单片机串口介绍
串口是单片机与外界进行信息交换的工具。 8051单片机的通信方式有两种: 并行通信:数据的各位同时发送或接收。 串行通信:数据一位一位次序发送或接收。参看下图: 串行通信的方式: 异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下: 在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示字符,则字符能一个接一个地传送。 在异步通信中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式能由通信的双方自由制定,但从通用、方便的角度出
[单片机]
51单片机-定时器&数码管扫描显示
1.定时器中断实现间隔切换 在第六章第4讲的测试代码中提到过数码管微闪烁问题,这是由于三八译码器的IO端口切换的间隔时间不均匀导致,这部分的问题宋老师已经在《手把手教你学51单片机》文档6.4.2节有详细解释,并在6.5.2节里解决了这个问题。数码管扫描函数我们使用定时器0强制实现间隔1ms切换三八译码器的IO输出,这样保证了每个数码管被点亮的时间都是均匀的。我们在主函数里不停地执行数码管显示函数。这里是测试代码,用定时器1实现add间隔50ms自增1,数码管显示add的值。 #include reg52.h #include function.h //详见第六章第8讲 #include timer.h u32 a
[单片机]
51单片机定时器和计数器区别
在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是单片机学习的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。 在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。 计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定
[单片机]
基于51单片机的数字秒表的设计
近年来随着科学技术的发展,单片机的应用正在不断走下面还深入。本文简单阐述了基于单片机的数字秒表的的设计。本设计的主要特点是计时精度达到0.01秒,是各种体育竞赛的必要设备之一。 本设计的数字秒表采用AT89S52单片机为主要器件,利用其定时器的原理,结合显示电路、LED数码管以及外部外部中断电路来设计计时器。将软硬件结合起来,使得系统能实现0~99.99秒的计时,计时精度位0.01秒。硬件系统利用proteus仿真,在仿真中就能观察到系统的实际运行情. 一 硬件设计 1、1 总体方案的设计 数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。本设计中用单片机和数码管组成数字秒,
[单片机]
89C51单片机+X25045构成的看门狗电路
采用89C51单片机和X25045组成的 看门狗电路 ,X25045硬件连接图如图1所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路C2、R3输出一个正脉冲,使CPU复位。图1电路中,CPU的复位信号共有3个:上电复位(C1、R2),人工复位(S、R1、R2)和Watchdog复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒即可,因为这时CPU的振荡器已经在工作。
[电源管理]
51单片机开发的几点心得
1、 单片机 IO口上电后默认是高电平。(P1、P2、P3口内部上拉,若P0口未接上拉电阻的话,默认是高阻态) 2、单片机工作频率=晶振频率/12,即使用12MHz的晶振,实际工作频率为1MHz,一个机器周期为1us。 3、单片机常用11.0592MHz的晶振,主要是保证串口通信的同步。比如说在9600波特率下每位数据电平持续96个机器周期,因为是整数值,不会产生误差。若使用12MHz的晶振,高波特率下通信容易产生误码。 4、三极管的使用:在模拟电路中,输入为高频模拟信号时,三极管一般工作在放大模式下。在数字电路中,三极管一般作为开关用,工作在饱和模式下。 5、在单片机数据线和地址线复用的情况下必须使用锁存器,可在工作时锁
[单片机]