编程发光二极管、数码管练习(1)
51单片机二极管发光程序

51单片机二极管发光程序
51单片机(STC89C52)可以通过控制IO口来驱动二极管发光。
下面我将为你提供一个简单的例子,演示如何在51单片机上使用C
语言编写程序来控制二极管发光。
首先,我们需要连接一个二极管到单片机的IO口上。
假设我们
将二极管连接到P1口的第0个引脚上。
然后,我们可以使用C语言编写如下的程序来让这个二极管发光:
c.
#include <reg52.h> // 包含51单片机的寄存器定义文件。
void main() {。
P1 = 0xFE; // 将P1口的第0个引脚拉低,使二极管发光。
while(1) {。
// 这里可以添加你需要的其他操作。
}。
}。
在这个简单的例子中,我们使用了reg52.h头文件来包含51单
片机的寄存器定义。
然后在main函数中,我们将P1口的第0个引
脚拉低,使二极管发光。
接着使用一个无限循环来让程序持续执行。
需要注意的是,具体的连接方式和引脚的控制可能会根据具体
的硬件电路设计而有所不同。
在实际的项目中,你可能需要根据具
体的硬件连接情况和需求来编写相应的程序。
另外,如果你需要实现更复杂的功能,比如控制二极管的闪烁、呼吸灯效果等,你可能需要使用定时器中断、PWM控制等技术来实现。
这需要更深入的学习和了解51单片机的相关知识。
希望这个简
单的例子能够帮助你入门。
单片机数码管显示实验报告

单片机数码管显示实验报告单片机数码管显示实验报告引言:数码管是一种常用的显示器件,广泛应用于各种电子设备中。
本实验旨在通过使用单片机控制数码管的亮灭来实现数字的显示,以及通过编程控制数码管显示不同的数字和字符。
1. 实验目的本实验的主要目的是通过使用单片机控制数码管的显示,了解数码管的工作原理,以及掌握单片机编程技巧。
2. 实验材料本实验所需材料包括:单片机(如STC89C52)、数码管、电阻、面包板、杜邦线等。
3. 实验原理数码管是一种由多个发光二极管组成的显示器件,通常由7个发光二极管和一个小数点组成,可以显示0-9的数字和一些字母。
每个发光二极管的亮灭与单片机输出的电平有关,通过控制单片机的输出口,可以实现数码管上不同数字和字符的显示。
4. 实验步骤4.1 连接电路首先,将单片机和数码管通过杜邦线连接在一起。
将数码管的共阳极连接到单片机的输出口,将数码管的每个段连接到单片机的不同IO口。
同时,为了保护数码管和单片机,还需要在数码管的每个段与单片机之间串联一个适当的电阻。
4.2 编写程序使用C语言编写程序,通过控制单片机的输出口,实现数码管上不同数字和字符的显示。
程序的主要逻辑是通过改变单片机输出口的电平来控制数码管的亮灭。
根据数码管的接线方式和编码规则,可以通过设置不同的输出口电平组合来显示不同的数字和字符。
4.3 烧录程序将编写好的程序通过编程器烧录到单片机中。
4.4 运行实验将单片机连接到电源,观察数码管上的显示效果。
通过改变程序中的输出口电平设置,可以实现不同数字和字符的显示。
5. 实验结果通过实验,我们成功地实现了通过单片机控制数码管的显示。
通过改变程序中的输出口电平设置,可以实现数码管上不同数字和字符的显示。
实验结果表明,单片机可以灵活地控制数码管的亮灭,实现多种显示效果。
6. 实验总结通过本次实验,我们深入了解了数码管的工作原理,掌握了单片机编程技巧。
数码管作为一种常用的显示器件,在电子设备中有着广泛的应用。
51单片机数码管编程题

51单片机数码管编程题一、概述51单片机是一种广泛应用于嵌入式系统的微控制器,它具有丰富的I/O端口和定时器资源,可以方便地与数码管等显示器件连接,实现数字和字符的显示。
数码管编程是51单片机应用开发中一项重要的技能,需要掌握基本的数字电路知识和单片机编程技巧。
二、编程要求本次编程任务是实现一个简单的数码管显示程序,要求能够控制数码管依次显示数字0-9,并且能够在数码管熄灭时进行清零操作。
同时,需要考虑到数码管的显示亮度、闪烁等问题,可以通过调整LED 的亮灭时间来实现。
三、编程思路1. 硬件连接:首先需要将数码管与单片机的I/O端口进行连接,可以使用7段数码管译码器芯片(如74LS379)来实现译码和驱动。
同时,需要为数码管和译码器芯片加上适当的电压和地线。
2. 程序设计:根据要求,程序需要包括显示数字、清零和调整亮度的功能。
可以使用定时器中断的方式来实现定时控制数码管的显示和熄灭。
具体来说,可以定义一个数组来存储数字的编码,然后在中断服务程序中依次取出数组中的数字编码,通过I/O端口输出到数码管上。
同时,可以使用另一个数组来存储清零和调整亮度的控制信号,通过I/O端口输出到数码管驱动芯片上。
3. 调试与优化:在程序编写完成后,需要进行调试和优化,确保数码管的显示效果和亮度达到要求。
可以使用调试器将程序下载到单片机中进行测试,也可以使用示波器和万用表等工具来测量数码管驱动芯片的输出信号和电压是否正常。
四、代码实现以下是一个简单的51单片机数码管显示程序示例:```c#include <reg52.h> //包含51单片机寄存器定义的头文件//定义数码管数字编码数组unsigned char code dongsu[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};void delay(unsigned int time) //延时函数{unsigned int i, j;for(i = 0; i < time; i++)for(j = 0; j < 1275; j++);}void display(unsigned char num) //数码管显示函数{P2 = dongsu[num]; //将数字编码输出到数码管上EA = 1; //开启全局中断ET0 = 1; //开启定时器0中断TF0 = 0; //清除定时器0溢出标志位while(!TF0); //等待定时器中断触发EA = 0; //关闭全局中断}void main() //主函数{while(1) //循环显示数字{display(0); //显示数字0delay(100); //延时一段时间display(1); //显示数字1delay(100); //延时一段时间display(2); //显示数字2delay(100); //延时一段时间display(3); //显示数字3delay(50); //短时间延时后熄灭数码管并清零P2 = 0xff; //清零操作,将所有I/O端口设置为高电平 while(P2 != 0xff); //等待I/O端口电平变化完成}}```以上代码实现了基本的数码管显示功能,可以根据实际需求进行修改和优化。
数码管实验报告实训步骤

一、实验目的1. 理解数码管的显示原理,掌握数码管的分类和应用。
2. 学习使用51单片机控制数码管显示数字的方法。
3. 熟悉数码管驱动电路的设计与搭建。
4. 培养动手实践能力和问题解决能力。
二、实验原理数码管是一种常用的显示器件,由多个发光二极管(LED)组成,能够显示数字、字母或符号。
根据LED的连接方式,数码管分为共阴极和共阳极两种类型。
本实验采用共阴极数码管。
共阴极数码管的特点是当LED的阴极接地时,LED会发光,从而显示出相应的数字或符号。
数码管由七个或八个LED组成,分别对应数字0-9或字母A-F。
三、实验器材1. 51单片机开发板2. 共阴极数码管3. 连接线4. 电源5. 示波器(可选)四、实验步骤1. 硬件连接(1)将数码管的阴极(GND)连接到单片机的GND引脚。
(2)将数码管的阳极(A-G或A-F)分别连接到单片机的P0、P1、P2等引脚。
(3)将数码管的位选引脚(DP或COM)连接到单片机的另一个引脚,用于控制数码管的显示。
2. 软件设计(1)编写初始化程序,设置单片机的P0、P1、P2等引脚为输出模式。
(2)编写数码管显示函数,根据需要显示的数字或字母,将对应的段码输出到数码管的阳极引脚。
(3)编写主程序,实现数码管动态显示数字0-9或字母A-F。
3. 动态显示(1)初始化数码管显示,清屏显示数字0。
(2)循环读取按键输入,根据按键值更新数码管显示的数字。
(3)使用定时器中断或延时函数实现数码管动态刷新。
4. 实验测试(1)连接电源,打开单片机开发板。
(2)使用示波器观察数码管的段码引脚,确认数码管显示正常。
(3)通过按键输入,测试数码管的动态显示功能。
五、实验结果与分析1. 硬件连接正确,数码管显示正常。
2. 数码管动态显示数字0-9,按键输入能够实时更新显示的数字。
3. 数码管刷新频率适中,显示效果稳定。
六、实验总结通过本次实验,我们学习了数码管的显示原理和驱动方法,掌握了使用51单片机控制数码管显示数字的技术。
C51单片机编程案例

1、编写EM3-V22单片机实验仪8个LED以1HZ的频率闪烁的程序,其中8个LED接P0口。
#include<reg52.h>#define uint unsigned int void delay(uint z,uint w) {uint x,y;for(x=z;x>0;x--)for(y=w;y>0;y--);}void main(){while(1){P0=0x00;delay(360*2,114);P0=0xff;delay(360*2,114);}}2、点亮EM3-V22单片机实验仪8个LED,以未定义语句实现,其中,8个LED接P0口。
#include<reg52.h> sbit D18=P0^7; sbit D17=P0^6; sbit D16=P0^5; sbit D15=P0^4; sbit D14=P0^3; sbit D13=P0^2; sbit D12=P0^1; sbit D11=P0^0; void main(){while(1){D18=1;D17=1;D16=1;D15=1;D14=1;D13=1;D12=1;D11=1;}}3、使用两种方法通过P0口使单片机开发板上8个二极管从左到右呈流水灯,间隔0.5秒。
第一种方法:(若右到左a=0x80,a=_cror_)#include<reg52.h>#include<intrins.h>#define uint unsigned int void delay(uint z,uint w) {uint x,y;for(x=z;x>0;x--)for(y=w;y>0;y--);}void main(){uint a;a=0x01;while(1){P0=a;delay(360,114);a=_crol_(a,1);}} 第二种方法:(若从右到左a=0x80,a=a>>1) #include<reg52.h>#include<intrins.h>#define uint unsigned intuint i,a;void delay(uint z,uint w){uint x,y;for(x=z;x>0;x--)for(y=w;y>0;y--);}void main(){while(1){a=0x01;for(i=8;i>0;i--){P0=a;delay(360,114);a=a<<1;}}}4、使用数组的方法使单片机上的8个发光二极管呈左右流水灯,间隔0.25s #include<reg52.h>#define uint unsigned intuint code shuzu[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x08,0x04,0x02};void delay(uint w,uint z){ uint x,y;for(x=z;x>0;x--)for(y=w;y>0;y--);}void main(){uint i;while(1){for(i=0;i<14;i++){P0=shuzu[i];delay(360/2,114);}}}5、假设数码管数据线接P0口,编程,使其中一个数码管的轮流显示数字0-F,间隔一秒。
数码管编码

数码管编码
(1)LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母A,B,C,D,E,F,G,DP来表示;
(2)一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、
1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
(3)共阳极:位选为高电平,选中数码管,段选为低电平,选中各数码段;
(4)共阴极:位选为低电平,选中数码管,各段选为高电平,选中各数码段;
共阳极由0到f的编码为: 共阴极由0到f的编码为uchar code table[]={ uchar code table[]={
0xc0,0xf9,0xa4,0xb0, 0x3f,0x06,0x5b,0x4f,
0x99,0x92,0x82,0xf8, 0x66,0x6d,0x7d,0x07,
0x80,0x90,0x88,0x83, 0x7f,0x6f,0x77,0x7c,
0xc6,0xa1,0x86,0x8e}; 0x39,0x5e,0x79,0x71};。
电子技术——几种常用的组合逻辑电路习题及答案

第六章几种常用的组合逻辑电路一、填空题1、(8-1易)组合逻辑电路的特点是:电路在任一时刻输出信号稳态值由决定(a、该时刻电路输入信号;b、信号输入前电路原状态),与无关(a、该时刻电路输入信号;b、信号输入前电路原状态),属于(a、有;b、非)记忆逻辑电路。
2、(8-2易)在数字系统中,将具有某些信息的符号变换成若干位进制代码表示,并赋予每一组代码特定的含义,这个过程叫做,能实现这种功能的电路称为编码器。
一般编码器有n个输入端,m个输出端,若输入低电平有效,则在任意时刻,只有个输入端为0,个输入端为1。
对于优先编码器,当输入有多个低电平时,则。
3、(8-3易,中)译码是的逆过程,它将转换成。
译码器有多个输入和多个输出端,每输入一组二进制代码,只有个输出端有效。
n 个输入端最多可有个输出端。
4、(8-2易)74LS148是一个典型的优先编码器,该电路有个输入端和个输出端,因此,又称为优先编码器。
5、(8-4中)使用共阴接法的LED数码管时,“共”端应接,a~g应接输出有效的显示译码器;使用共阳接法的LED数码管时,“共”端应接,a~g应接输出有效的显示译码器,这样才能显示0~9十个数字。
6、(8-4中)译码显示电路由显示译码器、和组成。
7.(8-4易)译码器分成___________和___________两大类。
8.(8-4中)常用数字显示器有_________,_________________,____________等。
9.(8-4中)荧光数码管工作电压_______,驱动电流______,体积_____,字形清晰美观,稳定可靠,但电源功率消耗______,且机械强度_____。
10.(8-4中)辉光数码管管内充满了_________,当它们被______时,管子就发出辉光。
11.(8-4易)半导体发光二极管数码管(LED)可分成_______,_______两种接法。
12.(8-4中)发光二极管正向工作电压一般为__________。
数码管的使用方法

数码管的使用方法与发光二极管没什么区别,只是把七或八只发光二极管组合在一个模件上组成了个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-----中间横 gP2_7-----小数点 H********************************************************************* /# include <AT89X51.h>typedef unsigned char uchar;uchar code bit_num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位码值表:0,1,2,3,4,5uchar code meg_val[]={0x03,0x9f,0x25,0x0d,0x99,0x49};//段码值表:0,1,2,3,4,5uchar code hello[]={0x03,0xe3,0xe3,0x61,0x91,0xff}; //HELLO uchar code beybey[]={0x89,0x61,0xc1,0x89,0x61,0xc1};//beybeyuchar code ab6789[]={0xc1,0x11,0x09,0x01,0x1f,0x41};//ab6789void 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--);}}======================================当我插把程序写入片子,插上电运行时,是乱码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中关村三小发光二极管按住、按一下练习题
1、请使用1个按键、一个双色发光二极管和单片机,按如下要求设计电路、编写程序:
1.执行程序后,双色发光二极管关闭。
2.按住按键,双色发光二极管闪动绿光,闪动间隔0.5秒。
3.松开按键,双色发光二极管常亮红色。
4.可反复使用按键。
2、请使用单片机、一个双色发光二极管、一个黄色发光二极管和一个按键,按以下要求搭建电路、编写程序:
1.发光二极管须配有620欧姆限流电阻,横向排列,显示颜色清晰,不闪烁。
2.程序执行后,无现象。
3.按下按键时,双色发光二极管亮红色。
4.松开按键后,双色发光二极管亮绿色,并且点亮黄色发光二极管。
3、执行程序后,两个双色发光二极管亮绿光,按住按键两个双色发光二极管交替闪动红光,时间间隔0.4秒。
4、执行程序后,两个双色发光二极管亮绿光,按住按键两个双色发光二极管交替闪动红光,时间间隔0.4秒。
5、利用三个发光二极管设计一个流水彩灯,执行程序后按一下按键,按照从左到右的顺序依次亮红黄绿。
6、执行程序后,双色发光二极管不发光,按一下按键三个双色发光二极管灯闪动红光四次后结束,时间间隔0.3秒。
7、执行程序后,平时无显示,按住一个键0号灯亮,松开回到平时,按住另一个键,1号灯亮,松开回到平时。
8、执行程序后,平时无显示,按一下一个键0号灯亮,按一下另一个键,1号灯亮。
9、平时闪动红色发光二极管,按住按键交替闪红绿灯,松开后回到平时,延时0.2秒。
10、平时绿灯闪动,按住按键红灯闪动,延时0.3秒。
数码管练习题
1、请使用双位数码管和单片机设计电路、编写程序:
1.数码管的位选脚DIG1须连接620欧姆电阻限流,显示的数字清晰,不闪烁。
2.执行程序后,2秒内无任何现象。
3.两秒后,双位数码管的左侧一位保持显示数字“2”。
4.2秒后数码管自动关闭各段,重复执行第2.3.4步。
2、请使用双位数码管和单片机设计电路、编写程序:
1.数码管的位选脚DIG1须连接620欧姆电阻限流,显示的数字清晰。
2.执行程序后,2秒内无任何现象。
3.两秒后,双位数码管的左侧一位保持显示数字“2”。
4.2秒后数码管自动关闭各段,重复执行第2.3.4步。
3、请使用单片机、双位数码管搭建电路、编写程序:
(1)双位数码管中右边一位显示9、8、7,每个数字显示一秒。
(2)数码管显示7完毕后关闭各段,一秒后开始重新显示。
(3)数码管的位选脚(DIG2)须连接620欧姆电阻限流,显示的数字清晰,不闪烁。
4、请使用单片机、数码管搭建电路、编写程序:
1.执行程序后,数码管两位同时显示A;
2.两秒钟后,数码管交替闪动字符b和d;
3.闪动三次后结束程序。
5、请使用单片机、数码管搭建电路、编写程序:
1.数码管的位选脚(DIG2)须连接620欧姆电阻限流,显示清晰稳定。
2.执行程序后,数码管右侧的交替显示字符H、J;
3.交替显示三次后,数码管右侧的一位显示6;
4.三秒后无限循环这个过程。
6、设计程序,执行程序后高位数码管循环显示A b C三次后一直显示0,时间间隔0.4秒。
7、.设计程序,执行程序后高位数码管循环显示0 1,
按住按键键后数码管显示2,时间间隔0.3秒。
8、设计程序,执行程序后高位和低位数码管交替显示F H,按一下按键高位和低位数码管交替显示5 9,时间间隔0.4秒。
9、(1)0号输入口连接开关,0-7输出口连接双位共阳数码管。
(2)执行程序后,平时无显示,按一下按键高位数码管闪动数字2,延时0.3秒。
再按一下开关,回到平时状态。
10、数码管交替显示UF,三次后一直显示0.延时0.6秒。
11、平时数码管一直显示L,按一下+1键交替闪动FC,闪动三次后结束,延时0.6秒。
12、平时数码管无显示,按住+1键交替显示67,松开+1键数码管交替显示89,延时0.6秒。
13.设计程序,执行程序后高位数码管循环显示A b C三次后一直显示0,时间间隔0.4秒。
14、设计程序,执行程序后高位数码管循环显示0 1,按住按键后数码管显示2,时间间隔0.3秒。
15、设计程序,执行程序后高位和低位数码管交替显示F H,按一下按键高位和低位数码管交替显示5 9,时间间隔0.4秒。