关于单片机的一些小实验_06 一位数码管静态显示

合集下载

单片机静态显示原理

单片机静态显示原理

单片机静态显示原理
单片机静态显示的原理如下:
1. 首先,单片机需要输出数字信号到LED数码管。

单片机通过IO口输出高低电平来控制LED数码管的亮灭,从而显示相应的数字。

2. 其次,单片机需要控制LED数码管的选择。

在多位数码管显
示中,单片机需要通过控制数码管的选择引脚来选择需要显示的数
码管,使其处于工作状态。

3. 然后,单片机需要按照一定的时间间隔不断地刷新LED数码
管的显示。

由于人眼的视觉暂留效应,LED数码管的刷新频率要足
够高,以保证人眼看到的是稳定的数字显示而不是闪烁的效果。

总的来说,单片机静态显示的原理就是通过控制IO口输出数字
信号,选择LED数码管并按照一定的刷新频率来实现数字的静态显示。

这种显示方法简单可靠,适用于对显示刷新速度要求不高的场合。

单片机数码管实验报告

单片机数码管实验报告

单片机数码管实验报告单片机数码管实验报告引言:单片机作为一种重要的嵌入式系统,被广泛应用于各个领域。

在本次实验中,我们将探索单片机与数码管的结合,通过编程控制数码管的显示,实现不同的功能。

本文将详细介绍实验的背景、目的、方法和结果,并对实验过程中遇到的问题进行讨论和总结。

一、实验背景数码管是一种常见的输出设备,用于显示数字和字母等信息。

而单片机则是一种集成了微处理器、存储器和输入输出接口等功能的芯片,具有高度集成、灵活性强的特点。

将单片机与数码管结合起来,可以实现对数字的显示和控制,为实际应用提供了很大的便利。

二、实验目的本次实验的目的是通过编程控制单片机,实现对数码管的显示和控制。

具体包括以下几个方面:1. 学习单片机的基本原理和编程方法;2. 掌握数码管的工作原理和接口电路;3. 理解数码管的编码方式和显示原理;4. 实现基本的数码管显示功能,如显示数字、字母、符号等;5. 探索数码管的扩展应用,如时钟、计时器等。

三、实验方法1. 实验器材准备:本次实验所需的器材包括单片机开发板、数码管、连接线等。

2. 实验步骤:(1)搭建实验电路:将数码管与单片机开发板连接,并根据实验要求进行接线。

(2)编写程序:使用C语言编写程序,通过单片机的GPIO口控制数码管的显示。

(3)下载程序:将编写好的程序下载到单片机开发板上。

(4)实验验证:通过观察数码管的显示情况,验证程序的正确性。

四、实验结果经过实验验证,我们成功实现了对数码管的显示和控制。

通过编写不同的程序,我们可以实现以下几种功能:1. 显示数字:通过控制数码管的不同段点亮,可以显示0-9的数字。

2. 显示字母:通过控制数码管的不同段点亮,可以显示A-Z的字母。

3. 显示符号:通过控制数码管的不同段点亮,可以显示一些常见的符号,如"+"、"-"、"*"等。

4. 显示动画:通过快速切换数码管的显示内容,可以实现简单的动画效果,如闪烁、滚动等。

数码管静态显示实训报告

数码管静态显示实训报告

一、实训目的通过本次实训,掌握数码管静态显示的原理和方法,熟悉51单片机的编程技巧,以及如何利用单片机控制数码管显示特定的数字和字符。

同时,了解数码管在电子显示中的应用及其驱动电路的设计。

二、实训器材1. 51单片机开发板2. 数码管(共阴极或共阳极)3. 电阻4. 译码器(如74HC138)5. 驱动器(如74HC245)6. 连接线7. 编程软件(如Keil)8. 仿真软件(如Proteus)三、实训原理数码管静态显示是指每个数码管的每个段都由单片机的I/O口直接驱动。

当某个段需要显示时,相应的I/O口输出高电平或低电平,控制该段LED的亮灭。

共阴极数码管的段码共用一个电源的负极,高电平点亮;共阳极数码管的段码共用一个电源的正极,低电平点亮。

在本次实训中,我们使用51单片机的P0口输出段码数据,P2口输出位选信号,通过译码器和驱动器实现对数码管的驱动。

四、实训步骤1. 硬件连接(1)将数码管按照共阴极或共阳极的接法连接到单片机的P0口。

(2)将译码器的输入端连接到单片机的P2口。

(3)将驱动器的输入端连接到译码器的输出端。

(4)将驱动器的输出端连接到数码管的位选端。

2. 软件编写(1)定义数码管的字形码数组,存储0~9数字的字形码。

(2)编写主函数,通过循环遍历字形码数组,控制数码管显示相应的数字。

(3)编写延时函数,实现数字显示的间隔。

3. 仿真测试(1)使用Proteus软件搭建仿真电路。

(2)编写Keil软件中的程序,并编译生成HEX文件。

(3)将HEX文件下载到51单片机中。

(4)运行仿真程序,观察数码管显示的数字是否正确。

五、实训结果经过实训,我们成功实现了数码管静态显示功能。

数码管能够按照程序设置的方式,依次循环显示0~9十个数字。

六、实训心得1. 通过本次实训,我们了解了数码管静态显示的原理和实现方法,掌握了51单片机的编程技巧。

2. 在实训过程中,我们学会了如何使用译码器和驱动器扩展单片机的I/O口功能。

单片机静态数码管实验报告

单片机静态数码管实验报告

单片机静态数码管实验报告一、引言静态数码管是一种常用的显示器件,广泛应用于各种仪器仪表、计时器、计数器等场合。

本实验旨在通过单片机控制静态数码管,实现数字的显示功能。

二、实验原理静态数码管由若干个发光二极管组成,每个发光二极管代表一个数字。

通过控制每个发光二极管的亮灭,可以显示不同的数字。

单片机通过控制数码管的共阳极或共阴极,以及发光二极管的亮灭,实现数字的显示。

三、实验器材1. 单片机开发板2. 静态数码管3. 连接线四、实验步骤1. 连接电路:将静态数码管的共阳极或共阴极与单片机开发板相应的IO口连接。

2. 编写程序:使用C语言编写程序,通过控制IO口的高低电平控制数码管的亮灭,实现数字的显示。

3. 烧录程序:将编写好的程序烧录到单片机开发板中。

4. 调试程序:通过调试程序,观察数码管是否能正常显示数字。

5. 结果分析:根据实验结果,分析程序的正确性及数码管显示的准确性。

6. 实验总结:总结实验过程中的问题及解决方法,并对实验结果进行分析和评价。

五、实验结果经过实验,我们成功地通过单片机控制静态数码管,实现了数字的显示。

数码管能够根据程序的控制,显示出不同的数字,显示效果良好,准确度高。

六、实验分析通过本实验,我们掌握了单片机控制静态数码管的方法和技巧。

在实验过程中,我们发现控制数码管显示数字的关键在于正确地控制IO口的高低电平。

同时,我们还发现静态数码管显示数字的亮度和清晰度与电源电压和电流的稳定性有关,需要合理选择电源参数。

七、实验应用静态数码管广泛应用于各种仪器仪表、计时器、计数器等场合。

通过单片机控制静态数码管,可以实现各种数字的显示功能,满足不同场合的需求。

八、实验总结通过本实验,我们深入了解了单片机控制静态数码管的原理和方法。

通过编写程序和调试程序,我们成功地实现了数字的显示功能。

实验过程中,我们遇到了一些问题,但通过不断的调试和尝试,最终解决了问题。

通过本次实验,我们不仅加深了对单片机原理的理解,还提升了实际操作和问题解决的能力。

单片机数码管静态显示实验程序(汇编)_共2页

单片机数码管静态显示实验程序(汇编)_共2页

单片机数码管静态显示实验程序org 00hnum equ p0;p0口连接数码管clr p2.0;mov dptr ,#tabclr amov r2,#0loop:movc a,@a+dptrmov num ,aacall delay_200msinc r2mov a,r2cjne r2,#15, loopmov r2,#0clr aajmp looptab :DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EHdelay_200ms:mov r3,#20delay:acall delay_10msdjnz r3,delayret;;;;;;;;;;;;;;;;非中断精确delay_1ms:MOV R7 ,#249signed:nopnopdjnz R7 ,signed 1MS定时程序;循环部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4机器周期ret;2+249*4+2=1000us;返回指令2机器周期可以精确定时1MS,假设外部晶振是12M;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;非中断精确10MS 定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov r6,#9;2个机器周期用2usdelay_10ms_sined: ;9次循环共用 9(1ms+4us)=9036us acalldelay_1msdjnz r6,delay_10ms_sinedMOV r6 ,#240;2个机器中期用 2ussigned_10ms :;循环部分 4机器周期共240次nopnopdjnz r6 ,signed_10msret;返回指令要2us;2us+9036us+240*4us+2us = 10ms 即可精确定时10ms ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;非中断精确定时 1s;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_1s:mov r5,#99delay_1s_signed:acall delay_10msdjnz r5,delay_1s_signed mov r5 ,#9signed_1s:acall delay_1msdjnz r5 ,signed_1smov r5 ,# 140signed_1s_:nopnopdjnz r5,signed_1s_;两个机器周期2us;循环指令周期为4us,加上延时10ms;(10ms+4us)*99 = 990.396ms;两个机器周期2us;循环指令周期为4us,加上延时1ms;(1ms+4us)*9 = 9ms+36us;机器周期2us;一次循环4us共有140次。

单片机数码管静态显示原理

单片机数码管静态显示原理

单片机数码管的静态显示是一种常见的数字显示方式,它通过单片机控制数码管的每个段(a~g、dp)的开关状态,以显示所需的数字或字符。

以下是单片机数码管静态显示的基本原理:1. 数码管构成:数码管通常由七段LED(a~g)和一个小数点(dp)组成。

每个段代表数字或字符的一部分。

2. 驱动电路:数码管需要适当的电流和电压来点亮各个段。

通常,使用共阳极(Common Anode)或共阴极(Common Cathode)的数码管。

-共阳极数码管:该类型的数码管的阳极(正极)是共用的,而七段LED的阴极(负极)是分开的。

通过向某个段的阴极引入低电平(通电),并向共阳极引入高电平(不通电),就可以点亮该段。

其他段则保持高电平,不点亮。

-共阴极数码管:该类型的数码管的阴极是共用的,而七段LED的阳极是分开的。

通过向某个段的阳极引入高电平(通电),并向共阴极引入低电平(不通电),就可以点亮该段。

其他段则保持低电平,不点亮。

3. 单片机控制:使用单片机(如Arduino、PIC、8051等)来控制数码管的静态显示。

通过单片机的GPIO(通用输入输出)引脚连接到数码管的各个段,可以控制每个段的开关状态。

-共阳极数码管控制:通过将特定的段引脚设置为低电平(通电),并将共阳极引脚设置为高电平(不通电),来点亮该段。

其他段的引脚则设置为高电平,不点亮。

-共阴极数码管控制:通过将特定的段引脚设置为高电平(通电),并将共阴极引脚设置为低电平(不通电),来点亮该段。

其他段的引脚则设置为低电平,不点亮。

4. 数据刷新:由于单片机的处理速度很快,对人眼来说会感觉到数码管的显示是同时发生的。

实际上,单片机会不断地刷新数码管的显示。

它通过快速地切换各个段的开关状态,使人眼感知到连续的静态显示。

通过以上的原理,单片机可以根据需要控制数码管的每个段的开关状态,以实现所需的数字或字符的显示。

单片机实验报告——LED数码管显示实验

单片机实验报告——LED数码管显示实验

单⽚机实验报告——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。

第6课数码管静态显示

第6课数码管静态显示

第6课数码管静态显示第6课数码管静态显示1、数码管显示原理数码管是单片机应用系统中常用的一种显示器件,由于其价格低廉、操作简单,而被广泛的应用于各种数字显示系统中,常见的数码管如图1所示。

根据外观的不同,数码管又为分1位数码管、2位数码管、3位数码管、四位数码管等种类,如图2所示。

但不论是几位一体的数码管,其显示原理都是一样的,都是靠内部发光二极管发光来进行显示的。

下面我们以1位数码管为例介绍其显示原理。

1、数码管显示的原理数码管内部的电路如图3所示,图3 数码管内部电路图3中,显示一个完整的8字,需要7个小段,外加一个小数点,共8段,分别称为a段、b段、c段、d段、e段、f段、g段、dp段,每段内部都集成了一个发光二极管,此时要想让数码管显示数字,我们只需要让相对应的发光二极管发光就可以,例如要想让此数码管显示数字是1,只需要让b、c段的数码管发光,而其它段的数码管熄灭就可以了。

上图中,每个发光二极管的阳极全部引出,分别为a、b、c、d、e、f、g、dp,共8个引脚,而把所有发光二极管的阴极全部接到一起引出一个引脚w,此时我们把a、b、c、d、e、f、g、dp引脚称为数码管的段选引脚,简称段选;而把w称为位选引脚,简称位选。

通过单片机让数码管显示数字,就是通过编写程序让数码管内部相应的数码管发光。

数码管根据内部接法的不同又可分为共阴极数码管和共阳极数码管两种,上图中,数码管所有的发光二极管的阴极接在一起,而阳极单独引出,我们称此数码管为共阴极数码管,而还有一种接法是把阳极接在一起,而阴单独引出,这种数码管则称之为共阳极数码管,具体在写程序时应考虑到的是哪一种数码管,共阳极数码管如图4所示。

图4 共阳极数码管这里需要注意的是,在驱动数码管进行显示时,数码管内部的发光二极管要正常工作大概需要5mA的电流,而单片机的I/O口通常不能提供如些大的电流,此时需要上位电阻或者专用的驱动芯片,如7H HC573等,实验板上即采用的后者,后面会具体讲到。

实验四 数码管静态显示

实验四 数码管静态显示

实验四数码管静态显示一、实验目的1.熟练掌握单片机定时器的原理和应用方法。

2.了解数码管的原理,掌握数码管的真值表的计算方法。

二、实验内容通过对单片机编程来实现数码管静态显示。

三、实验知识点3.1定时器的初步认识时钟周期:时钟周期T是时序中最小的时间单位具体计算的方法就是1/时钟源,我们KST-51单片机开发板上用的晶振是11.0592M,那么对于我们这个单片机系统来说,时钟周期=1/11059200秒。

机器周期:我们的单片机完成一个操作的最短时间。

机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而C语言一条语句的时间是不可计算的。

51单片机系列,在其标准架构下一个机器周期是12个时钟周期,也就是12/11059200秒。

定时器和计数器。

定时器和计数器是单片机内部的同一个模块,通过配置SFR(特殊功能寄存器)可以实现两种不同的功能。

顾名思义,定时器就是用来进行定时的。

定时器内部有一个寄存器,我们让它开始计数后,这个寄存器的值每经过一个机器周期就会加1一次,因此,我们可以把机器周期理解为定时器的计数周期。

我们的秒表,每经过一秒,数字加1,而这个定时器就是每过一个机器周期的时间,也就是12/11059200秒,数字加1。

3.2 定时器的寄存器描述标准的51里边只有定时器0和定时器1这两个定时器,现在很多单片机也有多个定时器的,在这里我们先讲定时器0和1。

那么我前边提到过,对于单片机的每一个功能模块,都是由他的SFR,也就是特殊功能寄存器来控制。

而和定时器有关的特殊功能寄存器,有TCON和TMOD,定时值存储寄存器。

a)定时值存储寄存器表4-1中的寄存器,是存储计数器的计数值的,TH0/TL0用于T0, TH1/TL1用于T1。

表4-1 定时值存储寄存器表4-2 TCON--定时器/计数器控制寄存器的位分配(地址:88H)表4-3 TCON--定时器/计数器控制寄存器的位描述表4-2中有TF1、TR1、TF0、TR0这4位需要我们理解清楚。

数码管静态显示实验,单片机实验报告

数码管静态显示实验,单片机实验报告

数码管静态显示实验,单片机实验报告数码管静态显示实验一.实验目的 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.点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。

单片机静态显示技术实验报告

单片机静态显示技术实验报告

单片机静态显示技术实验报告桂林电子科技大学实验报告2 016-2017学年第一学期海洋信息工程学院适用年级、专业14级机械设计制造及其自动化主讲教师课程序号课程代码实验名称学号周旋BS16150 0 0 《静态显示技术》验》课程名称《单片微型计算机与接口技术一课内实开课单位BS161 500 0 0314160 1051 6 - 17单片机静态显示技术实验报告林亦鹏卢炳荣静态显示技术实验报告一、实验目的1、掌握数码管与单片机的连接方法.2、掌握段代码表的推算及数据衣的使用方法一3、掌握C语言编程方法。

4、为动态扫握显示做准备。

二、实验内容实验设备:计算机一台、单片机实验箱一台、Proteus软件、Keil软件。

確件原理图:VCC采用共阴数码管,数码管的数据曰单片机的P0 口提供一当POE输出相应的数据,相应的数码管就被点竟.女口:P0=00 1 1 1 111B.则数码管最低位显示0。

74LS5 73这里用亍提高旳□的输出电流,驱动数码管显示.井有一定的隔离干扰的作用。

本实验只用到8位数码爸的其中一位。

1S打开Keil新建工程:学号-3. u V 2»2、参考实验程序,编写程序:在数码管上最低位显示•生成:学号一3.hEx文件。

3v打开下载软件,把学号一3. hex文件焼写到单片机,观察实验现象.4、修改程序,让数码管最低位由LF显示。

5、静态显示的工作原理。

6、数码管內部结构、引脚定义及驱动。

7、读怪实验程序。

三、实验结果分析1。

数码辔最低位显示T# i rc I ude (re g51o h >//——走义你更使用的丨。

口一一//#de f i ne GPIO_D IG PO//-_声明全局函数__//voi d D el a y 10m s (u n s i g n e d int c 1 ;"主函数〃误差(1)数码管最低位显示Tvoid main C voi d){ned char i = 0;whi I e C1)b {GP I O_DIG = 0x79;订12・数码管最低位由LF显示⑵数码管最低位由C T F显示# i r)c I u d e<reg51 ・ h>/ /——定义你姜使用的10 口一//^define GP I O_DIG PO //—声明全局函数一一/ /void De I ay10ms funs igned in t c);/ /误差Ous//——走义全局变呈一一//unsig ned c har code DIG CODE [ 16] ={0 x 3F. 0x06, 0x5 B . 0x4F, O x66j 0x6D, Ox7D5 O x07. O X7F50X6F.0X77,0X7 C, 0X39, 0X5 E, 0X79,0X71); // O~F 的段码v o i d mai n(vo i d)叫n s i g n ed char i 二0; awhile ⑴必P I 0_D I G 二~D I G_CODE [i];i+十;o if (i =- 16)册j — Q ;]Del ay 10ns (501 ;} a]vc i d De lay 10m s (u n signed in t c) "误差Ous{tins i g n ed c h ar a, b :W—c已经在传递过来的时候已经赋值了,所以在f o r语句第一句就不用赋值了一一/ /for C ; c ) 0; c―、{for (b=3 8; b>O;b——)' {2 ■for (a=l30j a > O ;a) ---------------------- ;1]] 根据以上程床用齐发板來进行实验,程序可以实现要求。

单片机led数码管的静态控制显示方式实验报告

单片机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芯片,通过编写程序,可以实现不同数字或字母在四位
数码管上的显示,达到定量和定性的要求。

1位数码管的静态动态显示代码

1位数码管的静态动态显示代码

1位数码管的静态动态显示代码1. 什么是1位数码管?1位数码管,也称为单位数码管,是一种用于显示数字的电子元件。

它由七段数码组成,七段分别代表数字的不同部分,通过对不同的段点亮或熄灭,可以显示任意数字。

2. 1位数码管的静态显示静态显示是指将数码管显示为固定的数字,不发生变化。

实现静态显示的最简单方法是使用开关电路和逻辑门电路。

以下是一种常见的静态显示电路:1.使用开关电路控制:将数码管的七个段分别连接到对应的开关上,通过打开或关闭开关,来控制每个段的点亮或熄灭状态。

2.使用逻辑门电路控制:将数码管的七个段分别连接到逻辑门电路的输入端,通过逻辑门的组合及输入信号的控制,来控制每个段的点亮或熄灭状态。

通过上述电路的控制,可以将数码管的显示固定为特定数字,实现静态显示的效果。

3. 1位数码管的动态显示动态显示是指将数码管显示为一组数字的连续变化,通常用于显示时间、计数等功能。

要实现动态显示,需要通过定时器或计数器等设备来控制信号的变化。

以下是一种常见的动态显示电路:1.使用定时器控制:将数码管的七个段分别连接到定时器的输出端,通过设定定时器的周期和频率,可以控制数码管的显示更新速率。

2.使用计数器控制:将数码管的七个段分别连接到计数器的输出端,通过计数器的计数功能,可以控制数码管显示的数字。

通过对定时器或计数器的设置,可以实现数码管的动态显示,数字可以按照一定的顺序进行变化,从而实现不同的功能。

4. 1位数码管的控制代码下面是一个示例的Arduino控制代码,用于实现1位数码管的静态和动态显示:// 定义数码管的七个段引脚int segA = 2;int segB = 3;int segC = 4;int segD = 5;int segE = 6;int segF = 7;int segG = 8;// 定义数码管的四个位引脚int digit1 = 9;int digit2 = 10;int digit3 = 11;int digit4 = 12;// 定义数码管显示的数字int num = 0;// 数码管数字的对应状态int numbers[10][7] = {{1, 1, 1, 1, 1, 1, 0}, // 数字0{0, 1, 1, 0, 0, 0, 0}, // 数字1{1, 1, 0, 1, 1, 0, 1}, // 数字2{1, 1, 1, 1, 0, 0, 1}, // 数字3{0, 1, 1, 0, 0, 1, 1}, // 数字4{1, 0, 1, 1, 0, 1, 1}, // 数字5{1, 0, 1, 1, 1, 1, 1}, // 数字6{1, 1, 1, 0, 0, 0, 0}, // 数字7{1, 1, 1, 1, 1, 1, 1}, // 数字8{1, 1, 1, 0, 0, 1, 1} // 数字9};void setup() {// 配置数码管引脚为输出模式pinMode(segA, OUTPUT);pinMode(segB, OUTPUT);pinMode(segC, OUTPUT);pinMode(segD, OUTPUT);pinMode(segE, OUTPUT);pinMode(segF, OUTPUT);pinMode(segG, OUTPUT);pinMode(digit1, OUTPUT);pinMode(digit2, OUTPUT);pinMode(digit3, OUTPUT);pinMode(digit4, OUTPUT);}void loop() {// 数码管静态显示digitalWrite(segA, numbers[num][0]);digitalWrite(segB, numbers[num][1]);digitalWrite(segC, numbers[num][2]);digitalWrite(segD, numbers[num][3]);digitalWrite(segE, numbers[num][4]);digitalWrite(segF, numbers[num][5]);digitalWrite(segG, numbers[num][6]);digitalWrite(digit1, HIGH);digitalWrite(digit2, LOW);digitalWrite(digit3, LOW);digitalWrite(digit4, LOW);delay(1000); // 延时1秒// 数码管动态显示for (int i = 0; i < 10; i++) {digitalWrite(segA, numbers[i][0]);digitalWrite(segB, numbers[i][1]);digitalWrite(segC, numbers[i][2]);digitalWrite(segD, numbers[i][3]);digitalWrite(segE, numbers[i][4]);digitalWrite(segF, numbers[i][5]);digitalWrite(segG, numbers[i][6]);digitalWrite(digit1, LOW);digitalWrite(digit2, HIGH);digitalWrite(digit3, LOW);digitalWrite(digit4, LOW);delay(500); // 延时0.5秒}}上述代码首先定义了数码管的引脚和显示的数字,然后在setup()函数中配置引脚为输出模式。

单片机静态数码管

单片机静态数码管

单片机静态数码管
单片机静态数码管是一种常用的数字显示器件,它可以通过单片机控制来显示各种数字、字母和符号。

静态数码管的显示方式是通过直接控制数字管的各个段的亮灭来实现,因此它的显示效果比动态数码管更加稳定和清晰。

在使用单片机控制静态数码管时,需要通过控制各个数字管的引脚来实现显示。

一般来说,一个四位数码管需要使用12个引脚来控制,其中8个引脚用于控制各个数字管的段,另外4个引脚用于控制各个数字管的选通。

通过在单片机中设置相应的高低电平来控制这些引脚的状态,就可以实现数字、字母和符号的显示。

除了控制引脚的状态之外,还需要设置显示的内容。

在单片机中,可以定义一个数据表来存储需要显示的内容,然后通过循环控制数据的输出来实现数字管的显示。

同时,还可以通过设置不同的亮度等级来调整数码管的亮度,以适应不同的使用环境。

总之,单片机静态数码管是一种非常实用的数字显示器件,可以广泛应用于各种数字显示场合。

在使用过程中,需要注意控制引脚的状态和设置显示内容,以实现稳定、清晰的数字显示效果。

- 1 -。

实验03静态数码管显示

实验03静态数码管显示

实验三 静态数码管显示一.实验目的1. 了解数码管内部电路结构;2. 学习7段数码管显示译码器的设计;3.学习LPM 兆功能模块的调用。

二. 准备知识为了对数字电路进行控制、直观观察数字电路的设计结果,CPLD/FPGA 器件往往要和一些外部接口电路相连,前面实验中实验的二极管、DIP 开关、脉冲信号源等都属于外部接口电路。

在编译前我们进行的锁定管脚,就是把设计电路(元件)的数字信号输入、输出连到相应的CPLD/FPGA 器件管脚;而CPLD/FPGA 器件的一些管脚在硬件上和外部的接口电路相连;这样就把设计的输入、输出管脚和外部的接口电路相通,以便对电路进行控制(输入)、观察结果(输出)。

通常的外部接口电路有:二极管、7VGA 接口、鼠标接口、键盘、时钟信号接口、A/D 接口、D/A 接口、UART 接口、I 2C 控制器接口等其它数字信号接口。

数码管LED 显示是工程项目中使用广泛的一种输出显示器件。

从数码管的个数上数码管分为单联和多联,单联数码管的封装结构如图3.1所示;从电路连接上数码管分为共阳极和共阴极2种,共阴极数码管是将8个发光二极管的阴极连接在一起作为公共端,如图3.2所示;而共阳极数码管是将8个发光二极管的阳极连接在一起作为公共端,如图3.3所示。

公共端通常称为位码或选通位,而将其它8位称为段码。

底部管脚 上部结构图3.1 单联数码管的管脚定义图图3.2 4联共阴极数码管电路图图3.3 4联共阳极数码管电路图数码管的8个段分别为dp、g、f、e、d、c、b、a。

我们以图3.3所示的共阳数码管电路图为例简单说明其工作原理。

我们要点亮数码管A段,就需要位码DIG为高电平,A段的11脚为低电平,这样发光二极管正向导通,通过一定的电流而发光。

如果要显示数字“1”,就需要位码为高电平,BC段码为低电平,正向导通而发光,而其他的段码为高电平,无电流通过不发光。

故8位段码的需要赋二进制值为“00000011”,位码赋值为高电平,这就是所谓的“译码”。

单片机静态数码实验报告

单片机静态数码实验报告

单片机静态数码实验报告单片机静态数码实验报告引言:单片机是一种集成电路,具备处理和控制功能,广泛应用于各个领域。

在本次实验中,我们通过使用单片机进行静态数码实验,探索了单片机在数字电路中的应用。

本报告将详细介绍实验的目的、原理、实验步骤、实验结果以及实验中遇到的问题和解决方法。

一、实验目的本次实验的目的是通过使用单片机,实现对数码管的控制和显示。

通过这个实验,我们可以更好地理解单片机的工作原理,掌握单片机在数字电路中的应用。

二、原理数码管是一种常见的数字显示设备,由多个发光二极管组成。

每个发光二极管可以显示数字0-9中的任意一个数字。

在单片机控制下,通过控制数码管的电平状态,可以实现数字的显示。

三、实验步骤1. 准备实验材料:单片机、数码管、电源等。

2. 连接电路:将数码管的引脚与单片机的相应引脚连接。

3. 编写程序:使用C语言编写程序,实现对数码管的控制。

4. 烧录程序:将编写好的程序烧录到单片机中。

5. 运行程序:将电源接通,观察数码管上显示的数字。

四、实验结果经过实验,我们成功地实现了对数码管的控制和显示。

在程序运行过程中,我们可以通过改变程序中的数字,观察数码管上显示的数字是否相应改变。

实验结果表明,单片机可以准确地控制数码管的显示,达到我们预期的效果。

五、问题与解决方法在实验过程中,我们遇到了一些问题,但通过仔细分析和调试,最终得以解决。

1. 数码管显示不正常:可能是连接错误或者程序有误。

我们检查了电路连接并重新编写了程序,最终解决了问题。

2. 单片机无响应:可能是单片机没有正常烧录程序或者电源供应不稳定。

我们重新烧录了程序,并检查了电源供应,问题得到了解决。

六、实验总结通过本次实验,我们深入了解了单片机的工作原理,掌握了单片机在数字电路中的应用。

实验过程中,我们遇到了一些问题,但通过仔细分析和解决,最终取得了成功。

通过实验,我们不仅加深了对单片机的理解,还提高了自己的动手实践能力。

希望今后能继续深入学习和应用单片机技术,为实现更多有意义的项目做出贡献。

单片机数码管显示实验心得

单片机数码管显示实验心得

单片机数码管显示实验心得
一、实验介绍
本次实验是单片机数码管显示实验,通过单片机控制数码管的显示,
学习单片机的基本操作和编程技巧。

二、实验器材
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、根据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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define SMG5_OFF() (P0_4=1) //定义"SMG5_OFF()"为P0.4输出高电平,不选中数码管5
#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位长度)
*函数名称:Delay()
*功能:软件延时
*入口参数:count延时参数,值越大,延时越长
*出口参数:无
*********************************************************************************************/
void Delay(uint16 count)
#define SMG4_ON() (P0_3=0) //定义"SMG4_ON()"为P0.3输出低电平,选中数码管4
#define SMG4_OFF() (P0_3=1) //定义"SMG4_OFF()"为P0.3输出高电平,不选中数码管4
#define SMG5_ON() (P0_4=0) //定义"SMG5_ON()"为P0.4输出低电平,选中数码管5
*********************************************************************************************/
void main (void)
{
uint8 i,j;
while(1) //死循环
{
/*依次选中数码管1~8,每个数码管依次显示"0"~"F"这十六个字符*/
default:
break;
}
}
/* 7段共阳数码管显示字符"0"~"F"的编码表*/
const uint8 DISPLAY_TAB[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,};
SMG2_ON();
break;
case 3:
SMG3_ON();
break;
case 4:
SMG4_ON();
break;
case 5:
SMG5_ON();
break;
case 6:
SMG6_ON();
break;
case 7:
SMG7_ON();
break;
case 8:
SM****************************************************************************************/
/*定义位变量*/
sbit P0_0 = P0 ^ 0;
sbit P0_1 = P0 ^ 1;
sbit P0_2 = P0 ^ 2;
#define SMG2_OFF() (P0_1=1) //定义"SMG2_OFF()"为P0.1输出高电平,不选中数码管2
#define SMG3_ON() (P0_2=0) //定义"SMG3_ON()"为P0.2输出低电平,选中数码管3
#define SMG3_OFF() (P0_2=1) //定义"SMG3_OFF()"为P0.2输出高电平,不选中数码管3
{
uint8 i;
while(--count != 0)
{
for(i = 0; i < 125; i++); // ";"表示空语句,CPU空转。
}// i从0加到125,在12M晶体下CPU大概耗时1毫秒
}
/********************************************************************************************
*函数名称:SMG_Select()
*功能:选中要进行静态显示的一位数码管
*入口参数:num数码管编号(1~8)
*出口参数:无
*********************************************************************************************/
#define SCK1_H() (P2_5=1) //定义"SCK1_H()"为P2.5输出高电平,作为74HC595_1的时钟输入信号
#define SCK1_L() (P2_5=0) //定义"SCK1_L()"为P2.5输出低电平,作为74HC595_1的时钟输入信号
/********************************************************************************************
for(i=1;i<9;i++)
{
SMG_Select(i); //选中相应的数码管
for(j=0;j<16;j++)
{
SendDataTo74HC595_1(DISPLAY_TAB[j]); //被选中的数码管依次显示"0"~"F"这十六个字符
Delay(200); //延时
}
}
}
}
{SI1_H();} // SI1输出高电平
else
{SI1_L();} // SI1输出低电平
dat<<=1; //将要发送的1字节数据左移一位
SCK1_H(); // SCK1为高电平
}
RCK1_H(); // RCK1为高电平
}
/********************************************************************************************
sbit P0_3 = P0 ^ 3;
sbit P0_4 = P0 ^ 4;
sbit P0_5 = P0 ^ 5;
sbit P0_6 = P0 ^ 6;
sbit P0_7 = P0 ^ 7;
sbit P2_7 = P2 ^ 7;
sbit P2_6 = P2 ^ 6;
sbit P2_5 = P2 ^ 5;
*函数名称:SendDataTo74HC595_1()
*功能:向74HC595_1发送一字节数据
*入口参数:data要发送的数据
*出口参数:无
*注意:发送数据时,高位先发送
*********************************************************************************************/
#define SMG8_OFF() (P0_7=1) //定义"SMG8_OFF()"为P0.7输出高电平,不选中数码管8
#define SMG_ALL_OFF() (P0=0xFF) //定义"SMG_ALL_OFF()"为P0口输出高电平,全部数码管都不选中
#define SI1_H() (P2_7=1) //定义"SI1_H()"为P2.7输出高电平,作为74HC595_1的数据输入信号
*********************************************************************************************/
#include "reg52.h" //包含头文件
/*与编译器无关的数据类型定义*/
/********************************************************************************************/
#define SI1_L() (P2_7=0) //定义"SI1_L()"为P2.7输出低电平,作为74HC595_1的数据输入信号
#define RCK1_H() (P2_6=1) //定义"RCK1_H()"为P2.6输出高电平,作为74HC595_1的片选输入信号
相关文档
最新文档