数码管显示及定时器和中断应用
数码管动态显示实验报告

一、实验目的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. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。
单片机控制装置与调试任务六 数码管显示应用

该数组共有5个元素,每个元素由不同的下标表示,分别为buffer[0],buffer[1],buffer[2],buffer[3]和buffer[4]。
为了稳定发光,再延时一段时间,之后加人熄灭数码管进行消隐,主要防止显示有拖尾现象。
{ cs1=0;cs2=1;
//选中段码锁存IC
for(i=0;i<9;i++)
效,然后送数据,先送段选,然后再送位选,最后CP脉冲高电平使的
数据输出。
2.动态扫描的基本流程 以从高位到低位扫描显示为例, 动态扫描的基本流
程是: (1)送段码
①送最高位的段码到总线。
②拉低cs1,置位cs2。 ③用wr线发送锁存脉冲。 (2)送位码 ①送第七个通道(Q8)位选数据到总线。 ②拉低cs2,置位cs1。 ③同样用wr线发送锁存脉冲。第七个通道(Q8)导通, 第一位数码管点亮。
/例* 8如位,数一码个管3从位左数到字右变依量次tem显p示要“D在n0高L,阻ED1态,七2段,数3码,管4,显×↑,示5其,“6,百7、”十八HH、个个数”字各的个C语位××言上程的序数字*/ 。无无输输出出
port=tab[disbuf[i]];wr=1;wr=0;
//送段码,锁存数据
图5-1所示为常见的各种数码管的外形。
{ while(1)
//while循环
disbuf[1]=tab[1];
//分别为"0、1、2、3、4、5、6、7"
(2) 定义共阳极字形编码表(数字0~9)
在建立数组的时候,注意字型码的排列次序,段码对表头的偏移位置就是该数值的段码,这种排列方法很便于显示数据
因此可将LED各段码与数据位建立如表4-1所示的对应关系。
实验二 数码管动态显示模块设计2

6、单片机中断系统结构及工作原理
标准51单片机的中断系统有五个中断源。分别为:
中断源入口地址优先级别(同级)
外部中断00003H最高
定时器0溢出000BH
外部中断10013H
定时器1溢出001BH
串行口中断0023H最低
使用中断之前,必须对中断允许寄存器IE进行设置,将中断允许标志EA和对应中断位置1,以将中断打开。中断控制结构如图4-10所示。
实验内容
1、在数码管上显示学号的后8位
2、设计一个以学号后两位加10秒的倒计时程序
实验步骤及现象
打开万利仿真机,接好单片机开发板,新建工程,下载安装程序。我们这次实验的程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
图4-10 MSC51中断结构图
CPU中断的过程为:当有中断源发生中断信号时,首先对IE中对应的中断位判断;如打开,则进行EA判断;如EA=1,将根据中断优先级IP的设置情况进行优先级判别;如该中断优先级较高,在硬件控制下,先将程序计数器PC的内容压入堆栈,同时把被响应的中断服务程序的入口地址装入PC中,以执行中断服务程序。中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行完这条指令后,将从堆栈中弹出两个字节内容(断点地址)装入PC中,从而执行被中断的程序。
图4-7定时器模式控制字格式
TCON寄存器用于定时器的计数控制和中断标志。如图4-8所示。
图4-8定时控制寄存器数据格式
编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。
单片机实验报告数字时钟设计报告

单片机实验报告数字时钟设计报告一、实验目的本次单片机实验的目的是设计并实现一个基于单片机的数字时钟。
通过该实验,深入了解单片机的工作原理和编程方法,掌握定时器、中断、数码管显示等功能的应用,提高综合运用知识解决实际问题的能力。
二、实验原理1、单片机选择本次实验选用了常见的 51 系列单片机,如 STC89C52。
它具有丰富的资源和易于编程的特点,能够满足数字时钟的设计需求。
2、时钟计时原理数字时钟的核心是准确的计时功能。
通过单片机内部的定时器,设定合适的定时时间间隔,不断累加计时变量,实现秒、分、时的计时。
3、数码管显示原理采用共阳或共阴数码管来显示时间数字。
通过单片机的 I/O 口控制数码管的段选和位选信号,使数码管显示相应的数字。
4、按键控制原理设置按键用于调整时间。
通过检测按键的按下状态,进入相应的时间调整模式。
三、实验设备与材料1、单片机开发板2、数码管3、按键4、杜邦线若干5、电脑及编程软件(如 Keil)四、实验步骤1、硬件连接将数码管、按键与单片机开发板的相应引脚通过杜邦线连接起来。
确保连接正确可靠,避免短路或断路。
2、软件编程(1)初始化单片机的定时器、中断、I/O 口等。
(2)编写定时器中断服务程序,实现秒的计时。
(3)设计计时算法,将秒转换为分、时,并进行进位处理。
(4)编写数码管显示程序,将时间数据转换为数码管的段选和位选信号进行显示。
(5)添加按键检测程序,实现时间的调整功能。
3、编译与下载使用编程软件将编写好的程序编译生成可执行文件,并下载到单片机中进行运行测试。
五、程序设计以下是本次数字时钟设计的主要程序代码片段:```cinclude <reg52h>//定义数码管段选码unsigned char code SEG_CODE ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//定义数码管位选码unsigned char code BIT_CODE ={0x01, 0x02, 0x04, 0x08, 0x10,0x20, 0x40, 0x80};//定义时间变量unsigned int second = 0, minute = 0, hour = 0;//定时器初始化函数void Timer_Init(){TMOD = 0x01; //定时器 0 工作在方式 1 TH0 =(65536 50000) / 256; //定时 50ms TL0 =(65536 50000) % 256;EA = 1; //开总中断ET0 = 1; //开定时器 0 中断TR0 = 1; //启动定时器 0}//定时器 0 中断服务函数void Timer0_ISR() interrupt 1{TH0 =(65536 50000) / 256;TL0 =(65536 50000) % 256;second++;if (second == 60){second = 0;minute++;if (minute == 60){minute = 0;hour++;if (hour == 24){hour = 0;}}}}//数码管显示函数void Display(){unsigned char i;for (i = 0; i < 8; i++)P2 = BIT_CODEi;if (i == 0){P0 = SEG_CODEhour / 10;}else if (i == 1){P0 = SEG_CODEhour % 10;}else if (i == 2){P0 = 0xBF; //显示“”}else if (i == 3){P0 = SEG_CODEminute / 10;else if (i == 4){P0 = SEG_CODEminute % 10;}else if (i == 5){P0 = 0xBF; //显示“”}else if (i == 6){P0 = SEG_CODEsecond / 10;}else if (i == 7){P0 = SEG_CODEsecond % 10;}delay_ms(1);//适当延时,防止闪烁}}//主函数void main(){Timer_Init();while (1){Display();}}```六、实验结果与分析1、实验结果将程序下载到单片机后,数字时钟能够正常运行,准确显示时、分、秒,并且通过按键可以进行时间的调整。
8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 /*8位数码管显示时间格式 055000 标示05点50分00秒S1 用于小时加1操作S2 用于小时减1操作S3 用于分钟加1操作S4 用于分钟减1操作*/#includereg52.hsbit KEY1=P3^0; //定义端口参数sbit KEY2=P3^1;sbit KEY3=P3^2;sbit KEY4=P3^3;sbit LED=P1^2; //定义指示灯参数code unsigned chartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管09unsigned char StrTab[8]; //定义缓冲区unsigned char minute=19,hour=23,second; //定义并初始化为12:30:00void delay(unsigned int cnt){while(cnt);}/********************************************************** ********//* 显示处理函数 *//********************************************************** ********/void Displaypro(void){StrTab[0]=tab[hour/10]; //显示小时StrTab[1]=tab[hour%10];StrTab[2]=0x40; //显示StrTab[3]=tab[minute/10]; //显示分钟StrTab[4]=tab[minute%10];StrTab[5]=0x40; //显示StrTab[6]=tab[second/10]; //显示秒StrTab[7]=tab[second%10];}main(){TMOD |=0x01; //定时器0 10ms inM crystal 用于计时TH0=0xd8; //初值TL0=0xf0;ET0=1;TR0=1;TMOD |=0x10; //定时器1用于动态扫描 TH1=0xF8; //初值TL1=0xf0;ET1=1;TR1=1;EA =1;Displaypro(); //调用显示处理函数while(1){if(!KEY1) //按键1去抖以及动作{delay(10000);if(!KEY1){hour++;if(hour==24)hour=0; //正常时间小时加1Displaypro();}if(!KEY2) //按键2去抖以及动作 {delay(10000);if(!KEY2){hour;if(hour==255)hour=23; //正常时间小时减1 Displaypro();}}if(!KEY3) //按键去抖以及动作{delay(10000);if(!KEY3){minute++;if(minute==60)minute=0; //分加1Displaypro();}if(!KEY4) //按键去抖以及动作{delay(10000);if(!KEY4){minute;if(minute==255)minute=59; //分减1Displaypro();}}}}/********************************************************** ********//* 定时器1中断 *//********************************************************** ********/void time1_isr(void) interrupt 3 using 0 //定时器1用来动态扫描static unsigned char num;TH1=0xF8; //重入初值TL1=0xf0;switch (num){case 0:P2=0;P0=StrTab[num];break; //分别调用缓冲区的值进行扫描case 1:P2=1;P0=StrTab[num];break;case 2:P2=2;P0=StrTab[num];break;case 3:P2=3;P0=StrTab[num];break;case 4:P2=4;P0=StrTab[num];break;case 5:P2=5;P0=StrTab[num];break;case 6:P2=6;P0=StrTab[num];break;case 7:P2=7;P0=StrTab[num];break;default:break;}num++; //扫描8次,使用8个数码管if(num==8)num=0;}/******************************************************************//* 定时器0中断 *//********************************************************** ********/void tim(void) interrupt 1 using 1{static unsigned char count; //定义内部局部变量TH0=0xd8; //重新赋值TL0=0xf0;count++;switch (count){case 0:case 20:case 40:case 60:case 80:Displaypro();break; //隔一定时间调用显示处理case 50:P1=~P1;break; //半秒 LED 闪烁default:break;}if (count==100){count=0;second++; //秒加1 if(second==60){second=0;minute++; //分加1 if(minute==60){minute=0;hour++; //时加1 if(hour==24)hour=0;}}}}。
实验四 数码管显示控制

实验四数码管显示控制一、实验目的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计数。
单片机实验电子钟报告

实验四 电子钟(定时器、中断综合实验)一、实验目的熟悉MCS51类CPU 的定时器、中断系统编程方法, 了解定时器的应用、实时程序的设计和调试技巧。
二、实验内容编写一个时钟程序, 产生一个50ms 的定时中断, 对定时中断计数, 将时、分、秒显示在数码管上。
三、程序框图主程序中断处理电子钟程序框图四、实验步骤 1.连线说明: E5 区A0 ←→ A3 区A0 E5 区CS ←→ A3 区CS5 E5 区CLK ←→ B2 区2MHzE5 区A.B.C.D ←→ G5 区A.B.C.D (排线每个8 位, 注意高低位一致) 2.时间显示在数码管上五、程序清单 ms50 DATA 31H ;存放多少个50ms sec DATA 32H ;秒 min DATA 33H ;分hour DATA 34H ;时buffer DATA 35H ;显示缓冲区EXTRN CODE(Display8)ORG 0000HLJMP STARORG 000BH ;定时器T0中断处理入口地址LJMP INT_Timer0ORG 0100HSTAR: MOV SP,#60H ;堆栈MOV ms50,A ;清零ms50MOV hour,#12 ;设定初值: 12:59:50MOV min,#59MOV sec,#50MOV TH0,#60 ;定时中断计数器初值MOV TL0,#176 ;定时50msMOV TMOD,#1 ;定时器0: 方式一MOV IE,#82H ;允许定时器0中断SETB TR0 ;开定时器T0STAR1: LCALL Display ;调用显示JNB F0,$CLR F0SJMP STAR1 ;需要重新显示时间;中断服务程序INT_Timer0: MOV TL0,#176-5MOV TH0,#60PUSH 01HMOV R1,#ms50INC @R1 ;50ms单元加1CJNE @R1,#20,ExitIntMOV @R1,#0 ;恢复初值INC R1INC @R1 ;秒加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;分加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;时加1CJNE @R1,#24,ExitInt1MOV @R1,#0ExitInt1: SETB F0ExitInt: POP 01HRETIHexToBCD: MOV B,#10DIV ABMOV @R0,BINC R0MOV @R0,AINC R0RETDisplay: MOV R0,#bufferMOV A,secACALL HexToBCDMOV @R0,#10H ;第三位不显示INC R0MOV A,minACALL HexToBCDMOV @R0,#10H ;第六位不显示INC R0MOV A,hourACALL HexToBCDMOV R0,#bufferLCALL Display8RETENDEXTRN CODE (Display8)BUFFER DA TA 60HORG 0000HAJMP MAINORG 000BHAJMP IT0PMAIN: MOV TMOD,#01HMOV 20H,#20HCLR AMOV 52H,A ;计数和显示MOV 51H,A ;空间清零MOV 50H,#50HMOV 40H,AMOV 41H,AMOV 43H,AMOV 44H,AMOV 46H,AMOV 47H,ASETB ET0SETB EAMOV TH0,#9EH ;计数器赋初值MOV TL0,#58HSETB TR0MOV 45H,#11HMOV 42H,#11HMOV R0,#BUFFERLCALL Display8HERE: AJMP HEREIT0P: PUSH PSWPUSH ACCMOV TH0,#9EH ;重新转入计数值MOV TL0,#58HDJNZ 20H,RETURN ;计数不满20返回MOV 20H,#20H ;重置中断次数MOV A,#01H ;秒加1ADD A,50HDA A ;秒单元十进制调制PUSH ACCCJNE A,#60H,SWS ;是否到60秒, 否则返回MOV A,#00HSWS: MOV R5,ASW AP AANL A,#0FHMOV 41H,AMOV A,R5ANL A,#0FHMOV 40H,A ;满60秒, 秒单元清零LCALL AAAPOP ACCMOV 50H,ACJNE A,#60H,RETURNMOV 50H,#00HMOV A,#01H ;分单元加1ADD A,51H ;分单元十进制调整DA APUSH ACCCJNE A,#60H,SWS1;是否到60分, 否则返回MOV A,#00HSWS1: MOV R5,A·SW AP AANL A,#0FHMOV 44H,AMOV A,R5ANL A,#0FHMOV 43H,ALCALL AAAPOP ACCMOV 51H,ACJNE A,#60H,RETURNMOV 51H,#00H ;满60分, 分单元清零MOV A,#01H ;时单元加1ADD A,52HDA APUSH ACCCJNE A,#24H,SWS2 ;是否到24小时, 否则返回MOV A,#00HSWS2: MOV R5,ASW AP AANL A,#0FHMOV 47H,AMOV A,R5ANL A,#0FHMOV 46H,ALCALL AAAPOP ACCMOV 52H,ACJNE A,#24H,RETURNMOV 52H,#00H ;满24小时, 时单元清零RETURN:POP PSWPOP ACCRETIAAA: MOV R0,#40H ;计数器的值赋MOV R1,#60H ;给显示空间MOV R5,#08HABC: MOV A,@R0MOV @R1,AINC R1INC R0DJNZ R5,ABCMOV R0,#BUFFERLCALL Display8RETEND六、思考题1.电子钟走时精度与哪些有关系?中断程序中给TL0赋值为什么与初始化程序中不一样?2、使用定时器方式二, 重新编写程序。
实验报告四中断系统实验

实验报告四中断系统实验实验报告四:中断系统实验一、实验目的本次中断系统实验的主要目的是深入理解计算机中断系统的工作原理和机制,掌握中断的处理过程,以及学会如何在实际编程中有效地运用中断来提高系统的性能和响应能力。
二、实验原理中断是指计算机在执行程序的过程中,当出现某种随机事件或异常情况时,暂停现行程序的执行,转而执行相应的中断处理程序,处理完后再返回原程序继续执行的过程。
中断系统主要由中断源、中断控制器和中断处理程序组成。
中断源可以是外部设备(如键盘、鼠标、打印机等)发送的信号,也可以是内部事件(如定时器溢出、算术运算错误等)产生的条件。
中断控制器负责对多个中断源进行优先级管理和分配,确定哪个中断请求能够被响应。
中断处理程序则是用于处理具体中断事件的一段代码。
在中断处理过程中,计算机需要保存当前程序的上下文(包括程序计数器、寄存器等),以便在中断处理完成后能够正确地恢复原程序的执行。
同时,中断处理程序需要尽快完成处理任务,以减少对系统性能的影响。
三、实验设备与环境本次实验使用的设备包括一台计算机、开发板以及相应的编程软件。
开发板上集成了中断控制器和相关的外部设备接口,以便进行中断实验的操作和观察。
编程软件采用了常见的集成开发环境(IDE),如 Keil、IAR 等,用于编写和调试中断处理程序。
四、实验步骤1、硬件连接首先,将开发板与计算机通过数据线连接,并确保连接稳定。
然后,根据实验要求,将外部设备(如按键、传感器等)正确连接到开发板的相应接口上。
2、软件开发(1)在编程软件中创建一个新的项目,并选择适合开发板的芯片型号。
(2)配置中断控制器的相关参数,如中断优先级、触发方式等。
(3)编写中断处理程序,在程序中实现对中断事件的具体处理逻辑。
例如,当按键被按下时,控制 LED 灯的亮灭;当传感器检测到特定值时,进行数据采集和处理。
(4)编写主程序,在主程序中初始化系统,并开启中断功能。
3、编译与下载完成程序编写后,对代码进行编译,确保没有语法错误和逻辑错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCON
IT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1
IE
EA 1
IP
PX0 1 0 PT0 1 0 1
硬件查询
自 然 优 先 级 中断源 高 级
INT0 T0 INT1 T1 RX TX
中断入口
EX1 1
PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源
硬件查询
自 然 优 先 级 中断源 高 级
INT0 T0 INT1 T1 RX TX
中断入口
EX1 1
PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源
低 级
RI TI
ES 1 ≥1
PS 1 0
中断入口
SCON
1 、( P3.2 )可由 IT0(TCON.0) 选择其为低电平 有效还是下降沿有效。当 CPU 检测到 P3.2 引脚上 出现有效的中断信号时,中断标志 IE0(TCON.1) 置1,向CPU申请中断。
3.1.3 80C51中断的控制
一、中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏 蔽是由中断允许寄存器IE控制的。
EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允许(总允许)位。
R 1K
11
7 4 2 1 10
89C52
DPY a f e g d b c
a b c d e f a f e g d
C2
5 3
P00 P01 P02 P03 P04 P05 P06 P07
P00 P01 P02 P03 P04 P05 P06 P07
1 2 3 4 5 6 7 8
g dp a a b c dp f e g d b c dp DPY 4-L E D
IE
EA 1
IP
PX0 1 0 PT0 1 0 1
硬件查询
自 然 优 先 级 中断源 高 级
INT0 T0 INT1 T1 RX TX
中断入口
EX1 1
PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源
低 级
RI TI
ES 1 ≥1
PS 1 0
中断入口
SCON
3、TF0(TCON.5),片内定时/计数器T0 溢出中断请求标志。当定时/计数器T0发生 溢出时,置位TF0,并向CPU申请中断。
IE
EA 1
IP
PX0 1 0 PT0 1 1
硬件查询
自 然 优 先 级 中断源 高 级
INT0 T0 INT1 T1 RX TX
中断入口
中断入口
SCON
TCON
IT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1
IE
EA 1
IP
PX0 1 0 PT0 1 0 1
b c dp
f e
g d
C4 12
dp RXD T XD AL E PSE N
P20 C0
6
8
9
C3
LED
P21
P22
P23
U1
P10 P11 P12 P13 P14 P15 P16 P17 1 2 3 4 5 6 7 8 13 12 15 14 31 19 18 9 17 16 P10 P11 P12 P13 P14 P15 P16 P17 INT 1 INT 0 T1 T0 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 VCC GND RXD T XD AL E /P PSE N 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 40 20 10 11 30 29
动态显示
动态显示的特点是将所有位数码管的段选线
并联在一起,由位选线控制是哪一位数码管有效。 选亮数码管采用动态扫描显示。所谓动态扫描显
示即轮流向各位数码管送出字形码和相应的位选,
利用发光管的余辉和人眼视觉暂留作用,使人的
感觉好像各位数码管同时都在显示。动态显示的
亮度比静态显示要差一些,所以在选择限流电阻 时应略小于静态显示电路中的。
二、中断请求标志
1、TCON的中断标志
IT0(TCON.0),外部中断0触发方式控制位。 当IT0=0时,为电平触发方式。 当IT0=1时,为边沿触发方式(下降沿有效)。 IE0(TCON.1),外部中断0中断请求标志位。 IT1(TCON.2),外部中断1触发方式控制位。 IE1(TCON.3),外部中断1中断请求标志位。 TF0(TCON.5),定时/计数器T0溢出中断请求标志位。 TF1(TCON.7),定时/计数器T1溢出中断请求标志位。
……
响应
随着计算机技术的应用,人们发现中断技 术不仅解决了快速主机与慢速I/O设备的数据 传送问题,而且还具有如下优点: 分时操作。CPU可以分时为多个I/O设备 服务,提高了计算机的利用率; 实时响应。CPU能够及时处理应用系统的 随机事件,系统的实时性大大增强; 可靠性高。CPU具有处理设备故障及掉电 等突发性事件能力,从而使系统可靠性提高。
16 15 14 13 12 11 10
9
5V U1 P10 P11 P12 P13 P14 P15 P16 P17 INT 1 INT 0 T1 T0 1 2 3 4 5 6 7 8 13 12 15 14 31 19 18 9 RD 1 7 W R 16 P10 P11 P12 P13 P14 P15 P16 P17 INT 1 INT 0 T1 T0 E A/VP X1 X2 RE SE T RD WR P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 VCC GND RXD T XD AL E /P PSE N 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 40 20 10 11 30 29 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27
K0
P10
K4
0 4 8 C
P14
K1
1 5 9 D
P15
K2
2 6 A E
P16
K3
3 7 B F
P17
K5
K6
K7
P11 P12 P13
K8
K9
K10
K11
89C52
E A/VP X1 X2 RE SE T RD WR
K12
K13
K14
K15
中断系统
3.1 80C51的中断系统 3.1.1 80C51的中断系统结构 一、中断的概念 CPU在处理某一事件A时,发生了另一事件 B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B (中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事 件A被中断的地方继续处理事件A(中断返 回),这一过程称为中断 。
第三讲
数码管是如何显示出字符的 数码管静态显示与动态显示原理 中断概念 单片机的定时器应用
显示器及其接口
单片机系统中常用的显示器有:
发光二极管LED(Light Emitting Diode)显示器、
液晶LCD(Liquid Crystal Display)显示器、CRT显示器
等。LED、LCD显示器有两种显示结构:段显示(7 段、米字型等)和点阵显示(5×8、8×8点阵等)。
MCS-51单片机的中断系统结构
主程序 中断响应
中断请求
执行主 程序
断点 继续执行 主程序 执行 中断 处理 程序
中断返回
主程序A
断点
返回
RETI 中断服务程序B
引起CPU中断的根源,称为中断源。中断源向CPU提出 的中断请求。CPU暂时中断原来的事务A,转去处理事件B。 对事件B处理完毕后,再回到原来被中断的地方(即断点), 称为中断返回。实现上述中断功能的部件称为中断系统(中 断机构)。
低 级
RI TI
ES 1 ≥1
PS 1 0
中断入口
SCON
4、TF1(TCON.7),片内定时/计数器T1 溢出中断请求标志。当定时/计数器T1发生 溢出时,置位TF1,并向CPU申请中断。
TCON
IT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1
g f GND a b a a f e d g b c dp b c d e f g dp a b c d e f g dp
+5V
·
e d GND c dp
(a)
共阴极
(b)
共阳极
使用LED显示器时,要注意区分这两种不同的接法。为了显 示数字或字符,必须对数字或字符进行编码。七段数码管加上一 个小数点,共计8段。因此为LED显示器提供的编码正好是一个字 节。TX实验板用共阴LED显示器,根据电路连接图显示16进制数
80C51中断系统的结构
80C51的中断系统有5个中断源(8052有 6 个) ,2个优先级,可实现二级中断嵌套 。
TCON
IT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 0 RI TI ES 1 ≥1 PS 1 0 0 PT1 1 0 自 然 优 先 级 中断源 低 级 0 EX1 1 PX1 1 EX0 1