自制单片机——数码管电路的制做与驱动
数码管驱动电路的作用,数码管驱动电路设计原理图

数码管驱动电路的作用,数码管驱动电路设计原理图 数码管驱动电路的作用: 数码管驱动电路的作用主要是通过利用单片机控制LED数码管(发光二极管)电路,以实现数码管LED屏幕数字输出的动态显示效果。
数码管的分类: (1)按照数码管段数分类 数码管是一种半导体发光器件,其基本单元是发光二极管。
它按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(也就是多一个小数点显示); (2)按照数码管数字显示分类 按能显示多少个8可分为1位、2位、4位等等数码管; (3)按照数码管连接方式分类 按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管与共阴数码管: 其中,共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
而共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
共阳数码管驱动电路示例: 并行LED数码管静态显示电路(共阳) 共阴数码管驱动电路示例: 串行LED数码管动态扫描显示电路(共阴) 更多共阳数码管与共阴数码管驱动电路,请点击如下链接浏览: elecfans/dianyuan/430166.html 下面提供一种数码管驱动电路设计,可以实现led数码管数字0~9控制输出。
工作原理: 如图1所示,电路由与非门74LS00、数码管驱动芯片74LS247组成。
10个按键组成输入电路,经过与非门电路编码后,输入数码管驱动芯片,驱动数码管显示相应的按键号。
设计按键编码电路时,先写出真值表,由真值表可写出下式: A={I1 -I3 -I5 -I7 - I9 }(大括号中,每个因子取反,一起共同取反) = I1+I3 +I5 +I7 +I9 B={I3 -I4 -I6 - I7}(大括号中,每个因子取反,然后一起共同取反) = I3+I4+I6+I7 C={I4 -I5 -I6 - I7}(大括号中,每个因子取反,然后一起共同取反) = I4 +I5 +I6+I7 D={I8 - I9 }(大括号中,每个因子取反,然后一起共同取反) = I8+I9 为了使电源电压不超过数码管承受电压范围,电源串联4个二极管后,加到数码管上,这样做,可以节省元件。
数码管驱动电路实训报告

一、实训目的1. 理解数码管的基本工作原理和驱动方式。
2. 掌握数码管驱动电路的设计方法。
3. 提高动手能力和实际操作技能。
二、实训内容1. 数码管的结构及工作原理2. 数码管驱动电路的设计3. 数码管驱动电路的搭建与调试三、实训过程1. 数码管的结构及工作原理数码管是一种常用的显示器件,主要由七个笔画组成,分别为a、b、c、d、e、f、g,以及一个小数点dp。
数码管根据内部连接方式的不同,可分为共阴型和共阳型两种。
(1)共阴数码管:当对应笔画所在的阴极接地时,笔画会点亮;当阴极接高电平时,笔画熄灭。
(2)共阳数码管:当对应笔画所在的阳极接地时,笔画会点亮;当阳极接高电平时,笔画熄灭。
2. 数码管驱动电路的设计(1)共阴数码管驱动电路:以74HC595为例,介绍共阴数码管驱动电路的设计。
① 电路原理:74HC595是一款8位串行输入、并行输出的移位寄存器,其内部包含一个8位的移位寄存器和3个8位的锁存器。
通过将数据从串行输入端输入,经过移位寄存器传递,最后由并行输出端输出。
② 电路设计:将数码管的阴极与地相连,阳极分别与74HC595的8个并行输出端相连。
同时,将74HC595的串行输入端、时钟端、复位端与单片机相应端口相连。
(2)共阳数码管驱动电路:以CD4017为例,介绍共阳数码管驱动电路的设计。
① 电路原理:CD4017是一款10进制计数/分配器,具有10个输出端,可依次输出高电平。
当计数到10时,输出端重新从0开始计数。
② 电路设计:将数码管的阳极与地相连,阴极分别与CD4017的10个输出端相连。
同时,将CD4017的时钟端、复位端与单片机相应端口相连。
3. 数码管驱动电路的搭建与调试(1)搭建电路:按照设计好的电路图,将元器件连接到实验板上。
(2)调试电路:通过单片机编写程序,控制数码管显示相应的数字。
调试过程中,注意观察数码管显示效果,确保电路正常工作。
四、实训结果与分析1. 实训结果通过本次实训,成功搭建了共阴数码管和共阳数码管驱动电路,并实现了数字显示功能。
数码管电路的制作与驱动

/txz01/blog怎样用单片机驱动LED数码管显示怎样用单片机驱动LED数码管显示片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。
静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据,显示数据稳定,占用很少的CPU时间。
动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。
这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。
硬件译码就是显示的段码完全由硬件完成,CPU只要送出标准的BCD码即可,硬件接线有一定标准。
软件译码是用软件来完成硬件的功能,硬件简单,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。
比较常用的显示驱动芯片有:74LS164 , CD4094+ULN2003(2803) ,74HC595+ULN2003(2803) , TPIC6B595,AMT9095B, AMT9595等许多。
另外,市场上还有一些专用的LED扫描驱动显示模块如MAX7219等,功能很强,价格稍高一些。
下面是一个用74LS164驱动显示的例子和一个用4094扫描驱动显示的例子:上例图中加了一个PNP型的三极管来控制数码管的电源,是因为164没有数据锁存端,数据在传送过程中,对输出端来说是透明的,这样,数据在传送过程中,数码管上有闪动现象,驱动的位数越多,闪动现象越明显。
为了消除这种现象,在数据传送过程中,关闭三极管使数码管没电不显示,数据传送完后立刻使三极管导通,这样就实现锁存功能。
这种办法可驱动十几个164显示而没有闪动现象。
这个例子是用4094做位选,用89C2051的P1口线做段驱动来扫描驱动9位数码管的显示。
由于4094只有8个输出口线,其中第九位是用CPU口线直接进行位选的。
数码管驱动电路的设计与制作实训目的

数码管驱动电路的设计与制作实训目的数码管是一种常见的电子显示器件,广泛应用于各类电子设备中。
在本次实训中,我们将学习如何设计和制作一个数码管驱动电路,以掌握其工作原理和实际应用。
一、数码管基本原理数码管是一种由多个发光二极管组成的显示器件,可以显示数字、字母和符号等信息。
常见的数码管有共阳极和共阴极两种类型。
共阳极数码管的阳极连接在一起,共阴极数码管的阴极连接在一起。
数码管的显示原理是利用发光二极管的发光特性,通过控制阳极或阴极的通断来实现数字的显示。
例如,当需要显示数字“1”时,需要使数码管第二个发光二极管发光,此时共阳极数码管的第二个阳极接通,共阴极数码管的第二个阴极断开。
二、数码管驱动电路设计为了控制数码管的显示,需要设计一个驱动电路。
常用的数码管驱动电路有直接驱动电路和多路复用驱动电路两种。
1. 直接驱动电路直接驱动电路是将每个数码管的阳极或阴极分别接到芯片的GPIO 引脚上,通过控制引脚的高低电平来实现数码管的显示。
这种驱动电路简单易懂,但是需要占用较多的GPIO引脚,不适用于控制多个数码管的情况。
2. 多路复用驱动电路多路复用驱动电路是将多个数码管的阳极或阴极连接在一起,通过控制芯片的GPIO引脚和数码管的选择信号,来实现数码管的显示。
这种驱动电路可以控制多个数码管,但是需要进行复杂的信号处理,增加了设计难度。
三、数码管驱动电路制作在制作数码管驱动电路之前,需要准备好以下材料和工具:1. 数码管 x n个2. 74HC595芯片 x 1个3. 电阻220Ω x n个4. 电容0.1μF x 1个5. 面包板 x 1个6. 杜邦线若干7. 电路图设计软件制作步骤如下:1. 根据电路图设计软件,设计并绘制出数码管驱动电路的电路图。
2. 在面包板上按照电路图进行连线,连接数码管、74HC595芯片、电阻、电容等元件。
3. 将面包板连接到开发板上,通过程序控制GPIO引脚的高低电平,实现数码管的显示。
实验四--单片机驱动数码管显示

实验四单片机驱动数码管显示一实验目的1 学习单片机驱动数码管动态显示的电路设计和编程方法二实验原理1、单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。
LED、LCD显示器有两种显示结构:段显示和点阵显示。
七段数码管显示为了显示数字或字符,必须对数字或字符进行编码。
七段数码管加上一个小数点,共计8段。
因此为LED显示器提供的编码正好是一个字节。
字母一般用米字型。
编码表:0x3f 0x06 0x5b 0x4f 0x66 0x6d0 1 2 3 4 50x7d 0x07 0x7f 0x6f 0x77 0x7c6 7 8 9 A B0x39 0x5e 0x79 0x71 0x00C D E F 无显示七段数码管对应八位由低到高:a,b,c,d,e,f,g,dp例:数码管显示2则要点亮a,b,g,e,d段,对应的八位是01011011数码管动态显示方式是将所有显示位的段选择线并联在一起,有统一的I/O资源来控制。
各个数码管公共端也有I/O资源来控制,分时的选通各个数码管进行动态显示。
每个瞬间只能选通一个数码管,人眼的暂留时间为,每个数码管的选通时间必须在以内,通常选择15ms~20ms。
电路图见实验附图。
三实验内容理解动态显示电路图,参考驱动程序,单片机P0口作段码输出控制,P1口作位码控制,使单片机驱动6个7段数码管输出实验当天年、月、日六位数字。
四、实验步骤(1)单片机最小应用系统1的P0口接段码口a~h,P1口接位码口S1~S6。
(2)在KEIL软件下编写程序并调试,完成实验内容要求。
(3)下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。
下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。
五参考程序与电路汇编语言参考程序:ORG 0000HLJMP STARTORG 0030HSTART: MOV R0,#30HMOV R1,#40HMOV 30H,#1MOV 31H,#2MOV 32H,#1MOV 33H,#1MOV 34H,#2MOV 35H,#0START1: MOV DPTR,#TABMOV R3,#6LOOP: MOV A,@R0MOVC A,@A+DPTRMOV @R1,AINC R0INC R1DJNZ R3,LOOPMOV R3,#6MOV R1,#40HMOV A,#20HLOOP1: MOV P1,@R1MOV P2,AACALL DELAYMOV P2,#00HRR AINC R1DJNZ R3,LOOP1LJMP START1TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,58H,5EH,7BH,71H,00H,40H DELAY: MOV R4,#100LOOP2: DJNZ R4,LOOP2RETENDC语言参考程序:#include <reg51.h>#include <intrins.h>unsigned char code table[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char date[]={1,2,1,1,2,0};void delay(){unsigned char j;for(j=0;j<=100;j++);}void main(){unsigned char i,a;while(1){a=0x40;for(i=0;i<6;i++){P1=table[date[i]];a=_cror_(a,1);P2=a;delay();P2=0x00;}}}数码管动态显示电路图(位选信号为高电平,段选信号为高电平):。
数码管驱动与程序设计

数码管驱动与程序设计正文:一:引言数码管是一种常见的显示器件,广泛应用于各类电子设备中。
本文将介绍数码管驱动原理及程序设计方法。
二:数码管基础知识2.1 数码管结构和工作原理:包括共阳极与共阴极两种类型的接线方式以及其对应的工作原理。
2.2 数字编码格式:介绍BCD(Binary-Coded Decimal)和7段数字编码等常见数字表示形式。
三:数位扫描技术3.1 静态扫描法:详解静态扫描法实现多个数位同时显示,并给出相应示意图。
3.2 动态行列交替刷新法:讲解动态行列交替刷新法实现高亮度且节省IO口资源,并提供相关代码片段。
四:驱动芯片选择与使用指南4.1 常用驱动芯片推荐:4.1.a 具有集成锁存功能的74HC595;4.1.b 双向移位寄存器CD4099B;4.c 拓展型单通道LED控制IC MAX7219/722X系列。
五:程序设计方法论述5.1 C语言下直接操作I/O端口进行控制:通过C语言内嵌汇编或者直接操作寄存器的方式进行数码管驱动。
5.2使用Arduino库函数:介绍使用Arduino开发板及其相关库函数实现简单快捷的数码管控制。
六:案例分析6.1 数字时钟设计与实现: 详述数字时钟系统中涉及到的硬件电路和软件程序,并给出完整代码示例。
6.2 温度显示仪表盘设计与实现: 分析温度传感器数据采集以及相应显示方法,提供可参考代码片段。
七:附件:本文档所涉及内容包含以下附件:7.1 示意图:静态扫描法原理示意图;7.2 示例源代码:基于C语言编写的数位扫描程序;7.3 Arduino Library文件等。
注释:- BCD(Binary-Coded Decimal)二进制编码十进制表示形式,将每个十进制数字用4位二进制来表示。
- 共阳极(Common Anode)是指所有LED共享一个正级端口而各自独立地连接至负级或GND引脚;共阴极(Common Cathode)则反之。
数码管驱动程序实例

数码管驱动程序实例介绍数码管是一种常见的显示设备,通常用于显示数字和部分字母。
为了控制数码管的显示内容,我们需要编写一段驱动程序来控制数码管的工作。
本文将介绍一个数码管驱动程序的实例,包括硬件连接、代码编写和运行效果展示。
通过学习这个实例,你将了解到如何使用Arduino来驱动数码管进行数字显示。
硬件连接首先,我们需要准备以下硬件组件:•Arduino开发板•数码管(常见的有共阳极和共阴极两种类型)接下来,按照以下步骤进行硬件连接:1.将Arduino开发板与电脑连接,并打开Arduino IDE。
2.将数码管的引脚与Arduino开发板上的数字引脚相连。
具体连接方式取决于你使用的数码管类型,请参考相关资料或数据手册。
3.使用面包板或杜邦线等工具完成引脚连接。
代码编写完成硬件连接后,我们可以开始编写代码了。
以下是一个简单的数码管驱动程序示例:// 引入库#include <SevSeg.h>// 创建一个SevSeg对象并指定引脚SevSeg sevseg;void setup() {// 初始化数码管sevseg.begin(COMMON_CATHODE, 4, 3, 2, 1, 0, 6, 7, 5, 8);}void loop() {// 显示数字0-9for (int i = 0; i < 10; i++) {sevseg.setNumber(i);sevseg.refreshDisplay();delay(1000);}}代码解析:1.首先,我们引入了一个名为SevSeg的库,该库提供了控制数码管的函数和方法。
2.在setup()函数中,我们初始化了一个SevSeg对象,并指定了数码管的引脚连接方式。
这里使用的是共阳极数码管,如果你使用的是共阴极数码管,则需要将COMMON_CATHODE改为COMMON_ANODE。
3.在loop()函数中,我们通过一个循环来显示数字0-9。
单片机控制的LED数码管动态驱动电路图

单片机控制的LED数码管动态驱动电路图
现在让我们用实验板上的两个数码管来做一个循环显示00~99数字的实验,先来完成必要的硬件部分,
数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同,并且相应的0~9的显示代码也正好相反。
首先我们来介绍两位共阳数码管的单片机驱动方法,电路如下图:
网友可以看到:P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0
口送出数字的显示代码,数码管就能正常显示数字。
因为要显示两位不同的数字,所以必须用动态扫描的方法来实现,就是先个位显示1毫秒,再十位显示1毫秒,不断循环,这样只要扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到两位不同的数字稳定显示。
下面我们再介绍一种共阴数码管的单片机驱动方法,电路如下图:
网友可以看到:+5V通过1K的排阻直接给数码管的8个段位供电,P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,相应的位可以吸入电流。
单片机的P0口输出的数据相当于将数码管不要显示的数字段对地短路,这样数码管就会显示需要的数字。
网友可以看到,共阴数码管的硬件更简单,所以在批量生产时,硬件开销小,节省PCB面积,减少焊接工作量,降低综合成本,所以采用共阴数码管更有利于批量生产,现在销售的试验板都是采用共阴数码管了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.自制单片机之四----数码管电路的制做与驱动c51单片机 2007-08-21 21:17:56 阅读321 评论0 字号:大中小订阅数码管的使用方法与发光二极管没什么区别,只是把七或八只发光二极管组合在一个模件上组成了个8字和小数点,用以显示数字。
为了减少管脚,把各个发光管的其中同一个极接在一起作为共用点,因此就产生了共阳极和共阴极数码之说。
共阳管就是把各个发光管的正极接在一
起,而共阴管就刚好相反。
见下图:
一般来说大部分的逻辑IC的吸收电流要强于输出电流。
因此,大家都爱使用共阴极的数码管,因为可选的IC多些。
很可惜,我的这组数码管是共阳的,因此公共端我打算用三级管来驱动。
我的最小系统板:
我用最常用的S9012,首先我得计划好电路方式,就采用最常用的动态扫描显示。
先搭建最简电路,调试出需采用元件的参数。
先不接上图的R2和74HC244,将数码管一个段直接接地。
调节R1,测得S9012基极电流为0.21mA时集电极也就是数码管上已有40mA,说明放大倍数足够了。
这时接上R2和74HC244,调节R2使数码管电流控制在15mA,这样当8个段一起点亮时三极管上得通过120mA的电流。
而基极上需要0.63mA,为了减小三极管的负荷应使三极管过饱和,,调节R1使基极电流为2mA,此时测得集电极和漏极之间的电压约0.1V。
好!此时R1为2K。
R2为240欧姆。
确定。
接下来就是确定电路。
电路的接口与AT89S51间有三组接口:段码、位码和电源。
为了让AT89S51独立出来这三级接口都采用插针做接口,用排线自由连接到AT89S51的P1-P3口,电源用短路帽连接,完成后的板
子见下图
反面:
说明:
然后就是写程序。
先写个查询方式的吧!
//六位管码管在以0.3秒的间隔在闪烁,这是采用查询方式的,比较占
CUP资源
/********************************************************************定义管脚:P2_0-------上横 a P3_0-------个位
P2_1-----右上竖 b P3_1-------十位
P2_2-----右下竖 c P3_2-------百位
P2_3----- 下横 d P3_3-------千位
P2_4-----左下竖 e P3_4-------万位
P2_5-----左上竖 f P3_5-------十万位
P2_6-----中间横 g
P2_7-----小数点 H
*********************************************************************/
# include <AT89X51.h>
typedef unsigned char uchar;
uchar code bit_num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位码值
表:0,1,2,3,4,5
uchar code meg_val[]={0x03,0x9f,0x25,0x0d,0x99,0x49};//段码值
表:0,1,2,3,4,5
uchar code hello[]={0x03,0xe3,0xe3,0x61,0x91,0xff}; //HELLO uchar code beybey[]={0x89,0x61,0xc1,0x89,0x61,0xc1};//beybey uchar code ab6789[]={0xc1,0x11,0x09,0x01,0x1f,0x41};//ab6789
void delay(int n);
void main(void)
{
uchar i,m;
P2=0xff; //先将段码关闭
P3=0xff; //将位码关闭
delay(20);//等待一会
while(1)
{
for (m=30;m>0;m--) //显示30次约0.3秒
{
for(i=0;i<=5;i++)
{
P2=0xff;
P3=bit_num[i]; //输出位码到P3口
P2=ab6789[i]; //输出段码到P2口
delay(5);
}
}
P2=0xff; //关闭段码
P3=0xff; //关闭位码
delay(1000); //等待0.3秒
}
}
void delay(int n) //子程序
{
int j;
uchar k;
for(j=0;j<n;j++)
{
for(k=255;k>0;k--);
}
}
======================================
当我插把程序写入片子,插上电运行时,是乱码。
你猜怎么回事?原来那个P2口方向是反的,您注意过没有,在AT89S51管脚排列上,P0--P1和P3都是上方为PX_0。
而唯独P2口管脚排列是下方为P2_0。
方向则好是反的。
既然反了,我就把段码表重写一下。
再试,一切正
常。
在这里我说一下段码的排列,好多人问数码管段码是如何排列的,我也在网上查了,好像没有什么标准的排法,随自己的接法而定,这也是导致为什么在网上下载的一些数码管程序在自己的板子上不能正常显示的原因。
就普遍而言我最上面的那张图示的标法最多,在上面程序里原打算也是P2_0对应段码a(也就是上面的横)。
一直到P2_7对应段为h(就是小数点)。
结果哪知道P2口刚好是反的。
这样一来也就是倒过来了,P2_0对应段h(小数点了)。
例如我原先定义的数码管显示“2”段码为10100100B的,一接反了就不再是“2”了。
而要想再显示“2”那就把段码的高低位倒过来。
改为00100101B就OK了。
下面再写个用中断来显示的:
//这是采用中断方式的,也是带闪烁的。
/********************************************************************定义管脚:P2_0------小数点 P3_0------个位
P2_1------中横 P3_1------十位
P2_2------左上竖 P3_2------百位
P2_3------左下竖 P3_3------千位
P2_4------下横 P3_4------万位
P2_5------右下竖 P3_5------十万位
P2_6------右上竖
P2_7------上横
*********************************************************************/
# include <AT89X51.h>
typedef unsigned char uchar;
uchar code bit_num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位码:0,1,2,3,4,5 uchar code meg_val[]={0x49,0x99,0x0d,0x25,0x9f,0x03};//段
码:0,1,2,3,4,5
uchar i,aa; //定义全局变量
bit fg; //定义一个亮起和熄灭标志
void timer0(void) interrupt 1 using 1 //中断程序
{
if (fg) //当fg为1时点亮6位数码管
{ P2=0xff;
if (i>=6)
{
i=0;
}
else
{
P3=bit_num[i]; //输出位码到P3口
P2=meg_val[i]; //输出段码到P2口
i++;
}
}
else //当fg为0时熄灭数码管
{
if(aa==0)
{
P3=0xff;
P2=0xff;
}
}
aa++;
if (aa>=254) //当aa值累加至254时fg标志翻转。
{
fg=~fg;
aa=0;
}
TH0=0xf8; //重装定时器初值,2ms,值为65536-2000
TL0=0x30;
}
void main(void)
{
P2=0xff; //先将段码关闭
P3=0xff; //将位码关闭
TMOD=0x01;//设置T0为模式1
TH0=0xf8; //装入计数初值高位
TL0=0x30; //装入计数初值低位 EA=1; //总充许
ET0=1; //T0充许
fg=1; //将亮、灭标志设置为亮 TR0=1; //启动中断
while(1);
}
OK!。