单片机数码管静态显示实验程序(汇编)
键盘与数码管静态显示实验-单片机-程序
键盘与数码管静态显示实验实验内容:1、根据电路图图1和图2编写按键程序,左侧第一位数码管显示独立式按键编号“1”、“2”、“3”、“4”,哪一个按下,对应的编号显示在左侧第一位数码管(左侧第二个数码管为全灭状态),右侧二位数码管显示“00--15”的十进制键值,无键按下时数码管为全灭状态。
图1 动态显示电路图图2 键盘接口电路图评分表unsigned char code led_code[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09 ,0x11,0xc1,0x63,0x85,0x61,0x71,0xff}; unsigned char dis_buf[4];unsigned char i;unsigned char aa,bb,cc,lie;sbit key1=P2^0;sbit key2=P2^1;sbit key3=P2^2;sbit key4=P2^3;sbit led_clk= P1^6 ;sbit led_data = P1^7 ;void delay_ms(unsigned int i){unsigned char j;for(i;i>0;i--){for(j=110;j>0; j-- );}}void key_scan(void){P3=0Xf0;if((P3&0xf0)!=0xf0){aa=0xfe;for(lie=0;lie<4;lie++){P3=aa;aa=(aa<<1)|0x01;if((P3&0xf0)!=0xf0){bb=P3&0Xf0;switch(bb){case 0xe0:cc=lie;break;case 0xd0:cc=lie+4;break;case 0xb0:cc=lie+8;break;case 0x70:cc=lie+12;break;default :cc=16;break;}}}}else cc=16;}void led_display ( ){unsigned char t,i;unsigned char input_code;for(i=0;i<4;i++){input_code=led_code[dis_buf[i]];for (t=0;t<8;t++){if( input_code & 0x01 ){led_data=1;}else{led_data=0;}led_clk=0;input_code>>=1;led_clk=1;}}}void main (){unsigned char num;while(1){key_scan();if(key1==0){delay_ms(10);if(key1==0){num=1;}}else if(key2==0){delay_ms(10);if(key2==0){num=2;}}else if(key3==0){delay_ms(10);if(key3==0){num=3;}}else if(key4==0){delay_ms(10);if(key4==0){num=4;}}else {num=16;}dis_buf[2]=16;dis_buf[3]=num;if(cc!=16){dis_buf[1]=cc/10;dis_buf[0]=cc%10;}else{dis_buf[1]=16;dis_buf[0]=16;}led_display ();delay_ms(300);}}[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]。
单片机静态数码管实验报告
单片机静态数码管实验报告一、引言静态数码管是一种常用的显示器件,广泛应用于各种仪器仪表、计时器、计数器等场合。
本实验旨在通过单片机控制静态数码管,实现数字的显示功能。
二、实验原理静态数码管由若干个发光二极管组成,每个发光二极管代表一个数字。
通过控制每个发光二极管的亮灭,可以显示不同的数字。
单片机通过控制数码管的共阳极或共阴极,以及发光二极管的亮灭,实现数字的显示。
三、实验器材1. 单片机开发板2. 静态数码管3. 连接线四、实验步骤1. 连接电路:将静态数码管的共阳极或共阴极与单片机开发板相应的IO口连接。
2. 编写程序:使用C语言编写程序,通过控制IO口的高低电平控制数码管的亮灭,实现数字的显示。
3. 烧录程序:将编写好的程序烧录到单片机开发板中。
4. 调试程序:通过调试程序,观察数码管是否能正常显示数字。
5. 结果分析:根据实验结果,分析程序的正确性及数码管显示的准确性。
6. 实验总结:总结实验过程中的问题及解决方法,并对实验结果进行分析和评价。
五、实验结果经过实验,我们成功地通过单片机控制静态数码管,实现了数字的显示。
数码管能够根据程序的控制,显示出不同的数字,显示效果良好,准确度高。
六、实验分析通过本实验,我们掌握了单片机控制静态数码管的方法和技巧。
在实验过程中,我们发现控制数码管显示数字的关键在于正确地控制IO口的高低电平。
同时,我们还发现静态数码管显示数字的亮度和清晰度与电源电压和电流的稳定性有关,需要合理选择电源参数。
七、实验应用静态数码管广泛应用于各种仪器仪表、计时器、计数器等场合。
通过单片机控制静态数码管,可以实现各种数字的显示功能,满足不同场合的需求。
八、实验总结通过本实验,我们深入了解了单片机控制静态数码管的原理和方法。
通过编写程序和调试程序,我们成功地实现了数字的显示功能。
实验过程中,我们遇到了一些问题,但通过不断的调试和尝试,最终解决了问题。
通过本次实验,我们不仅加深了对单片机原理的理解,还提升了实际操作和问题解决的能力。
单片机数码管静态显示实验程序(汇编)_共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次。
实验三 数码管静态显示实验
示实验
1/12
实验预习报告检查
• 1数码管显的
编程思路
• 目的:熟悉74HC573锁存器编程! • 检查:手写纸上或书上;小课带上C课本.
2/12
实验目的
掌握数码管的工作原理及其静态显示 掌握锁存器的工作原理及如何使用锁存器扩
11/12
预习内容
蜂鸣器、继电器实验
➢有源蜂鸣器、无源蜂鸣器的工作原理 及操作方法
➢继电器的原理及操作方法
12/12
展单片机的I/O口
3/12
实验内容
1、使用P0,P2,P3口,静态控制三个数码管任意显数( 0~999)。( 电路图为:直接使用单片机IO口的静态显示接口)
2、使用锁存器实现静态控制2个数码管显数(实现任意 显示0~99)。(电路图:锁存器扩展IO口的静态显示接口)
3、使用锁存器实现静态控制六个数码管显数(实现任意 1个或多个管显示0~F)。(电路图:实验板数码管显示接口)
锁存器扩展IO口的静态显示接口
7/12
实验原理
实验板数码管显示接口
8/12
实验原理
实验板电路原理图
9/12
实验原理
实验板电路原理图
10/12
提高实验
1.用静态显示的方法,通过三个数码管,实现 倒计数,从999减到0停止,计数间隔200ms;
2.用动态显示的方法,通过6个数码管,实现循 环显数,(如第一个数码管显示0,然后间隔 500ms,让第二个数码管显示1,再间隔500ms, 第三个数码管显示2 . 。。),从0到F,然后无 限重复上述过程。
4/12
实验原理
使用proteus仿真软件制作电路和实验板进 行仿真。(实验板中段和位锁存器的选通/ 锁存LE控制端分别接单片机P2.6和P2.7口)
51单片机静态数码管显示数字程序
{
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
/******************************************************************************
单片机数码管静态显示实验
实验五串行口静态显示一.实验目的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位才能启动串行接收。
数码管显示程序(汇编语言)
实验三数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。
二、实验内容编制程序,使数码管显示“DJ--88”字样。
三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)数码管显示“DJ--88”字样。
脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。
2、数码管显示“DJ--88”字样。
五、实验程序清单CODE SEGMENT ;S6.ASM display "DJ--88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DHMOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,08HMOV BUF+5,08HRETCODE ENDSEND START。
单片机实验报告——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。
第三课单片机控制数码管的动静态显示(详细介绍“数码管”)共10张
数码管的相关基础知识简介
对与很多基础比较薄弱的同学可能对电子 器件的实物没有一个感性的认识,那么就 让我们首先来看一下什么是数码管,还有
他在我们的风云51基础实静态数码管的控制非常简单,在程序中只要将数码管相应的位选信号打开,然后给段选写上相应的数据就可以搞定,以我们51基础实验板
共阴数码管
共阴共阳数码管
由上图所示,不难看出数码管也是由一个个的发光二级管组 成,只不过采用了不同的排列不同的形状而已,穿了马甲的 乌龟我们照样认识,那么共阴就是把8个二极管的负极也就 是阴极连在一起,顾名思义共阳就是将八个数码管的阳极 也就是正极连接在一起,四位一体,就是将数码管的段选 接口对应连接在一起,将位选留出。
静态数码管的控制非常简单,在程序中只要将数码管相应的位选信号打开,然后给段选写上相应的数据就可以搞定,以我们51基础实验板 为例,原理图中位选信号是与P2口相连,8个段选都与P1口相连,所以我们要实现静态控制的话,每次最多只能点亮一位数码管,加入我
单片机动态控制数码管显示 们现在要编程实现让第一位数码管显示数字8,那么我们需要给口写0,给P1口先80H,因为我们用的事PNP管并且数码管都是共阳的。
为例,原理图中位选信号是与P2口相连,8个段选都与P1口相连,所以我们要实现静态控制的话,每次最多只能点亮一位数码管,加入我
果采用动态扫描的话用16个IO,如果加上一个锁存器的话用 们现在要编程实现让第一位数码管显示数字8,那么我们需要给口写0,给P1口先80H,因为我们用的事PNP管并且数码管都是共阳的。 10 IO足矣。那么动态怎么去控制呢,这里需要穿插一 单片机编程控制静态数码管原理
数码管的相关基础知识简介 单片机动态控制数码管显示 单片机编程控制静态数码管原理 第三课单片机控制数码管的动静态显示
静态数码管显示(可编程)
电子信息与自动化学院《可编程逻辑器件》实验报告学号:姓名:实验名称:数码管静态显示一、实验原理七段数码管是电子开发过程中常用的输出显示设备。
在实验系统中使用的是四个共阳极型七段数码管。
由于七段数码管公共端连接到VCC(共阳极型),当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
图1数码管原理图图2程序设计大致流程图二、实验步骤1、打开QuartusII软件,新建一个工程然后创建一个Verilog File,打开VHDL编辑对话框进行编程;2、主要程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity JINGTAI isport (clk:in std_logic;x: out std_logic_vector(6 downto 0);y: out std_logic_vector(3 downto 0));end JINGTAI;architecture behave of JINGTAI issignal number :integer range 50000000 downto 0;signal count: std_logic_vector (1 downto 0);signal key: std_logic_vector (3 downto 0);beginy<="0000";PROCESS(clk)begin if clk'event and clk='1' then if number<50000000 thennumber <= number+1;else number <= 0;key <= key +1;end if;end if;end process;process(key)begincase key iswhen "0000" => x <= "1000000" ;when "0001" => x <= "1111001" ;when "0010" => x <= "0100100" ;when "0011" => x <= "0110000" ;when "0100" => x <= "0011001" ;when "0101" => x <= "0010010" ;when "0110" => x <= "0000010" ;when "0111" => x <= "1111000" ;when others => null;end case;end process;end behave;3、引脚锁定图3 引脚锁定三、实验结果仿真图如下:图4时序仿真图由以上可知,实验结果符合要求,则设计成功。
实验四 数码管静态显示
实验四数码管静态显示一、实验目的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位需要我们理解清楚。
单片机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芯片,通过编写程序,可以实现不同数字或字母在四位
数码管上的显示,达到定量和定性的要求。
单片机C语言程序(数码管动态静态显示)
0123动态显示:#inclu de<re g52.h>#de fineuchar unsi gnedchar#defi ne ui nt un signe d intuint num,numdu,numw e;uc har c ode t abled u[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucha r cod e tab lewe[]={0xfe,0xfd,0xfb,0xf7};sbit dula=P2^6;sbi t wel a=P2^7;vo id di splay();v oid m ain(){E A=1;ET1=1;T MOD=0x10;TH1=(65536-500)/256;TH0=(65536-500)%256;TR1=1;nu m=0;whil e(1){if(nu m==20){n um=0;i f(num du==4)numdu=0;if(numwe==4)nu mwe=0;displ ay();n umdu++;numw e++;}}}v oid t ime1() int errup t 3{TH1=(65536-500)/256;T H0=(65536-500)%256;num++;}voiddispl ay(){P0=0xff;we la=1;wel a=0;P0=t abled u[num du];dula=1;dula=0;P0=tab lewe[numwe];w ela=1;we la=0;}0123静态显示:#inclu de<re g52.h>#de fineuchar unsi gnedchar#defi ne ui nt un signe d intuint num,numdu,numw e;uc har c ode t abled u[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucha r cod e tab lewe[]={0xfe,0xfd,0xfb,0xf7};sbit dula=P2^6;sbi t wel a=P2^7;vo id de lay(u char);voi d mai n(){EA=1;E T1=1;TMO D=0x10;T H1=(65536-50000)/256;TH0=(65536-50000)%256;TR1=1;while(1){P0=0xf f;wela=1;wela=0;P0=t abled u[0];du la=1;du la=0;P0=tabl ewe[0];wela=1;wela=0;P0=0x ff;wela=1; wel a=0;P0=table du[1];d ula=1;d ula=0;P0=tab lewe[1];wela=1;wela=0;P0=0xff;wel a=1;we la=0;P0=tabl edu[2];dula=1;dula=0;P0=ta blewe[2];wel a=1;wel a=0;P0=0xff;we la=1;w ela=0;P0=tab ledu[3];dula=1;dula=0;P0=t ablew e[3];we la=1;we la=0;} }0-999循环跳变#in clude<reg52.h>#defi ne uc har u nsign ed ch ar#d efine uint unsi gnedintu int a,b,co unt,n um,nu mdu,n umwe; ucha r cod e tab ledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};u charcodetable we[]={0xf e,0xf d,0xf b,0xf7};s bit d ula=P2^6;sbitwela=P2^7;void dela y(uch ar);voiddispl ay(uc har,u char,uchar); vo id ma in(){EA=1;ET1=1;TM OD=0x10;TH1=(65536-50000)/256;T H0=(65536-50000)%256;TR1=1;coun t=0;whil e(1){if(nu m==20){nu m=0;if(count==1000)count=0;c ount++;}d ispla y(cou nt/100,cou nt%100/10,count%10);}}void time1() i nterr upt 3{T H1=(65536-50000)/256;TH0=(65536-50000)%256;num++;}void disp lay(u charbai,u charshi,u charge){P0=0xff;wel a=1;wela=0;P0=ta bledu[bai];du la=1;dul a=0;P0=t ablew e[1];wel a=1;wela=0;delay(1);P0=0xff;wela=1;wela=0;P0=tab ledu[shi];dul a=1;dula=0;P0=ta blewe[2];wela=1;wela=0;d elay(1); P0=0xff;wela=1;wela=0;P0=tab ledu[ge];dula=1;dula=0;P0=tab lewe[3];wela=1;w ela=0;de lay(1);}voiddelay(ucha r x){uc har a,b;for(a=x;a>0;a--)f or(b=200;b>0;b--); }。
51单片机应用(数码管)实验(汇编)
实验一单片机I/O并口视觉实验(数码管)(仅供参考) 开课学院及实验室:xxxx实验时间: xxxx实验目的1、了解简单单片机应用系统的设计方法。
2、掌握应用KEIL软件编辑、编译源程序的操作方法。
3、掌握应用PROTEUS仿真软件的操作方法。
4、掌握C51的编程方法。
5、培养良好的实验习惯。
实验内容1、AT89S52为主控芯片,用PROTEUS仿真设计简单单片机应用系统。
2、用6个数码管显示学号后4位。
3、使用按键控制学号后四位的加减,步进为34、行列式键盘(选作);时钟(选作)实验原理1、数码管显示(1)实验原理图(2)流程图(个人见解,不知正确)1、实验一:2、实验二:(3)实验程序实验一:ORG 000HMAIN:MOV 30H, #3MOV 31H, #0MOV 32H, #6MOV 33H, #3MOV DPTR,#TABSTART:MOV R0,#30HMOV R1,#0FEHMOV R2,#4LOOP:MOV A,@R0MOVC A,@A+DPTRMOV P2,#0FFHMOV P0,AMOV P2,R1LCALL DELAYINC R0MOV A,R1RL AMOV R1,ADJNZ R2,LOOPSJMP STARTDELAY:MOV R3,#10DJNZ R3,$RETTAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH DB 7DH, 07H, 7FH, 6FH, 76HEND实验二:ORG 0000HAJMP MAINORG 0003HAJMP KEYUPORG 0013HAJMP KEYDOWNMAIN:MOV 30H, #3MOV 31H, #0MOV R7, #63 ;初始化学号MOV DPTR,#TAB ;制表SETB IT0SETB EX0 ;中断0SETB IT1SETB EX1 ;中断1SETB EA ;总中断START:MOV R0,#30HMOV R1,#0FEHMOV R2,#4LOOP:LCALL BREAKMOV A,@R0MOVC A,@A+DPTRMOV P2,#0FFHMOV P0,AMOV P2,R1LCALL DELAYINC R0MOV A,R1RL AMOV R1,ADJNZ R2,LOOPSJMP STARTKEYUP:INC R7CJNE R7,#67,GOMOV R7,#60RETIKEYDOWN:DEC R7CJNE R7,#59,GOMOV R7,#66RETIGO:RETIBREAK:MOV A,R7MOV B,#10DIV ABMOV 33H,BMOV 32H,ARETDELAY:MOV R3,#10DJNZ R3,$RETTAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH DB 7DH, 07H, 7FH, 6FH, 76HEND实验总结1、实验中出现的问题,如何解决2、心得体会。
数码管静态显示程序源码解读
数码管静态显示程序源码解读1. 任务背景数码管是一种常见的显示设备,可以用于显示数字、字母、符号等信息。
静态显示是指将需要显示的内容直接显示在数码管上,而不进行滚动或闪烁等效果。
在这个任务中,我们将解读一个数码管静态显示程序源码,以帮助读者理解如何控制数码管进行静态显示。
2. 源码解读2.1 引用库源码开头部分通常会包含一些引用库的语句,用于导入所需的库文件。
在这个源码中,我们需要引用”Arduino.h”库文件,该文件提供了与Arduino开发板相关的函数和变量。
#include <Arduino.h>2.2 定义引脚在使用数字管显示时,需要将数字管的引脚与Arduino开发板进行连接。
引脚定义部分会告诉我们连接哪些引脚。
#define A 2#define B 3#define C 4#define D 5#define E 6#define F 7#define G 8#define DP 9这里通过#define定义了8个引脚,分别对应数码管的A、B、C、D、E、F、G、DP 引脚。
2.3 初始化引脚在开始使用引脚前,需要先将引脚进行初始化。
初始化主要是设置引脚的输入或输出模式。
void setup() {pinMode(A, OUTPUT);pinMode(B, OUTPUT);pinMode(C, OUTPUT);pinMode(D, OUTPUT);pinMode(E, OUTPUT);pinMode(F, OUTPUT);pinMode(G, OUTPUT);pinMode(DP, OUTPUT);}这里使用了pinMode函数将A、B、C、D、E、F、G、DP引脚都设置为输出模式。
2.4 定义数码管显示函数在这个源码中,定义了一个名为displayDigit的函数,用于将数字显示在数码管上。
void displayDigit(int digit) {switch (digit) {case 0:digitalWrite(A, HIGH);digitalWrite(B, HIGH);digitalWrite(C, HIGH);digitalWrite(D, HIGH);digitalWrite(E, HIGH);digitalWrite(F, HIGH);digitalWrite(G, LOW);digitalWrite(DP, LOW);break;case 1:digitalWrite(A, LOW);digitalWrite(B, HIGH);digitalWrite(C, HIGH);digitalWrite(D, LOW);digitalWrite(E, LOW);digitalWrite(F, LOW);digitalWrite(G, LOW);digitalWrite(DP, LOW);break;case 2:digitalWrite(A, HIGH);digitalWrite(B, HIGH);digitalWrite(C, LOW);digitalWrite(D, HIGH);digitalWrite(E, HIGH);digitalWrite(F, LOW);digitalWrite(G, HIGH);digitalWrite(DP, LOW);break;// more cases for digits 3 to 9...default:// default case for other digitsbreak;}}这个函数采用了switch语句,根据输入的数字参数,设置对应的引脚状态以显示相应的数字。
MC9S08FL16单片机数码管静态显示分析
MC9S08FL16单片机数码管静态显示分析作者:邹雪妍来源:《科技风》2019年第13期摘要:单片机常用的显示器为数码管LED、液晶LCD等等,数码管静态显示具有位码始终有效,占用CPU时间短,亮度高等特点。
本文对MC9S08FL16单片机8段数码管静态显示的整个过程进行分析。
关键词:数码管;静态显示;MC9S08FL16单片机利用protel99se绘制单片机数码管静态显示的原理图,为使线路绘制清晰,将单片机的PTB1、PTB2、PTD4、PTB3接数码管的位选端口;将单片机的PTA0、PTD5、PTA1、PTA2、PTA3、PTA6、PTA7、PTB0接数码管的段选端口。
通过写入器将程序写入便可以实现单片机数码管的静态显示。
1数码管工作原理若每位數码管仅需显示“0”~“9”这10个数字,则只需7段LED,若同时若需要显示小数点,则需要8段LED。
8段数码管由8个发光二极管组成。
MCU通过IO脚来控制LED某段的“亮”或“灭”来达到显示某个数字的目的。
如果采用共阴极数码管,那么数码管的公共端需要接地,数码管某位要求亮时对应端口输出低电平,其余不亮位选对应端口输出高电平;如果采用共阳极数码管,那么数码管公共端需连接电源正极,共阳极数码管与共阴极数码管输出电平状态相反。
图1中采用共阴极数码管,MC9S08FL16单片机位选端连接在单片机的PTB1、PTB2、PTD4、PTB3端口,段选端接在了单片机的PTA0、PTD5、PTA1、PTA2、PTA3、PTA6、PTA7、PTB0。
如果使4连排数码管的第一位显示数字“2”,则需要使图2中对应引脚上的a、b、g、e、d五段发光二极管发光,对应端口应该输出0x5B(对应二进制数01011011),c、f、h段发光二极管不发光。
此时与位选端相连的端口对应引脚输出低电平。
若采用共阳极数码管则此时与位选端相连的端口对应引脚输出高电平,若同样在对应位置显示数字“2”,则对应端口应该输出0xA4(对应二进制数10100100)。
数码管静态显示实验
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 __月__
单片机数码管静态显示及定时器和中断应用
例 利用定时/计数器T1的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。 解:1、计算计数初值X: 由于晶振为12 MHz,所以机器周期Tcy为1 s。 所以: N=t/ Tcy =10000/1=10000 X=65536-10000=55536=D8F0H 即应将D8H送入TH0中,F0H送入TL0中 2、求T1的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;
GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。 :定时/计数模式选择位。 =0为定时模式; =1为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。
TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。TX实验板用共阴LED显示器,根据电路连接图显示16进制数的编码已列在下表。
单片机数码管显示实验
实验一数码管实验一、实验目的1. 了解数码管的显示原理;2. 掌握JXARM9-2440 中数码管显示编程方法二、实验仪器JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE集成开发环境、串口连接线、PC机。
三、实验原理7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
LED显示器的接口一般有静态显示与动态显示接口两种方式。
本实验中采用的是动态显示接口,其中数码管扫描控制地址为0x20007000,位0-位5每位分别对应一个数码管,将其中某位清0 来选择相应的数码管,地址0x20006000 为数码管的数据寄存器。
数码管采用共阳方式,向该地址写一个数据就可以控制LED 的显示,数据中的1对应的不亮,0对应的亮,数码管各位从高到低排列为dp-g-f-e-d-c-b-a,例如当数据寄存器是11111111时则不亮,当是01111111时则显示8,其原理图如图所示。
四、实验内容1、编程实现:六个数码管同时正向显示0-F ,然后反向显示F-0。
2、编程实现:在六个数码管上依次显示与自己姓名有关的内容,可分辨出轮流显示。
3、编程实现:在六个数码管上依次显示与自己姓名有关的内容,分辨不出轮流显示。
4*、编程实现:在每个数码管上递增显示0—9 。
5*、自行开发。
五、实验程序1,/****************************************************************************//*文件名称: LEDSEG7.C *//*实验现象:数码管依次显示出0、1,2、……9、a、b、C、d、E、F *//****************************************************************************/ #define U8 unsigned charunsigned char seg7table[16] = {/* 0 1 2 3 4 5 6 7*/0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,};void Delay(int time);/****************************************************************************//* 函数说明: JXARM9-2410 7段构共阳数码管测试 *//* 功能描述: 依次在7段数码管上显示0123456789ABCDEF *//* 返回代码: 无 *//* 参数说明: 无 *//****************************************************************************/ void Test_Seg7(void) {int i;*((U8*)0x20007000)=0x00; /*6个数码管都亮*/for(;;){/*数码管从0到F依次将字符显示出来*/for(i=0;i<0x10;i++){*((U8*)0x20006000)=seg7table[i];Delay(10000);}/*数码管从F到0依次将字符显示出来*/ for(i=0x0f;i>0x00;i--){*((U8*)0x20006000)=seg7table[i];Delay(10000);}}// TODO}/****************************************************************************//* Function name : 循环延时子程序 */ /* Description : 循环 'time' 次 */ /* Return type :void */ /* Argument : 循环延时计数器 */ /****************************************************************************/ void Delay(int time) {int i;int delayLoopCount=10000;for(;time>0;time--);for(i=0;i<delayLoopCount;i++);}2,/****************************************************************************/ /*文件名称: LEDSEG7.C */ /*实验现象:数码管依次显示ZHAngg,并能看出轮流显示 *//****************************************************************************/ #define U8 unsigned charunsigned char seg7table[16] = {/* Z H A n g g 6 7*/0xa4, 0x89, 0x88, 0xc8, 0x90, 0x90, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,/* H I N*/0x89, 0xcf, 0x48};void Delay(int time);/****************************************************************************/ /* 函数说明: JXARM9-2410 7段构共阳数码管测试 */ /* 功能描述: 在六个数码管上分别显示字母,与姓名有关 */ /* 返回代码: 无 */ /* 参数说明: 无 */ /****************************************************************************/ void Test_Seg7(void) {int i;*((U8*)0x20007000)=0x00;for(;;){*((U8*)0x20007000)=0x1f;*((U8*)0x20006000)=seg7table[0];Delay(10000);*((U8*)0x20007000)=0x2f;*((U8*)0x20006000)=seg7table[1];Delay(10000);*((U8*)0x20007000)=0x37;*((U8*)0x20006000)=seg7table[2];Delay(10000);*((U8*)0x20007000)=0x3b;*((U8*)0x20006000)=seg7table[3];Delay(10000);*((U8*)0x20007000)=0x3d;*((U8*)0x20006000)=seg7table[4];Delay(10000);*((U8*)0x20007000)=0x3e;*((U8*)0x20006000)=seg7table[5];Delay(10000);}// TODO}/***************************************************************************/ /* Function name : 循环延时子程序 */ /* Description : 循环 'time' 次 */ /* Return type :void */ /* Argument : 循环延时计数器 */ /****************************************************************************/ void Delay(int time) {int i;int delayLoopCount=10000;for(;time>0;time--);for(i=0;i<delayLoopCount;i++);}3,/****************************************************************************/ /*文件名称: LEDSEG7.C */ /*实验现象:数码管依次显示出ZHAngg,并看不出轮流显示 *//****************************************************************************/ #define U8 unsigned charunsigned char seg7table[16] = {/* Z H A n g g 6 7*/0xa4, 0x89, 0x88, 0xc8, 0x90, 0x90, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,/* H I N*/0x89, 0xcf, 0x48};void Delay(int time);/****************************************************************************/ /* 函数说明: JXARM9-2410 7段构共阳数码管测试 */ /* 功能描述: 在六个数码管上分别显示字母,与姓名有关*//* 返回代码: 无 */ /* 参数说明: 无 */ /****************************************************************************/ void Test_Seg7(void) {int i;*((U8*)0x20007000)=0x00;for(;;){*((U8*)0x20007000)=0x1f;*((U8*)0x20006000)=seg7table[0];Delay(10000);*((U8*)0x20007000)=0x2f;*((U8*)0x20006000)=seg7table[1];Delay(10000);*((U8*)0x20007000)=0x37;*((U8*)0x20006000)=seg7table[2];Delay(10000);*((U8*)0x20007000)=0x3b;*((U8*)0x20006000)=seg7table[3];Delay(10000);*((U8*)0x20007000)=0x3d;*((U8*)0x20006000)=seg7table[4];Delay(10000);*((U8*)0x20007000)=0x3e;*((U8*)0x20006000)=seg7table[5];Delay(1);}// TODO}/***************************************************************************//* Function name : 循环延时子程序 */ /* Description : 循环 'time' 次 */ /* Return type :void */ /* Argument : 循环延时计数器 */ /****************************************************************************/ void Delay(int time) {int i;int delayLoopCount=10000;for(;time>0;time--);for(i=0;i<delayLoopCount;i++);}4,/****************************************************************************/ /*文件名称: LEDSEG7.C */ /*实验现象:数码管依次显示出0、1,2、……9、a、b、C、d、E、F */ /****************************************************************************/ #define U8 unsigned charunsigned char seg7table[16] = {/* 0 1 2 3 4 5 6 7*/0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,};void Delay(int time);/****************************************************************************/ /* 函数说明: JXARM9-2410 7段构共阳数码管测试 */ /* 功能描述: 依次在7段数码管各自递增显示0—9 *//* 返回代码: 无 */ /* 参数说明: 无 */ /****************************************************************************/ void Test_Seg7(void) {int i;for(;;){for(i=0;i<=0x09;i++){*((U8*)0x20007000)=0x1f;*((U8*)0x20006000)=seg7table[i];Delay(10000);}for(i=0;i<=0x09;i++){*((U8*)0x20007000)=0x2f;*((U8*)0x20006000)=seg7table[i];Delay(10000);}for(i=0;i<=0x09;i++){*((U8*)0x20007000)=0x37;*((U8*)0x20006000)=seg7table[i];Delay(10000);}for(i=0;i<=0x09;i++){*((U8*)0x20007000)=0x3b;*((U8*)0x20006000)=seg7table[i];Delay(10000);}for(i=0;i<=0x09;i++){*((U8*)0x20007000)=0x3d;*((U8*)0x20006000)=seg7table[i];Delay(10000);}}// TODO}/****************************************************************************/ /* Function name : 循环延时子程序 */ /* Description : 循环 'time' 次 */ /* Return type :void */ /* Argument : 循环延时计数器 */ /****************************************************************************/ void Delay(int time) {int i;int delayLoopCount=10000;for(;time>0;time--);for(i=0;i<delayLoopCount;i++);}六、实验结果与分析实验一结果:六个数码管同时显示相同的符号,从0-F再由F-0之间的循环变换。