单片机数码管静态显示实验
关于单片机的一些小实验_06 一位数码管静态显示
![关于单片机的一些小实验_06 一位数码管静态显示](https://img.taocdn.com/s3/m/428bba04763231126edb1154.png)
#define SMG6_ON() (P0_5=0) //定义"SMG6_ON()"为P0.5输出低电平,选中数码管6
#define SMG6_OFF() (P0_5=1) //定义"SMG6_OFF()"为P0.5输出高电平,不选中数码管6
// 0 1 2 3 4 5 6 7 8 9 A b C d E F
/********************************************************************************************
*函数名称:main()
*功能:控制数码管1~8每个依次显示"0"~"F"这十六个字符
* 4.短接P0.0__SMG1
*短接P0.1__SMG2
*短接P0.2__SMG3
*短接P0.3__SMG4
*短接P0.4__SMG5
*短接P0.5__SMG6
*短接P0.6__SMG7
*短接P0.7__SMG8
*短接P2.7__SI1
*短接P2.6__RCK1
*短接P2.5__SCK1
*日期:2014年04月23号
typedef unsigned int uint32; //无符号32位整型变量
typedef signed int int32; //有符号32位整型变量
typedef float fp32; //单精度浮点数(32位长度)
typedef double fp64; //双精度浮点数(64位长度)
单片机数码管显示实验总结
![单片机数码管显示实验总结](https://img.taocdn.com/s3/m/4954c40f777f5acfa1c7aa00b52acfc789eb9fd5.png)
单片机数码管显示实验总结单片机数码管显示实验总结一、实验目的本次实验旨在通过单片机控制数码管显示,掌握数码管的工作原理、编程控制方法以及单片机与数码管的接口技术。
通过实验,提高自己的动手能力和编程技能,为今后的学习和实际工作打下坚实的基础。
二、实验原理数码管是一种常用的电子显示器件,它由多个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.结果分析通过本次实验,我们深入了解了数码管的工作原理和编程控制方法,掌握了单片机与数码管的接口技术。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
这些问题的出现可能与硬件连接、编程控制等方面有关。
数码显示控制实验报告(3篇)
![数码显示控制实验报告(3篇)](https://img.taocdn.com/s3/m/7492360da55177232f60ddccda38376bae1fe04c.png)
第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单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
51单片机静态数码管显示数字程序
![51单片机静态数码管显示数字程序](https://img.taocdn.com/s3/m/74bbdf11c281e53a5802fff2.png)
{
Delay10ms();
i++;
}
i=0;
} if(K2==0)
//检测按键 K2 是否按下
{
Delay10ms();
if(K2==0)
{
j=9;
}
while((i<50)&&(K2==0))
{
Delay10ms();
i++;
}
i=0;
} if(K3==0)
//检测按键 K3 是否按下
{
Delay10ms();
for(b=38;b>0;b--)
for(a=130;a>0;a--); }
//2222222222222222222222222222222222222222222222222222222222222222
//2222222222222222222222222222222222222222222222222222222222222222
//1111111111111111111111111111111111111111111111111111111111111111111
//1111111111111111111111111111111111111111111111111111111111111111111
/******************************************************************************
void Delay10ms(); //延时 10ms
/******************************************************************************
单片机实验报告——LED数码管显示实验
![单片机实验报告——LED数码管显示实验](https://img.taocdn.com/s3/m/f154a41878563c1ec5da50e2524de518974bd350.png)
单⽚机实验报告——LED数码管显⽰实验(此⽂档为word格式,下载后您可任意编辑修改!)《微机实验》报告LED数码管显⽰实验指导教师:专业班级:姓名:学号:联系⽅式:⼀、任务要求实验⽬的:理解LED七段数码管的显⽰控制原理,掌握数码管与MCU的接⼝技术,能够编写数码管显⽰驱动程序;熟悉接⼝程序调试⽅法。
实验内容:利⽤C8051F310单⽚机控制数码管显⽰器基本要求:利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
提⾼要求:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:yyyy (年份)mm.dd(⽉份.⽇).asm;Description: 利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
;Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000H ;复位⼊⼝AJMP MAINORG 000BH ;定时器0中断⼊⼝AJMP TIME0MAIN: ACALL Init_Device ;初始化配置MOV P0,#00H ;位选中第⼀个数码管MOV R0,#00H ;偏移指针初值CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#06HMOV TL0,#0C6H ;赋初值,定时1sLOOP: MOV A,R0ADD A,#0BH ;加偏移量MOVC +PC ;查表取,段码MOV P1,A ;段码给P1显⽰SETB TR0 ;开定时LOOP1: JNB PSW.1,LOOP1 ;等待中断CLR PSW.1INC R0 ;偏移指针加⼀CJNE R0,#0AH,LOOP3MOV R0,#00H ;偏移指针满10清零AJMP LOOP ;返回DB 0FCH,60H,0DAH,0F2H,66H ;段码数据表:0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H; 5、6、7、8、9 ;***************************************************************** ; 定时器0中断;***************************************************************** TIME0: SETB PSW.1 ;标志位置⼀MOV TH0,#06H ;定时器重新赋值MOV TL0,#0C6HLOOP3: CLR TR0 ;关定时RETI;***************************************************************** ;初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 -Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 -Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend提⾼部分:;*********************************************************;Filename: shumaguan2.asm;Description:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:; 2012 (年份); 12.07(⽉份.⽇); 12.34(⼩时.分钟);Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000HAJMP MAINORG 000BHAJMP TIME0MAIN: ACALL Init_DeviceMOV R0,#00H ;⽤于位选MOV R1,#00H ;⽤于段选MOV R2,#22H ;置偏移量,⽤于控制模式MOV R4,#8MOV R5,#250CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#0FFHMOV TL0,#0C0H ;定时器赋初值1msBACK: MOV P0,R0 ;位选MOV A,R0ADD A,#40H ;选下⼀位MOV R0,AMOV A,R1ADD A,R2 ;加偏移量MOVC +PC ;查表取段码MOV P1,A ;段码给P1显⽰LOOP: SETB TR0 ;开定时HERE: JNB PSW.1,HERE ;等待中断CLR PSW.1DJNZ R5,BACKMOV R5,#250DJNZ R4,BACKMOV R4,#8 ;循环2000次(2s)MOV A,R2ADD A,#04H ;偏移量加04H,到下⼀模式段码初值地址 MOV R2,ACJNE R2,#2EH,LOOP2MOV R2,#22H ;加三次后偏移量回到初值LOOP2: AJMP BACK ;返回进⼊下⼀模式;段码数据表:DB 0DAH,60H,0FCH,0DAH ; 2102DB 0E0H,0FCH,61H,60H ; 701. 1DB 66H,0F2H,0DBH,60H ; 432. 1;*****************************************************************; 定时器0中断;***************************************************************** TIME0: MOV TH0,#0FFH MOV TL0,#0C0HCLR TR0SETB PSW.1INC R1 ;偏移指针加⼀CJNE R1,#04H,LOOPMOV R1,#00H ;偏移指针满04H清零RETI;***************************************************************** ; 初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Open-Drain, Digital; P0.3 - Unassigned, Open-Drain, Digital; P0.4 - Unassigned, Open-Drain, Digital; P0.5 - Unassigned, Open-Drain, Digital; P0.6 - Unassigned, Open-Drain, Digital; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Open-Drain, Digital; P1.1 - Unassigned, Open-Drain, Digital; P1.2 - Unassigned, Open-Drain, Digital; P1.3 - Unassigned, Open-Drain, Digital; P1.4 - Unassigned, Open-Drain, Digital; P1.5 - Unassigned, Open-Drain, Digital; P1.6 - Unassigned, Open-Drain, Digital; P1.7 - Unassigned, Open-Drain, Digital; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital; P2.2 - Unassigned, Open-Drain, Digital; P2.3 - Unassigned, Open-Drain, Digitalmov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend六、程序测试⽅法与结果、软件性能分析软件调试总体截图:基础部分:软件运⾏时,我们发现P0端⼝为00H,P1端⼝以依次为FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H。
单片机实验两位数码管显示报告
![单片机实验两位数码管显示报告](https://img.taocdn.com/s3/m/56ef95609b6648d7c1c74641.png)
一、实验目的1、在之前单键实验和中断控制数码管“静态”显示实验的基础上,把单键判断、数码管显示和中断结合起来编写中断程序实现单键控制一位数码管;2、在实现控制一位数码管显示的基础上用单键控制两位数码管显示。
二、实验所需器材与软件硬件:电脑、传输线、AT89S52单片机软件:编程软件Keil uVision3;读写软件MePro V5.02三、实验程序的及其分析:1、单键控制一位数码管显示主要设计思路:在中断主程序后加入单键判断键按下情况判断语句,把数码管显示程序放在中断子程序中。
当有键按下且有中断请求时,重新给数码管显示偏移地址赋值,从而改变显示内容。
程序:ORG 0000HAJMP MAIN ;转向主程序ORG 001BH ;中断矢量地址AJMP T_INT ;转向中断服务程序MAIN: ;主程序标号MOV R3,#0 ;表偏移地址MOV DPTR,#TAB ;把表头地址赋值给寄存器DPTRMOV TMOD,#10H ;设定定时器工作于模式1MOV TH1,#0FEH ;定时器赋初值MOV TL1,#0EHSETB ET1 ;开中断SETB EASETB TR1 ;启动定时器LOOP1:JNB P1.4, LOOP4AJMP LOOP1LOOP4:ACALL DELAYJNB P1.4, LOOP_ADD 单键按下判断程序LOOP_ADD:INC R3CJNE R3,#10,LOOP8MOV R3,#0LOOP8: AJMP LOOP1T_INT: MOV TH1,#0FEHMOV TL1,#0EHMOV A,R3 中断程序内嵌的数码管显示程序MOVC A,@A+DPTRMOV P0,AMOV P2,#11111110BRETITAB:DB 0C0H,0F9H,0A4H,0B0H ,99H,92H,82H,0F8H ;表内容DB 80H,90HDELAY:MOV R5,#64HLOOP5:MOV R7,#0FFHLOOP6:NOPNOP 用于单键按下防抖动的延时程序DJNZ R7,LOOP6DJNZ R5,LOOP5RET2、单键控制两位数码管显示设计思路:用两个寄存器分别存放数码管显示的个位和十位,并且在数码管显示程序中用移位指令对数码管的位码进行移位,使每次执行中断程序时显示一位数,循环两次中断程序后“静态”显示两位数字。
实验四 数码管显示控制
![实验四 数码管显示控制](https://img.taocdn.com/s3/m/78cd1f56a200a6c30c22590102020740be1ecdbe.png)
实验四数码管显示控制一、实验目的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计数。
51单片机数码管显示实验报告
![51单片机数码管显示实验报告](https://img.taocdn.com/s3/m/9d0b2d0d50e2524de5187ee8.png)
51单片机数码管显示实验实验内容:1)编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复。
2)C语言程序#include<reg52.h>#define uint unsigned intvoid display();void num();int i;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; //共阳极数码管0-F编码表void delayms(uint);void main(){while(1){num();display();}}void display(){P2=0xff;//消隐P0连接段选,P1节位选P1=0x00;//8个数码管同时显示P2=table[i];//数码管显示数码0 delayms(1000);//延时5ms}void num(){if(i<9)i++;elsei=0;}void delayms(uint x){uint i,j;for(i=0;i<x;i++)for(j=0;j<110;j++);}3)汇编语言:ORG 0000HLJMP MAINORG 0100H;P2连接段选,P1节位选MAIN: MOV P1,#00H ;所有的数码管都显示MOV R2,#00H ;从0开始显示LOOP: MOV A,R2 ;为下面的基址加变址寄存器寻址方式做准备MOV DPTR,#TAB1 ;把数组的首地址赋给DPTRMOVC A,@A+DPTR ;取数组中的数字MOV P2,A ;把取得的值送给P0口显示ACALL DELAY ;延时一会INC R2 ;为取下一个数加一CJNE R2,#10,LOOP ;只要数小于10就继续循环显示MOV R2,#00H ;如果加到10后重新从0开始LJMP LOOP ;进入循环函数;****************************************** TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H; 数组DB 92H,82H,0F8H,80H,90HRET;****************************************** DELAY: MOV R3,#3 ;延时函数DE1: MOV R4,#0FFHDE2: MOV R5,#0FFHDJNZ R5,$DJNZ R4,DE2DJNZ R3,DE1RET;*************************************************END(3)编写程序学习数码管的动态显示,让8只数码管从从左往右显示1、2、3……8。
单片机实验报告——LED数码管显示实验
![单片机实验报告——LED数码管显示实验](https://img.taocdn.com/s3/m/9d25722c640e52ea551810a6f524ccbff121cac9.png)
单片机实验报告——LED数码管显示实验引言单片机是一种基础的电子元件,作为电子专业的学生,学习单片机编程是必不可少的。
在单片机编程实验中,学习如何使用IO口驱动LED数码管显示是重要的一部分。
在此次实验中,我们用到的是STM32F103C8T6单片机,与之相配套的是LED数码管、杜邦线等元件,并利用Keil uVision5软件进行编程操作。
本文的目的是通过实验与实验数据的分析说明单片机控制LED数码管的方法,希望对单片机初学者有所帮助。
实验原理1.LED数码管简介LED数码管是利用发光二极管实现数字和字母的显示,其外观形式有共阳和共阴两种。
共阳型数码管的共阳端是接在公共的端子上,数字和字母的每一个元素(即1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)的生命延伸出去,称为”高”电平;共阴型数码管的共阴端是接在公共的端子上,数字和字母的每一个元素的生命也是分别延伸出去,但称为”低”电平。
2.STM32F103C8T6单片机STM32F103C8T6单片机是一款功能完备的32位MCU产品,它具有高性能,低功耗的特点,可广泛应用于许多硬件系统。
此次实验所需的LED数码管的显示量是5个(共阳型),因此我们只需要5个IO口即可将STM32F103C8T6单片机与LED数码管连接起来。
实验材料STM32F103C8T6单片机、LED数码管、杜邦线、电容、电阻、面包板等。
实验步骤1.硬件连接:将LED数码管的针脚连接到单片机的IO口,如下图所示:其中P0-P4分别代表数字0-4,PE2口作为LED点亮控制口,分别接入面包板中。
2.软件设置:使用Keil uVision5进行程序编写,将代码下载到单片机控制器内,开启电路,即可观察到LED数码管上的数字进行了变化。
代码如下所示:实验结果将程序下载到开发板后,启动单片机,即可看到红色LED数码管逐个显示从0-9的数字。
达到9后又从0开始循环。
实验过程及结论本次实验中彻底了解到了用单片机控制LED数码管的方法,单片机控制LED数码管变化是通过选中不同的IO口来完成的,利用Keil uVision5软件可以完成程序编写。
数码管静态显示实验,单片机实验报告
![数码管静态显示实验,单片机实验报告](https://img.taocdn.com/s3/m/5d2106134693daef5ff73d69.png)
数码管静态显示实验,单片机实验报告数码管静态显示实验一.实验目的 1.熟悉数码管的功能和使用。
2.熟悉延时子程序的编写和使用。
3.初步熟悉单片机软硬件设计方法。
二.实验仪器计算机、Keil 编程环境、普中下载软件、单片机开发实验仪。
三.实验原理与内容P0 口做输出口,接一个共阳极数码管,要求循环显示。
共阳极数码管字形表(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,-共17 个字形码)0C0H,0FCH,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0 A1H,86H,8EH,0BFH。
四 . 实验线路及原理五 . 注意事项1.安装实验仪时,先接通讯串口线,再开电源开关。
2.实验过程中,在进行接插线操作时,必须先关闭电源。
六 . 实验步骤1、主机连线说明:JP10 单片机0 P0 口(8 8 位)JP3 共阳极数码管七 . 实验步骤2.打开 Keil 编程软件编写程序,并进行汇编产生HEX 文件。
(1)流程图(2)汇编源程序ORG 00H LJMP MAIN ;初始位置直接跳转MAIN 主程序START; MOV R2,#0 ;赋值R2=0 MOV R5,#17;赋值 R5=17 MAIN: MOV DPTR,#TAB;将 TAB 地址传送给数据指针MOV A,R2 ;赋值累加器 A=0 MOVC A,@A+DPTR;将数组第 A+1 的数据赋值 A MOV P0,A ;赋值 P0 数据的数据INC R2 ;R2 加一LCALL DELAY ;调用延时子程序DJNZ R5,MAIN ;R5 减一不为0 跳转主程序MAIN JMP START ;跳转 START RET DELAY: MOV R0,#5 ;延时子程序DL2: MOV R7,#200 DL1: MOV R6,#250DJNZ R6,$ DJNZ R7,DL1 DJNZ R0,DL2 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0 A1H,86H,8EH, END (1) C 语言源程序#include #define uint unsigned int Uint table [ ]= (0xC0,0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xBF )Void delay (int z) { int x,y; for (x=z;x>0;x--) for (y=100;y>0;i++) } Void main ( ) {int i ;While (1) {for (i=0;i<17;i++) { P0=table [i]; delay (1000) // 延时 } } } 3.点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。
单片机led数码管的静态控制显示方式实验报告
![单片机led数码管的静态控制显示方式实验报告](https://img.taocdn.com/s3/m/59ccb0002bf90242a8956bec0975f46527d3a7a1.png)
单片机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芯片,通过编写程序,可以实现不同数字或字母在四位
数码管上的显示,达到定量和定性的要求。
数码管显示电路实训报告
![数码管显示电路实训报告](https://img.taocdn.com/s3/m/e9cc98767275a417866fb84ae45c3b3566ecdd04.png)
一、实训目的1. 掌握数码管的结构、工作原理及驱动方式;2. 学会使用动态扫描法驱动数码管;3. 熟悉常用数字电路元件及电路设计方法;4. 培养动手实践能力和团队合作精神。
二、实训器材1. 单片机实验箱2. 数码管(共阳极、共阴极各1个)3. 电阻、电容、二极管、三极管等数字电路元件4. 连接线、电源、示波器等辅助设备三、实训内容1. 数码管识别与测试2. 数码管静态显示电路设计3. 数码管动态显示电路设计4. 数码管显示电路应用实例四、实训步骤1. 数码管识别与测试(1)观察数码管外观,了解其结构特点,如共阳极、共阴极等;(2)使用示波器测试数码管各段位引脚的电压,判断其工作状态;(3)根据测试结果,确定数码管的驱动方式(静态或动态)。
2. 数码管静态显示电路设计(1)设计电路原理图,选择合适的驱动电路;(2)计算电阻、电容等元件参数,绘制元件布局图;(3)焊接电路,检查电路连接是否正确;(4)编写程序,实现数码管显示功能;(5)调试电路,观察数码管显示效果。
3. 数码管动态显示电路设计(1)分析动态扫描显示原理,确定扫描频率和占空比;(2)设计动态扫描控制电路,实现多位数码管的动态显示;(3)编写程序,实现动态显示功能;(4)调试电路,观察数码管显示效果。
4. 数码管显示电路应用实例(1)设计一个简单的时钟显示电路,实现时分秒的显示;(2)设计一个温度显示电路,将温度值转换为数码管显示;(3)设计一个电压显示电路,将电压值转换为数码管显示;(4)编写程序,实现上述电路的显示功能;(5)调试电路,观察数码管显示效果。
五、实训总结1. 通过本次实训,掌握了数码管的结构、工作原理及驱动方式;2. 学会了使用动态扫描法驱动数码管,提高了电路设计能力;3. 熟悉了常用数字电路元件及电路设计方法,为后续课程学习奠定了基础;4. 培养了动手实践能力和团队合作精神,提高了综合素质。
六、实训心得1. 在实训过程中,我深刻体会到理论与实践相结合的重要性。
MPS430F149单片机之_数码管静态显示实验2
![MPS430F149单片机之_数码管静态显示实验2](https://img.taocdn.com/s3/m/2fb0c2ca3186bceb19e8bb94.png)
P4OUT=Table[10];//输出数字“A”
P5OUT=0xaa; //P5口输出1010 1010
DelayMS(1000); //延时约1秒
P4OUT=Table[11];//输出数字“b”
主函数
*********************************************************************/
void main(void)//主函数
{
DelayMS(1000); //延时约1秒
P4OUT=Table[1];//输出数字“1”
P5OUT=0x55; //P5口输出0101 0101
Hale Waihona Puke DelayMS(1000); //延时约1秒
P4OUT=Table[2];//输出数字“2”
P5OUT=0xaa; //P5口输出1010 1010
DelayMS(1000); //延时约1秒
P4OUT=Table[15];//输出数字“F”
P5OUT=0x55; //P5口输出0101 0101
DelayMS(1000); //延时约1秒
P4OUT=Table[4];//输出数字“4”
P5OUT=0xaa; //P5口输出1010 1010
DelayMS(1000); //延时约1秒
P4OUT=Table[5];//输出数字“5”
Init_IO();//初始化I/O
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
while(1)//无限循环
{
P4OUT=Table[0];//输出数字“0”
数码管实验报告实验原理(3篇)
![数码管实验报告实验原理(3篇)](https://img.taocdn.com/s3/m/cdf3e28c5ff7ba0d4a7302768e9951e79b896992.png)
第1篇一、实验背景数码管是一种常用的显示器件,它可以将数字、字母或其他符号显示出来。
数码管广泛应用于各种电子设备中,如计算器、电子钟、电子秤等。
本实验旨在通过实践操作,让学生了解数码管的工作原理,掌握数码管的驱动方法,以及数码管在电子系统中的应用。
二、实验原理1. 数码管类型数码管分为两种类型:七段数码管和液晶数码管。
本实验主要介绍七段数码管。
七段数码管由七个发光二极管(LED)组成,分别代表七个笔画。
当七个LED中的某个或某几个LED点亮时,就可以显示出相应的数字或符号。
根据发光二极管的连接方式,七段数码管可分为共阳极和共阴极两种类型。
2. 数码管驱动方式(1)静态驱动静态驱动是指每个数码管独立驱动,每个数码管都连接到单片机的I/O端口。
这种方式下,数码管显示的数字或符号不会闪烁,但需要较多的I/O端口资源。
(2)动态驱动动态驱动是指多个数码管共用一组I/O端口,通过控制每个数码管的扫描时间来实现动态显示。
这种方式可以节省I/O端口资源,但显示的数字或符号会有闪烁现象。
3. 数码管显示原理(1)共阳极数码管共阳极数码管的特点是七个LED的阳极连接在一起,形成公共阳极。
当要显示数字时,将对应的LED阴极接地,其他LED阴极接高电平,即可显示出相应的数字。
(2)共阴极数码管共阴极数码管的特点是七个LED的阴极连接在一起,形成公共阴极。
当要显示数字时,将对应的LED阳极接地,其他LED阳极接高电平,即可显示出相应的数字。
4. 数码管驱动电路(1)BCD码译码驱动器BCD码译码驱动器是一种将BCD码转换为七段数码管所需段码的电路。
常用的BCD码译码驱动器有CD4511、CD4518等。
(2)74HC595移位寄存器74HC595是一种8位串行输入、并行输出的移位寄存器,常用于数码管的动态驱动。
它可以将单片机输出的串行信号转换为并行信号,驱动数码管显示。
三、实验目的1. 了解数码管的工作原理和驱动方式。
单片机数码管显示实验心得
![单片机数码管显示实验心得](https://img.taocdn.com/s3/m/332b1633cd1755270722192e453610661fd95a5b.png)
单片机数码管显示实验心得
一、实验介绍
本次实验是单片机数码管显示实验,通过单片机控制数码管的显示,
学习单片机的基本操作和编程技巧。
二、实验器材
1. 单片机开发板
2. 数码管模块
3. 杜邦线
三、实验原理
数码管是一种数字显示器件,由多个发光二极管组成。
常见的数码管
有共阳极和共阴极两种类型。
共阳极数码管的所有阳极都连接在一起,而共阴极数码管的所有阴极都连接在一起。
在控制数码管时,需要根
据具体情况选择合适的驱动方式。
四、实验步骤
1. 连接硬件:将数码管模块与单片机开发板通过杜邦线连接。
2. 编写程序:使用Keil C51软件编写程序,实现对数码管的控制。
3. 下载程序:将程序下载到单片机开发板中。
4. 调试程序:通过调试工具观察程序运行情况,并进行调试修改。
五、编程要点
1. 数字转换:将需要显示的数字转换为对应的七段码。
2. 位选控制:根据具体情况选择共阳极或共阴极驱动方式,并实现位选控制。
3. 时序控制:通过延时函数或定时器实现数码管的动态显示效果。
六、实验心得
本次实验让我深入了解了单片机的基本操作和编程技巧,对数码管的控制有了更深入的了解。
在编写程序过程中,我遇到了一些问题,如数字转换不正确、位选控制不准确等,通过查阅资料和调试程序最终得以解决。
同时,在进行实验前需要认真检查硬件连接是否正确,避免出现连接错误导致无法正常工作的情况。
总之,本次实验让我收获颇丰,对单片机编程有了更深入的理解和掌握。
单片机实验报告二-数码管显示实验
![单片机实验报告二-数码管显示实验](https://img.taocdn.com/s3/m/53ca42187275a417866fb84ae45c3b3566ecdd63.png)
单片机实验报告二-数码管显示实验摘要:本实验使用单片机控制数码管的显示,在实验过程中通过学习单片机的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灯的亮灭,可以实现不同符号显示。
51单片机数码管显示实验报告
![51单片机数码管显示实验报告](https://img.taocdn.com/s3/m/e480fe62ae45b307e87101f69e3143323868f57d.png)
51单片机数码管显示实验报告实验目的:1.学习51单片机的编程方法和硬件连接方法;2.掌握使用51单片机驱动数码管显示的方法。
实验器材:1.51单片机开发板;2.公共阳极共阳向数码管一个;3.若干杜邦线。
实验原理:数码管是一种数字显示器件,由7个发光二极管和若干个选通器件构成。
每个发光二极管可以发出两种颜色的光,通常使用红色和绿色。
这篇实验报告以共阳数码管为例,共阳数码管的每个发光二极管的阳极都连接到电源VCC上,而七个阴极分别用来选择一些数字进行显示。
当要选择一些数码管显示时,需要对对应的阴极进行低电平使能,而使能其他阴极保持高电平,这样就可以通过控制每个数码管的阴极低电平使能来选择要显示的数字。
实验步骤:1.将51单片机开发板上的数码管连接到51单片机开发板的P1口和P0口上,连接方式如下图所示:```-----------------VCC-P0.0--,a,-----------------P0.1--,b,------P0.2--,c,---,数字2P0.3--,d,------P0.4--,e,------P0.5--,f,---,数字1P0.6--,g,------P0.7--,h,-----------------------P1.0P1.1```2. 在Keil µVision中新建工程,编写程序。
3.利用P0口控制数码管的阴极,利用P1口选择数码管要显示的数字。
4.在主程序中循环选择每个数码管,并通过P0口设置要显示的数字。
实验结果:```---------------------------------P1.0P1.1P0.6P0.7空空数字2数字1abcdefgh---------------------------------```实验结论:通过本次实验,学习了51单片机的编程方法和硬件连接方法,并掌握了使用51单片机驱动数码管显示的方法。
同时,还了解了数码管的工作原理和编程的基本步骤。
单片机数码管显示实验
![单片机数码管显示实验](https://img.taocdn.com/s3/m/f6698432f342336c1eb91a37f111f18583d00cd2.png)
单片机数码管显示实验单片机数码管显示实验一、实验目的本实验旨在通过单片机控制数码管显示,掌握单片机的基本操作和数码管显示原理,培养实践能力和创新意识。
二、实验原理1.单片机基本原理单片机是一种微型计算机,广泛应用于各种嵌入式系统中。
它具有体积小、功耗低、功能强大、可靠性高等优点。
本实验采用常见的8051单片机进行操作。
2.数码管显示原理数码管是一种常见的电子显示器件,可以显示数字和某些特定字符。
它由多个LED段组成,通过控制不同段的亮灭来显示不同的数字或字符。
本实验采用共阴极数码管进行显示。
三、实验步骤1.硬件准备(1)选择合适的单片机开发板和数码管;(2)连接数码管的阳极和单片机的某个端口;(3)连接数码管的各个段到单片机的其他端口;(4)连接电源和地线。
2.程序编写使用单片机开发软件(如Keil)编写程序,控制数码管显示不同的数字或字符。
程序中需要定义数码管的段码,以及选择要显示的数字或字符。
3.调试与测试将程序下载到单片机中,接通电源,观察数码管是否正常显示。
如果出现问题,检查硬件连接是否正确,或者修改程序中的控制逻辑。
四、实验结果与分析在本实验中,我们成功地实现了数码管的显示。
通过编写程序,我们可以控制数码管显示不同的数字和字符。
例如,我们可以编写一个循环程序,让数码管依次显示0-9的数字,或者某个特定的字符。
通过实验,我们深入了解了单片机的操作和数码管显示原理。
在实践中,我们需要注意硬件连接的正确性,以及控制程序的逻辑性。
如果硬件连接不正确,可能会导致数码管无法正常显示;如果程序逻辑有误,则可能导致显示的数字或字符不正确。
因此,我们需要认真检查硬件连接和程序逻辑,确保实验结果的准确性。
五、实验总结与展望本实验通过单片机控制数码管显示,使我们对单片机的操作和数码管显示原理有了更深入的了解。
在实验过程中,我们需要注意硬件连接的正确性和程序逻辑的准确性。
通过不断调试和测试,我们可以提高自己的实践能力和创新意识。
数码管静态显示实验
![数码管静态显示实验](https://img.taocdn.com/s3/m/b407f5d40c22590102029d1b.png)
1、根据LED数码管连接电路(电路中U1是74LS244作为段码驱动电路;U5和U4是SN75452,与非门,作为位选信号电路),编写实验程序,实现1位数码管的静态显示,要求:内容为0~9循环显示。
2、接线方案:
P10~P17/51单片机 接 a、b…dp/数码管;
P2.0~P2.3/51单片机 接 s1~s4/数码管。
单 片 机实验报告
通信工程系13班(2016年5月19日 )
姓名学号31130
实验题目:数码管静态显示实验
实验目的:
1.掌握8051单片机与七段LED数码管连接的设计方法;
2.掌握LED数码管静态显示的编程方法。
实验仪器:
51单片机、LED数码管
实验原理:
LED数码管静态显示的显示程序简单,显示亮度高,但所需的I/O端口较多,并且功耗较大。所以静态显示常用在显示位数较少的系统中。下表为共阴极LED数码管的段码表
实验步骤:
1.连接串行通信电缆盒电源线;
2.将C51单片机核心板上的三个开关分别拨到“独立”、”运行”“单片机”;
3.打开实验箱上的电源开关。
4.利用KeilC51创建实验程序,并进行编译生产后缀为.HEX的文件;
5.利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM中;
6.观察实验现象,并记录。若实验现象有误请重复第5、6步。
实验程序:
实验结果:
任课老师评语:
签名:__________
日期_____Leabharlann __月__
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五串行口静态显示
一.实验目的
1.学习用单片机的串行口扩展74LS164 实现静态显示方法。
2.学习用单片机I/O 口模拟串口工作实现静态显示的编程方法。
3.掌握静态显示的编程方法和数码管显示技术。
二.实验任务
1.根据共阳数码管的功能结构,自编一组0~F 的笔形码,并按顺序存放建立程序数据表格。
2.利用单片机串行口扩展74LS164,完成串--并转换输出,实现静态显示:要求循环显示0~F
这数字,即输出数字“0”时,四位同时显示0,显示1 秒后再输出数字“1”,即四位同时显示1,
依次类推,相当于数字自检循环显示。
3.利用单片机串行口(RXD、TXD)编写静态显示程序,在数码显示器上30H、31H 单元的内
容,30H、31H 单元为任意的十六进制数。
4.用P1.6、P1.7 分别替代RXD、TXD 做模拟串口完成任务3 的静态显示程序。
三.实验电路
静态显示实验电路
连线方法:静态显示只要连接2 根线:单片机的RXD 与DAT 节点连接,TXD 与CLK 接点连
接,要把电源短路片插上。
PW11 是电源端。
四.实验原理说明
1.静态显示实际上动态的过程,静态的显示,单片机串行口输出的数据通过74LS164 串并转换
输出,每输出一个数据,把原先的的数据推挤到下一个显示位上显示。
实验时,单片机串行口应工作在方式0,RXD(P3.0)输出串行数据,TXD(P3.1)输出移位时钟,在移位时钟的作用下,串行口发送缓冲器的数据一位一位地从RXD 移入到74LS164 中,并把后面送入的数据推挤原先的数据到下一个级联的
74LS164 中输出,每输出一个数据可以延时1ms。
实验时,通过改变延时时间,可以更清楚地观察到数据推挤的过程。
2.串行口工作在方式0 时,串行传输数据为8 位,只能从RXD 端输入输出。
TXD 端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12,由软件置位串行控制寄存器SCON 的REN位才能启动串行接收。
在CPU 将数据写入SBUF 寄存器后,立即启动发送,第8 位数据输送完后,硬件将SCON 寄存器的TI 位置1,必须由软件对它清0 才能启动发送下一帧数据。
3.静态显示笔型码:
笔形码:0 1 2 3 4 5 6 7 8 9 A B C D E F
11H,D7H,98H,92H,56H,32H,30H,97H,10H,12H,14H,70H,39H,D0H,38H,3CH
五.程序流程图和资源分配
单片机串行口应工作在方式0,RXD(P3.0)输出串行数据,TXD(P3.1)输出移位时钟。
使用R0作指针,将30H单元指向R0.采用查表方式,先取单元中低字节,查表后发送内容,再取单元高字节,再发送。
再指针加1,重复上述。
2.算法流程图
3.资源分配
用R0作指针,R7作控制显示数
ORG 0000
MOV SCON,#00
MOV DPTR,#TAB
MOV R0,#30H
MOV R7,#02
LOOP: MOV A,@R0
ANL A,#0FH
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,@R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R0
DJNZ R7,LOOP
TAB: DB 11H,0D7H,98H,92H,56H,32H,30H,97H,10H,12H,14H,70H,39H,0D0H,38H,3CH
END
六.调试
1.第一次调试时发现数码管显示的数字错码,认真检查程序没发现错误。
分析原因可能是笔形码错误,改正笔形码。
2.改正笔形码后,程序能够正常运行,并且能够显示正常。
七.结果分析和总结
1.结果分析:
在30H和31H中分别置数12H和34H,数码管显示3412。
结果正确。
2.总结:
问题1:数码管显示数据错乱。
解决办法:笔形码错误,改正笔形码。
体会:以前只在生活中看到过数码管显示数据,这次试验通过自己从编程,到接线再到自己调试,把生活中看到的通过自己的动手和理论分析将它实现了,科学的魅力极大啊。
以后一定得努力学习科学知识!。