单片机实验四 I O显示控制实验(数码管显示实验)
单片机数码管实验报告
单片机数码管实验报告单片机数码管实验报告引言:单片机作为一种重要的嵌入式系统,被广泛应用于各个领域。
在本次实验中,我们将探索单片机与数码管的结合,通过编程控制数码管的显示,实现不同的功能。
本文将详细介绍实验的背景、目的、方法和结果,并对实验过程中遇到的问题进行讨论和总结。
一、实验背景数码管是一种常见的输出设备,用于显示数字和字母等信息。
而单片机则是一种集成了微处理器、存储器和输入输出接口等功能的芯片,具有高度集成、灵活性强的特点。
将单片机与数码管结合起来,可以实现对数字的显示和控制,为实际应用提供了很大的便利。
二、实验目的本次实验的目的是通过编程控制单片机,实现对数码管的显示和控制。
具体包括以下几个方面:1. 学习单片机的基本原理和编程方法;2. 掌握数码管的工作原理和接口电路;3. 理解数码管的编码方式和显示原理;4. 实现基本的数码管显示功能,如显示数字、字母、符号等;5. 探索数码管的扩展应用,如时钟、计时器等。
三、实验方法1. 实验器材准备:本次实验所需的器材包括单片机开发板、数码管、连接线等。
2. 实验步骤:(1)搭建实验电路:将数码管与单片机开发板连接,并根据实验要求进行接线。
(2)编写程序:使用C语言编写程序,通过单片机的GPIO口控制数码管的显示。
(3)下载程序:将编写好的程序下载到单片机开发板上。
(4)实验验证:通过观察数码管的显示情况,验证程序的正确性。
四、实验结果经过实验验证,我们成功实现了对数码管的显示和控制。
通过编写不同的程序,我们可以实现以下几种功能:1. 显示数字:通过控制数码管的不同段点亮,可以显示0-9的数字。
2. 显示字母:通过控制数码管的不同段点亮,可以显示A-Z的字母。
3. 显示符号:通过控制数码管的不同段点亮,可以显示一些常见的符号,如"+"、"-"、"*"等。
4. 显示动画:通过快速切换数码管的显示内容,可以实现简单的动画效果,如闪烁、滚动等。
单片机数码管显示实验总结
单片机数码管显示实验总结单片机数码管显示实验总结一、实验目的本次实验旨在通过单片机控制数码管显示,掌握数码管的工作原理、编程控制方法以及单片机与数码管的接口技术。
通过实验,提高自己的动手能力和编程技能,为今后的学习和实际工作打下坚实的基础。
二、实验原理数码管是一种常用的电子显示器件,它由多个LED组成,通过控制各个LED的亮灭来显示不同的数字或字符。
本次实验采用的是共阴极数码管,它由8个LED组成,通过单片机控制每个LED的亮灭状态来显示不同的数字或字符。
三、实验步骤1.硬件准备(1)选择合适的单片机开发板,如Arduino、STM32等。
(2)购买数码管及相应的驱动电路。
(3)准备杜邦线、电阻、电容等电子元件。
2.硬件连接(1)将数码管与单片机开发板连接起来。
(2)根据数码管驱动电路的要求,连接电源、地线和控制信号线。
(3)连接电源后,打开开发板电源,观察数码管的显示效果。
3.编程控制(1)在开发板上编写程序,控制数码管显示不同的数字或字符。
(2)使用相应的编译器将程序编译成可执行文件,上传到开发板上。
(3)观察数码管的显示效果,调试程序,使其达到预期效果。
4.测试与评估(1)在不同情况下测试数码管的显示效果,如按键输入、传感器数据等。
(2)对程序进行优化和改进,提高程序的效率和稳定性。
(3)总结实验过程中的问题和解决方法,为今后的学习和实际工作提供参考。
四、实验结果及分析1.实验结果在实验过程中,我们成功地实现了对数码管的编程控制,使其能够根据不同的输入显示不同的数字或字符。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
经过调试和改进,我们解决了这些问题,使数码管的显示效果更加理想。
2.结果分析通过本次实验,我们深入了解了数码管的工作原理和编程控制方法,掌握了单片机与数码管的接口技术。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
这些问题的出现可能与硬件连接、编程控制等方面有关。
数码管动态显示实验报告
一、实验目的1. 掌握数码管动态扫描显示的原理和编程实现方法;2. 熟悉单片机与数码管之间的接口连接;3. 学会使用定时器中断控制数码管的动态显示;4. 培养动手能力和问题解决能力。
二、实验原理数码管动态显示是通过单片机控制多个数码管同时显示不同的数字或字符,利用人眼的视觉暂留效应,实现快速切换显示内容,从而在有限的引脚数下显示更多的信息。
实验中,我们采用动态扫描的方式,依次点亮数码管,通过定时器中断控制扫描速度。
三、实验器材1. 单片机开发板(如51单片机、AVR单片机等);2. 数码管(共阳/共阴自选);3. 连接线;4. 电阻;5. 实验台;6. 编译器(如Keil、IAR等)。
四、实验步骤1. 设计电路图:根据实验要求,设计单片机与数码管的连接电路图,包括数码管的段码、位选信号、电源等。
2. 编写程序:使用C语言或汇编语言编写程序,实现数码管的动态显示功能。
(1)初始化:设置单片机的工作模式、定时器模式、端口方向等。
(2)显示函数:编写显示函数,实现数码管的点亮和熄灭。
(3)定时器中断服务程序:设置定时器中断,实现数码管的动态扫描。
3. 编译程序:将编写的程序编译成机器码。
4. 烧录程序:将编译后的程序烧录到单片机中。
5. 连接电路:将单片机与数码管连接好,包括数码管的段码、位选信号、电源等。
6. 运行实验:打开电源,观察数码管的显示效果。
五、实验结果与分析1. 实验结果:数码管按照预期实现了动态显示功能,依次点亮每位数码管,并显示出不同的数字或字符。
2. 分析:(1)通过调整定时器中断的周期,可以改变数码管的扫描速度,从而控制显示效果。
(2)在编写显示函数时,要考虑到数码管的共阳/共阴特性,选择合适的点亮和熄灭方式。
(3)在实际应用中,可以根据需要添加其他功能,如显示时间、温度等。
六、实验总结1. 通过本次实验,掌握了数码管动态显示的原理和编程实现方法。
2. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。
数码管动态显示实验报告
数码管动态显示实验报告1.实验目的:本实验旨在通过使用单片机控制数码管的动态显示,了解数码管的原理和使用方法,加深对单片机控制的理解。
2.实验原理:数码管是由许多发光二极管(LED)组成的,每个数码管有7个发光二极管组成7段,再加上一个小数点(或8段数码管),通过控制每个发光二极管的亮灭状态,可以显示出数字、字母等字符。
本实验使用的是共阴极数码管,在通常情况下,数码管引脚为低电平时亮灯,为高电平时灭灯。
3.实验器材:-STC89C52单片机-共阴极数码管-电阻-面包板及连接线-电源4.实验步骤:步骤1:连接电路将数码管的7个引脚分别连接到单片机的7个I/O引脚上,并通过电阻限流。
连接电路后,确认连接无误。
步骤2:编写程序使用C语言编写程序,实现数码管的动态显示。
可以使用延时函数和位操作函数控制数码管的亮灭,通过改变每个数码管引脚的高低电平状态,实现显示不同的数字、字母。
步骤4:实验观察与分析观察数码管的显示效果,通过改变程序中的参数,可以实现不同的显示效果。
5.实验结果与分析:经过实验,我们成功实现了数码管的动态显示。
通过编写程序,我们可以实现数码管显示数字、字母等不同的字符。
调整程序中的参数,可以实现不同的动态显示效果,如流水灯、闪烁等。
数码管的动态显示是通过改变每个数码管引脚的高低电平实现的,通过快速改变引脚电平状态的时间间隔,创建了肉眼无法察觉的视觉效果,从而实现了动态显示。
此外,通过实验我们还了解到了单片机控制数码管的原理和方法,加深了对单片机控制的理解。
6.实验总结:通过本实验,我们了解到了数码管的动态显示原理和方法,并通过编写程序,成功实现了数码管的动态显示。
同时,我们还巩固了单片机控制的知识,提高了自己的动手能力和问题解决能力。
在今后的学习和工作中,我们将进一步掌握数码管的使用方法,并能够将其应用于更加复杂的应用场景中,实现更多有趣的功能。
数码显示控制实验报告(3篇)
第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
数码显示实验报告
一、实验目的1. 熟悉数码管的结构和工作原理。
2. 掌握数码管与单片机的连接方法。
3. 学习使用动态扫描显示技术实现多位数码管的显示。
4. 培养动手能力和编程能力。
二、实验原理数码管是一种常用的显示器件,由多个发光二极管组成,通过控制发光二极管的亮与灭来显示数字、字母或符号。
本实验采用共阴极数码管,当对应的段码为低电平时,该段发光。
三、实验设备1. 单片机实验箱一台2. 共阴数码管8位3. 电阻若干4. 连接线若干5. 编译器(如Keil uVision)6. 仿真软件(如Proteus)四、实验内容1. 实验电路搭建根据实验原理图,连接单片机、数码管、电阻等元件。
具体连接方法如下:(1)将单片机的P0口与数码管的段码相连。
(2)将单片机的P1口与数码管的位选相连。
(3)将数码管的公共阴极与地相连。
(4)将电阻分别串联在数码管的段码和位选上,用于限流。
2. 编写程序(1)初始化单片机IO口,将P0口设置为输出模式,P1口设置为输出模式。
(2)编写数码管显示函数,根据输入的数字,计算对应的段码,并输出到P0口。
(3)编写动态扫描显示函数,按照一定的时间间隔依次显示各个数码管。
3. 编译程序使用Keil uVision编译器将编写的程序编译成hex文件。
4. 仿真实验使用Proteus软件进行仿真实验,观察数码管显示效果。
五、实验步骤1. 搭建实验电路。
2. 编写程序,实现数码管显示功能。
3. 编译程序,生成hex文件。
4. 在Proteus软件中导入hex文件,进行仿真实验。
5. 观察数码管显示效果,分析实验结果。
六、实验结果与分析1. 实验结果通过仿真实验,数码管能够按照程序的要求显示数字、字母或符号。
2. 实验分析(1)数码管显示原理:数码管通过控制发光二极管的亮与灭来显示数字、字母或符号。
当对应的段码为低电平时,该段发光。
(2)动态扫描显示原理:动态扫描显示是通过依次点亮各个数码管,使多位数码管同时显示。
实验四 LED数码管显示实验报告
实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。
利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。
二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。
定时采用软件查询工作方式,利用JNB TF0, HERE实现。
置P0.6和P0.7端口为0,位选信号选定末位数码管。
通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R0自增1,并赋给A以取出下一个显示段码数据。
为减短代码长度,利用CJNE指令实现循环结构。
当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。
2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。
三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。
led数码管显示控制实验报告
led数码管显示控制实验报告实验名称:LED数码管显示控制实验实验目的:1.了解LED数码管及其工作原理。
2.学习如何控制LED数码管显示数字。
3.加强对单片机控制IO口的编程能力。
实验器材:1.STC89C52RC单片机开发板2.数码管(共阳、共阴)3.杜邦线实验原理:LED数码管是一种数字显示组件,在工业控制、计算机等领域都有广泛应用。
LED数码管在显示数字时,通过LED管来显示数字,根据不同的管脚状态,控制LED管的导通和隔离,间隔时间来控制亮和灭的时间,从而显示出不同的数字。
在STC89C52RC单片机上,通过控制IO的高低电平来控制数码管的显示。
当要显示的数字为0~9时,需要将相应的IO输出低电平,同时将其他IO输出高电平,从而实现数字的显示。
实验步骤:1.将共阳数码管的正极连接到P0口(注意极性),并将共阴数码管的负极连接到P0口(注意极性)。
2.将STC89C52RC单片机开发板连接到电源,将USB转串口线连接到电脑。
3.打开Keil uVision5软件,创建一个新工程,配置完工程后编写控制代码(具体代码见附录)。
4.编写完成后,将代码下载到单片机中,开始实验。
实验结果:成功实现了数字0到9的显示。
通过实验,我们了解了LED数码管的工作原理,学会了控制单片机IO口进行数字的显示,加强了对单片机编程的掌握能力。
附录:代码如下:```#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula = P2^6;sbit wela = P2^7;uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=114;y>0;y--);}void Display(){uchar i;for(i=0;i<10;i++){P0 = table[i]; dula = 0;dula = 1;delay(500);}}。
51单片机(四位数码管的显示)程序
51单片机(四位数码管的显示)程序基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管上显示“P_ _ _”4个字符;2)等待按键,如按了任何一个键,则将这4个字符清除,改为显示“0000”4个字符(为数字的0)。
最佳答案下面这个程序是4x4距阵键盘,LED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!#include<at89x52.h>unsigned char codeDig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1 ,0x86,0x8e}; //gongyang数码管0-F 代码unsigned char k; //设置全局变量k 为键盘的键值/************************************键盘延时函数****************************/void key_delay(void) //延时函数{int t;for(t=0;t<500;t++);}/************************************键盘扫描函数******************************/void keyscan(void) //键盘扫描函数{unsigned char a;P2 = 0xf0; //键盘初始化if(P2!=0xf0) //有键按下?{key_delay(); //延时if(P2!=0xf0) //确认真的有键按下?{P2 = 0xfe; //使行线P2.4为低电平,其余行为高电平key_delay();a = P2; //a作为缓存switch (a) //开始执行行列扫描{case 0xee:k=15;break;case 0xde:k=11;break;case 0xbe:k=7;break;case 0x7e:k=3;break;default:P2 = 0xfd; //使行线P2.5为低电平,其余行为高电平a = P2;switch (a){case 0xed:k=14;break;case 0xdd:k=10;break;case 0xbd:k=6;break;case 0x7d:k=2;break;default:P2 = 0xfb; //使行线P2.6为低电平,其余行为高电平a = P2;switch (a){case 0xeb:k=13;break;case 0xdb:k=9;break;case 0xbb:k=5;break;case 0x7b:k=1;break;default:P2 = 0xf7; //使行线P2.7为低电平,其余行为高电平a = P2;switch (a){case 0xe7:k=12;break;case 0xd7:k=8;break;case 0xb7:k=4;break;case 0x77:k=0;break;default:break;}}}break;}}}}/****************************** ***主函数*************************************/ void main(void){while(1){keyscan(); //调用键盘扫描函数switch(k) //查找按键对应的数码管显示代码{case 0:P0=Dig[0];break;case 1:P0=Dig[1];break;case 2:P0=Dig[2];break;case 3:P0=Dig[3];break;case 4:P0=Dig[4];break;case 5:P0=Dig[5];break;case 6:P0=Dig[6];break;case 7:P0=Dig[7];break;case 8:P0=Dig[8];break;case 9:P0=Dig[9];break;case 10:P0=Dig[10];break;case 11:P0=Dig[11];break;case 12:P0=Dig[12];break;case 13:P0=Dig[13];break;case 14:P0=Dig[14];break;case 15:P0=Dig[15];break;default:break; //退出}}}/**********************************end***************************************/。
实验四--单片机驱动数码管显示
实验四单片机驱动数码管显示一实验目的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;}}}数码管动态显示电路图(位选信号为高电平,段选信号为高电平):。
四位数码管动态显示
实验名称:实验名称四位数码管动态显示一、实验目的1.通过AT89C52单片机控制四位数码管动态显示数字“3210”。
2.用Protues设计、仿真以AT89C52为核心的四位数码管动态显示实验装置。
3.掌握四位数码管的控制方法。
二、实验任务P1端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,接通电源时,显示“”字样;三、实验设备微机1台、Proteus软件1套、GL10型51单片机学习开发板1台。
四、实验电路绘制五、汇编语言程序设计1.设计原理动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。
在进行数码显示的时候,要对显示单元开辟4个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。
对于显示的字形码数据我们采用查表方法来完成。
2.程序框图3.汇编程序ORG 0000H ;初始化START:MOV R0,#0FFH ;控制段选,给R0传递一个初值1111 1111MOV DPTR,#TABLE ;将表头的地址传递给数据指针NEXT:MOV A,R0 ;R0的值传给累加器AMOVC A,@A+DPTR ;查表指令,将TABLE的值按底标给AMOV P2,A ;A的值传给P2接口,显示数字0LCALL DELAY ;调用延时函数,延时INC R0 ;R0加一,MOV A,R0 ;R0的值再次传给A,控制位选移动MOV P1,A ;A的值传给P1口,CJNE R0,#04,NEXT ;判断R0是否等于4,若不等于,转NEXT继续执行,若等于,继续执行下一条程序SJMP START,相当于将值初始化,重新开始。
SJMP START ;跳转到START,R0,R1初始化,重新执行一轮。
DELAY:MOV R6,#4 ;延时程序DL2:MOV R7,#248DL1:DJNZ R7,$DJNZ R6,DL2RETTABLE:DB 3FH,06H,5BH,4FH ;以table为表头地址,依次存入二进制的0.1.2.3END六、Proteus软件模拟仿真七、GL10单片机仿真系统1.实验板连线2.实验操作步骤先把“单片机系统”区域中的P1.0/AD0-P1.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;再把“单片机系统”区域中的P2.0/A8-P2.3/A15用4芯排线连接到“动态数码显示”区域中的0-N端口上。
实验四 数码管显示控制
实验四数码管显示控制一、实验目的1、熟悉Keil uVision2软件的使用;2、掌握LED数码管显示接口技术;3、理解单片机定时器、中断技术。
二、实验设备及仪器Keil μVision2软件;单片机开发板;PC机一台三、实验原理及内容1、开发板上使用的LED 数码管是四位八段共阴数码管(将公共端COM接地GND),其内部结构原理图,如图4.1所示。
图4.1共阴四位八段LED数码管的原理图图4.1表明共阴四位八段数码管的“位选端”低电平有效,“段选端”高电平有效,即当数码管的位为低电平,且数码管的段为高电平时,相应的段才会被点亮。
实验开发板中LED数码管模块的电路原理图,如图4.2所示。
SP1a~hP0.4~P0.7SP2P0.0~P0.3图4.2 LED数码管模块电路原理图图中,当P1.0“段控制”有效时,P0.0~P0.7分别对应到数码管的a~h段。
当P1.1“位控制”有效时,P0.0~P0.7分别对应到DIG1~DIG8。
训练内容一:轮流点亮数码管来检测数码管是否正常。
参考程序:ORG 00HAJMP MAINMAIN:SETB P1.2;LED流水灯模块锁存器的控制位MOV P0,#0FFH;关闭LED灯CLR P1.2SETB P1.3 ;点阵模块的行控制锁存器MOV P0,#0 ;关闭点阵行CLR P1.3MOV A,#11111110B;数码管“位选信号”初值,低电平有效LOOP:SETB P1.1;数码管位控制锁存器有效MOV P0,ACLR P1.1RL A ;形成新的“位选信号”,为选择下一位数码管做准备SETB P1.0;数码管段控制锁存器有效MOV P0,#0FFH ;数码管的所有段点亮,显示“8”CLR P1.0CALL DELAYSJMP LOOPDELAY:MOV R5,#0;延时子程序D1: MOV R6,#0D2:NOPDJNZ R6,D2DJNZ R5,D1RETEND训练内容二:静态显示,0~9计数。
单片机实验报告,数码管显示
单片机实验报告,数码管显示实验目的1、掌握数码管动态扫描显示的原理和编程实现方法;2、掌握软件延时程序的使用。
实验任务利用数码管动态显示,设计一个两位秒表,计时0-59,时间到了显示“FF”,使用软件延时实现。
实验原理数码管动态显示的连接方式是将所有数码管的段码a、b、c、d、e、f、g、dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
所谓动态扫描显示,即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
具体过程是:当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的位选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中每位数码管的点亮时间为2ms左右,由于人的视觉暂留现象及发光极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
实现延时通常有两种方法:一种是硬件延时,这需要用到单片机的定— 1 —时器,这种方法可以提高CPU的工作效率,也能做到精确控制时间,此方法将在实验四中再学习;另一种方法是软件延时,这种方法主要采用循环体进行。
可以采用for循环以及for循环嵌套的方式达到粗略的长时间延时,利用Keil软件可以调试和观察for语句的延时时间。
实验结果:总结:本次实验我很好的复习了有关C语言的相关语句知识点,合理的运用到了单片机的程序编码中去,但实验过程中,也出现了很多问题。
比如在运行过程中,数码管会乱码,检查后发现是扫描信号端口错误,将扫描信号端口顺序调换,重新运行则解决了乱码问题。
共阴数码管电路0到15的显示参数代码表要记清楚。
单片机led数码管的静态控制显示方式实验报告
单片机led数码管的静态控制显示方式实验报告开发环境:
本实验使用的是Keil uV5,MCU为STC89C52RC,和四位数码管模块。
实验目的:
本次实验是静态控制数码管显示,目的是使用单片机控制四位数码管上显示一个数字。
实验准备:
硬件:STC89C52RC单片机模块,4位数码管模块;
软件:Keil uV51.3 + STC-ISP软件;
实验原理:
单片机控制数码管显示,需要使用三个管脚控制,分别为A,B,C,当A为高电平时,B和C同时为低电平时,这时显示第一个数字;当B为高电平时,A和C同时为低电平时,这时显示第二个数字;当C为高电平时,A和B同时为低电平时,这时显示第三个数字。
实验步骤:
1. 设计电路:确定STC89C52RC控制四位数码管控制连接。
2. 安装软件:安装Keil uV5以及STC-ISP软件。
3. 编程:根据原理进行程序编写,编写完整的显示代码,实现任意数字的显示。
4. 烧录:将编写的程序通过STC-ISP软件烧录,然后重新启动单片机。
5. 测试:当烧写完成,四位数码管显示正确且稳定时,表示实验测试成功。
实验结果:
实验成功,STC89C52RC控制四位数码管显示正确且稳定。
实验结论:
实验证明,基于STC89C52RC芯片,通过编写程序,可以实现不同数字或字母在四位
数码管上的显示,达到定量和定性的要求。
实验四 数码管的动态显示实验
实验四数码管的动态显示实验班级通信1102 姓名谢剑辉学号20110803223 指导老师袁文澹一、实验目的熟悉掌握数码管动态显示的基本方法;根据已知电路和设计要求在实验板上实现数码管动态显示。
根据已知电路和设计要求在PROTEUS平台仿真实现控制系统。
二、实验内容1、在STC89C52实验平台的4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容。
2、思考:如何实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣。
三、实验原理实验要求“4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容”。
动态扫描可以实现要求。
简单地说,动态扫描就是选通一位,送一位数据。
原理图中的P10~P13是位选信号,即选择哪个数码管显示数字;P00~P07是段码,即要显示的数字。
可以通过依次选通一位7段数码管并通过P0端口送出显示数据。
由于人眼的视觉残留原理,如果这种依次唯一选通每一位7段数码管的动作在0.1s内完成,就会造成多位数码管同时点亮显示各自数字的假象。
本实验使用中断,实现每2s更新一次数字。
四、实验方法与步骤设计思路和方法:1、根据电路图,分析数码管动态显示的设计思路,使用中断实现每2秒更新一次数字的设计思路,以及实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣的设计思路。
(1)数码管动态显示的原理如“实验原理”里所述,不赘述;(2)使用中断实现每2s更新一次数字的设计思路:本次实验使用Timer0中断,由于其定时时间最大为65536us,不能实现2s的长延时,那么可以使用多次中断来实现,并且在中断到来时,不断地死循环显示数字,即根据动态显示原理“选通一位,来一位数据”。
由于最大的数字为9,则(x%10),(x+1)%10,(x+2)%10,(x+3)%10分别是千位,百位,十位,个位上的数字。
单片机数码管显示实验心得
单片机数码管显示实验心得
一、实验介绍
本次实验是单片机数码管显示实验,通过单片机控制数码管的显示,
学习单片机的基本操作和编程技巧。
二、实验器材
1. 单片机开发板
2. 数码管模块
3. 杜邦线
三、实验原理
数码管是一种数字显示器件,由多个发光二极管组成。
常见的数码管
有共阳极和共阴极两种类型。
共阳极数码管的所有阳极都连接在一起,而共阴极数码管的所有阴极都连接在一起。
在控制数码管时,需要根
据具体情况选择合适的驱动方式。
四、实验步骤
1. 连接硬件:将数码管模块与单片机开发板通过杜邦线连接。
2. 编写程序:使用Keil C51软件编写程序,实现对数码管的控制。
3. 下载程序:将程序下载到单片机开发板中。
4. 调试程序:通过调试工具观察程序运行情况,并进行调试修改。
五、编程要点
1. 数字转换:将需要显示的数字转换为对应的七段码。
2. 位选控制:根据具体情况选择共阳极或共阴极驱动方式,并实现位选控制。
3. 时序控制:通过延时函数或定时器实现数码管的动态显示效果。
六、实验心得
本次实验让我深入了解了单片机的基本操作和编程技巧,对数码管的控制有了更深入的了解。
在编写程序过程中,我遇到了一些问题,如数字转换不正确、位选控制不准确等,通过查阅资料和调试程序最终得以解决。
同时,在进行实验前需要认真检查硬件连接是否正确,避免出现连接错误导致无法正常工作的情况。
总之,本次实验让我收获颇丰,对单片机编程有了更深入的理解和掌握。
单片机实验报告二-数码管显示实验
单片机实验报告二-数码管显示实验摘要:本实验使用单片机控制数码管的显示,在实验过程中通过学习单片机的GPIO口的编程,调试程序、调节电路来达到正确的显示效果。
最终按照要求实现了单片机控制数码管的计数器。
关键词:单片机、数码管、GPIO口、计数器一、实验介绍数码管是一种介于机械仪表和液晶显示器之间的电子显示器件,广泛应用于计时器、计数器、仪表等电子产品中。
本实验旨在通过单片机控制数码管的显示来加深对GPIO口的使用和调试程序的理解,同时了解数码管的原理。
本实验主要分为两部分:数码管显示基础实验和数码管控制开关实验。
通过这两部分的实验可以了解数码管的工作原理和单片机的基本控制方式。
二、实验原理2.1 数码管的基本原理数码管显示器将数字显示为一组符号,例如“0”到“9”。
表示不同数字的符号被编码成一个数字码。
七段数码管用一个七段数码字母来表示数字,如下表所示:| 数字 | a | b | c | d | e | f | g || ---- | - | - | - | - | - | - | - || 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 || 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 || 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 || 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 || 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 || 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 || 6 | 0 | 0 | 1 | 1 | 1 | 1 | 1 || 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 || 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 || 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |通过控制数码管的七个LED灯的亮灭,可以实现不同符号显示。
数码管显示实验报告
一、实验目的1. 理解数码管的工作原理及驱动方式。
2. 掌握51单片机控制数码管显示的基本方法。
3. 学会使用动态扫描显示技术实现多位数码管的显示。
4. 提高编程能力和实践操作能力。
二、实验原理数码管是一种常用的显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母或其他符号。
根据LED的连接方式,数码管可分为共阴极和共阳极两种类型。
本实验使用的是共阳极数码管。
51单片机控制数码管显示的基本原理是:通过单片机的I/O口输出高低电平信号,控制数码管的各个段(a-g)的亮灭,从而显示相应的数字或符号。
动态扫描显示技术是将多个数码管连接到单片机的I/O口,通过快速切换各个数码管的显示状态,实现多位数码管的显示。
三、实验器材1. 51单片机实验板2. 共阳极数码管3. 电阻、电容等元件4. 仿真软件(如Proteus)5. 编译器(如Keil)四、实验步骤1. 搭建电路:按照实验原理图连接51单片机、数码管和电阻等元件。
2. 编写程序:使用Keil软件编写控制数码管显示的程序。
程序主要包括以下部分:a. 初始化:设置单片机的工作状态,配置I/O口等。
b. 显示函数:根据需要显示的数字或符号,控制数码管的各个段亮灭。
c. 动态扫描函数:实现多位数码管的动态显示。
3. 编译程序:将编写好的程序编译成机器码。
4. 仿真测试:使用Proteus软件对程序进行仿真测试,观察数码管的显示效果。
5. 实验验证:将程序烧录到51单片机实验板上,进行实际测试。
五、实验结果与分析1. 实验结果:通过仿真测试和实际测试,数码管能够正确显示0-9的数字。
2. 结果分析:实验结果表明,51单片机可以成功地控制数码管显示数字。
动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。
六、实验总结1. 通过本次实验,我们掌握了51单片机控制数码管显示的基本方法,提高了编程能力和实践操作能力。
2. 动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。
工作报告之数码管显示实验报告
数码管显示实验报告【篇一:嵌入式实验报告数码管显示实验】实验报告课程名称实验仪器实验名称系别专业班级/学号学生姓名实验日期成绩指导教师嵌入式系统编程实践清华同方辰源嵌入式系统实验箱实验四:数码管显示实验 __计算机学院_ _ 2013年10月11日___________________实验四:数码管显示实验一、实验问题回答(1)如何设置功能3,4中的循环速度?答:利用系统systick handler中断,控制循环速度void systick_handler (void){event = 1;}(2)若是想实现类似实验(三)通过键盘动态控制循环速度,考虑一下应该如何设计?答: systickperiodset(sysctlclockget() / x)//设置x的大小就可以控制循环的速度。
void reset_counter_speed(int x){systickintdisable();systickdisable();systickperiodset(sysctlclockget() / x);// 设置x,控制计数频率,值与频率成正比systickenable();systickintenable();},达到预期的效果。
二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)学习、了解和掌握数码管工作原理和使用方法实验结果及检查(1)默认在在oled屏幕上分行显示自己的学号、姓名、项目序号、时间,如“2010011001”、“zhangsan”、“work4”、“2012-11-”(2)首先在屏幕上显示四个功能选单,通过键盘a-f键选择不同功能,选择后屏幕显示相关功能提示,接受键盘输入的数字键0-9并在数码管上显示。
如:开始显示:“please choose the function:” “a: ?” “b: ?” “c: ?” “d: ?”按下“a”键后,显示”now you choose function a”(3)按下键盘后,根据不同功能在数码管上显示按键字符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子信息工程学系实验报告
课程名称:单片微型计算机与接口技术Array
实验项目名称:实验四 I/O显示控制实验实验时间:
班级: **** 姓名:**** 学号:********
一、实验目的:
1、熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。
2、了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。
3、学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。
二、实验环境:
1、Windows XP系统;
2、Keil uVision2、proteus系列仿真调试软件
三、实验原理:
1、LED数码管的结构和原理
LED显示器是由发光二极管显示字段的显示器件。
在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种。
(a)共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮;
(b)共阳极LED显示器的发光二极管阳极并接。
2、七段显示器与单片机接口:只要将一个8位并行输出口与显示器的发光二极管引脚相连即可。
8位并行输出口输出不同的字节数据即可获得不同的数字或字符,如下表所示。
通常将控制发光二极管的8位字节数据称为段选码。
八段选码(显示码)的推导(以共阳数码管显示C为例):
要显示C则a、f、e、d四个灯亮2.为是共阳数码管,则a、f、e、d应送0时亮3.dp-a为11000110B 3、多位数码管的显示:电路结构、动态静态两种实现原理:
LED显示器有静态显示与动态显示两种方式。
(1) LED静态显示方式
各位LED的位选线连在一起接地或接+5V;每位LED的段选线(a-dp)各与一个八位并行口相连;
在同一时间里每一位显示的字符可以各不相同。
(2) LED动态显示方式
将所有LED的段选线并联在一起,由一个八位I/O口控制,而位选线分别由相应的I/O口线控制。
如:8位LED动态显示电路只需要两个八位I/O口。
其中一个控制段选码,另一个控制位选。
四、实验内容过程及结果分析:用protues进行流水灯的仿真需要的元件有AT89C51、CAP、BUTTON、LED-BLUE、RES、CRYSTAL、7SEG-MPXI1CC画出仿真图
1、在左边第3位显示 5程序如下: #include "reg51.h" void delay(int z) {int i,j;
for(i=110;i>0;i--) for(j=z;j>0;j--); } main() {
unsigned char i; while(1)
{ P2=0xdf; P0=0x6d; delay(400); } }
图4.1 左边第3位显示5
2、在左边第2位循环显示 1-8程序下所示: #include "reg51.h" unsigned char code tab[]={0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,}; void delay(int z) for(i=50;i>0;i--) {int i,j; for(j=z;j>0;j--); } main() { unsigned char i; while(1) { for(i=0;i<8;i++) { P2=0xfd; P0=tab[i]; delay(500);
} P2=0x00 ; } }
图4.2左边第2位循环显示1-8
3、在数码管上"同时“显示1-8程序如下
#include"reg51.h" Unsignedcharcode
tab[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,}; unsignedcharcode
chr[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,}; main()
{unsigned char i; while(1) {
for(i=0;i<=7;i++) {
P2=chr[i];
P0=tab[i]; delay(5); } }
图4.3 为同时显示1-8
4、开关控制显示内容(参考课本) 开关不同位置分别显示12345和HELLO
#include<reg51.h>
#define uint unsigned int #define uchar unsigned char sbit P13=P1^3; sbit P16=P1^6;
uchar code tab1[]={0x06,0x5b,0x4f,0x66,0x6d}; uchar code tab2[]={0x76,0x79,0x38,0x38,0x3f}; uchar code wei[]={0xfe,0xfd,0xfb, 0xf7,0xef,0xdf,0xbf,0x7f}; void delay(uint a) {
uint i,j; for(i=a;i>0;i--) for(j=19;j>0;j--); }
void main() { uchar num; while(1)
{ for(num=0;num<5;num++) {
P2=wei[num]; if(P16==0)
{
P0=tab1[num]; delay(10); } if(P13==0) {
P0=tab2[num]; delay(10); }
} P0=0;
} }
图4.4 开关控制不同位置分别显示12345和HELLO 5、用一个开关控制(开始)8从右边跑马8遍程序如下所示:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit P16=P1^6;
uchar code wei[]={0xfe,0xfd,0xfb, 0xf7,0xef,0xdf,0xbf,0x7f}; void delay(uint a)
{
uint i,j;
for(i=a;i>0;i--)
for(j=6524;j>0;j--);
}
void main()
{
uchar num1,num2;
while(1) {
if(P16==0)
{
for(num1=0;num1<8;num1++)
{
P0=0x7f;
for(num2=0;num2<8;num2++) {
P2=wei[num2];
delay(5);
}
}
P0=0;
}
}
}
图4.5 8从右边跑马8遍
五、实验心得:
通过实验熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。
了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。
学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。