0基础 | Proteus | 中断 | 点阵

中断

|-----------|---|---|----------------------------------------------------------------------------|
| 一 中 断 简 介 | 中断概念 指的是由于内部或外部的某种原因, CPU 暂时中止其正在执行的程序 转去执行请求中断的那个外设或事件的服务子程序 等处理完毕后再返回执行原来中止的程序 || |
| 中断允许控制 || ||
| EA: 中断允许总控位 || EA=0, 屏蔽所有的中断请求; EA=1, 开放中断 ||
| 1 :开放 0 :屏蔽 || ET2 :定时器 / 计数器 T2 的溢出中断允许位 ||
| 1 :开放 0 :屏蔽 || ES :串行口中断允许位 ||
| 1 :开放 0 :屏蔽 || ET1 :定时器 / 计数器 T1 的溢出中断允许位 ||
| 1 :开放 0 :屏蔽 || EX1 :外部中断 INT1 的中断允许位 ||
| 1 :开放 0 :屏蔽 || ET0 :定时器 / 计数器 T0 的溢出中断允许位 ||
| 1 :开放 0 :屏蔽 || EX0 :外部中断 INT0 的中断允许位 ||
| 优先权控制 || ||

|---------------------------------------------|-----------------------------------------------------|
| ### PT2: 定时器 / 计数器 T2 的中断优先级控制位 , 只用于 52 子系列 ||
| 1, 高优先级 0, 低优先级 | PS: 串行口的中断优先级控制位 |
| 1, 高优先级 0, 低优先级 | PT1: 定时器 / 计数器 T1 的中断优先级控制位 |
| 1, 高优先级 0, 低优先级 | PX1: 外部中断 INT1 的中断优先级控制位 |
| 1, 高优先级 0, 低优先级 | PTO: 定时器 / 计数器 T0 的中断优先级控制位 |
| 1, 高优先级 0, 低优先级 | PXO: 外部中断 INTO 的中断优先级控制位 |

|------------|---------------------|
| 中断源 | 优先级顺序 |
| 外部中断0 | 最高 最低 |
| 定时/计数器T0中断 | 最高 最低 |
| 外部中断1 | 最高 最低 |
| 定时/计数器T1中断 | 最高 最低 |
| 串行口中断 | 最高 最低 |
| 定时/计数器T2中断 | 最高 最低 |

各中断服务程序的入口编号

|----------------------------|----------|
| 中断源 | 入口编号 |
| 外部中断 0(P3.2) | 0 |
| 定时 / 计数器 0 | 1 |
| 外部中断 1(P3.3) | 2 |
| 定时 / 计数器 1 | 3 |
| 串行口 | 4 |

|---------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| 外部中断 | 外部引脚P3.2和P3.3输入, 有两种触发方式:电平触发跳变 ( 边沿 ) 触发 由特殊功能寄存器TCON来管理. |
| ||
| ITO(IT1): 外部中断 0( 1) 触发方式控制位 | IT0( IT1) 被设置为 0 :电平触发方式 ; IT0( IT1) 被设置为 1 边沿触发方式 |
| IEO(IE1): 外部中断 0( 1) 的中断请求标志位。 ||
| 中断电路仿真(每按键按一次,数码管+1) ||

点阵的应用

|----------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 点阵实物图 | 点阵内部原理图 |
| 0-9的点阵数值: unsigned char code tab[]={ };(高电平有效) | 0x00,0x7E,oxFF,0xC3,0xC3,0xFF,0x7E,0x00, //0 0x00,0x00,0x43,0xFF,0xFF,0x03,0x00,0x00, //1 0x00,0x63,0xC7,0xCF,0xDB,0xF3,0x63,0x00, //2 0x00,0x42,0xDB,0xDB,0xDB,0xFF,0x66,0x00, //3 0x00,0x3E,0x46,0xFF,0xFF,0x06,0x06,0x00, //4 0x00,0xF6,0xF7,0xD3,0xD3,0xDF,0xDE,0x00, //5 0x00,0x7E,0xFF,0xDB,0xDB,0xDF,0x4E,0x00, //6 0x00,0xC0,0xC0,0xC7,0xFF,0xF8,0xC0,0x00, //7 0x00,0xFF,0xFF,0xDB,0xDB,0xFF,0xFF,0x00, //8 0x00,0x72,0xFB,0xDB,0xDB,0xFF,0x7E,0x00, //9 |
| 8X8LED 点阵显示数字 电路仿真 时钟电路:由 12M 晶振(X1)和两个 22pF 电容(C1、C2)构成,为单片机提供工作时钟。 复位电路:10k 电阻(R1)和 10μF 电容(C3)组成上电复位电路,确保单片机初始化。 总线驱动:P0 口通过排阻(RP1)连接到 74LS245(U2),74LS245 用于增强驱动能力,其 \(\overline{CE}\) 接地、\(AB/ \overline{BA}\) 接地,使数据从 A 端流向 B 端。 点阵模块:74LS245 输出连接到 LED 点阵,P3.0 - P3.7(标为 C0 - C7)也连接到点阵,共同实现对点阵的控制。 该电路通过 AT89C51 单片机,借助 74LS245 驱动 LED 点阵,晶振与复位电路保障单片机正常运行。 ||

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ### 8X8LED点阵显示数字1 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int uchar code Table_of_Digits[]={上面}; uchar i=0,t=0,Num_Index; //主程序 void main() { P3=0x80; Num_Index=0; //从0 开始显示 TMOD=0x00; //T0 方式0 TH0=(8192-2000)/32; //2ms 定时 TL0=(8192-2000)%32; IE=0x82; TR0=1; //启动T0 while(1); } //T0 中断函数 void LED_Screen_Display() interrupt 1 { TH0=(8192-2000)/32; //恢复初值 TL0=(8192-2000)%32; P0=0xff; //输出位码和段码 P0=~Table_of_Digits[Num_Index*8+i]; P3=crol(P3,1); if(++i==8) i=0; //每屏一个数字由8 个字节构成 if(++t==250) //每个数字刷新显示一段时间 { t=0; if(++Num_Index==10) Num_Index=0; //显示下一个数字 } } |

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ### 8X8LED点阵显示数字2 说明:每次按下K1 时,会使8X8LED点阵屏循环显示不同图形。 本例同时使用外部中断和定时中断。 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //待显示图形编码 uchar code M[][8]= {{0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00}, //图1 {0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00}, //图2 {0x00,0x20,0x30,0x38,0x3c,0x3e,0x00,0x00} //图3}; uchar i,j; //主程序 void main() {P0=0xff; P1=0xff; TMOD=0x01; //T0 方式1 TH0=(65536-2000)/256; //2ms 定时 TL0=(65536-2000)%256; IT0=1; //下降沿触发 IE=0x83; //允许定时器0、外部0 中断 i=0xff; //i的初值设为0xff,加1 后将从0 开始 while(1);} //T0 中断控制点阵屏显示 void Show_Dot_Matrix() interrupt 1 {TH0=(65536-2000)/256; //恢复初值 TL0=(65536-2000)%256; P0=0xff; //输出位码和段码 P0=~M[i][j]; P1=crol(P1,1); j=(j+1)%8;} //INT0 中断(定时器由键盘中断启动) void Key_Down() interrupt 0 {P0=0xff; P1=0x80; j=0; i=(i+1)%3; //i在0,1,2 中取值,因为只要3 个图形 TR0=1;} |

|-------------------------------------------------------------------------------------------------|
| 按键控制8X8LED点阵屏显示图形 |

相关推荐
xduryan3 小时前
16.1 - VDMA视频转发实验之TPG
嵌入式硬件
逼子格6 小时前
硬件工程师笔记——二极管Multisim电路仿真实验汇总
笔记·嵌入式硬件·硬件工程师·multisim·硬件工程师学习·电子器件·电路图
「QT(C++)开发工程师」6 小时前
STM32 | FreeRTOS 递归信号量
python·stm32·嵌入式硬件
芯眼7 小时前
ALIENTEK精英STM32F103开发板 实验0测试程序详解
开发语言·c++·stm32·单片机·嵌入式硬件·社交电子
百里东风7 小时前
STM32IIC协议基础及Cube配置
stm32·单片机·嵌入式硬件
2301_800399728 小时前
stm32 DMA
stm32·单片机·嵌入式硬件
一只川页12 小时前
arduino平台读取鼠标光电传感器
驱动开发·单片机·嵌入式硬件·计算机外设
爱学习的张哥15 小时前
UDP--DDR--SFP,FPGA实现之模块梳理及AXI读写DDR读写上板测试
单片机·fpga开发·udp·axi·ddr
一月千帆15 小时前
51单片机课设基于GM65模块的二维码加条形码识别
单片机·嵌入式硬件·51单片机
O。o.尊都假都16 小时前
STM32就业前景和下载KEIL软件(保姆级)
stm32·单片机·嵌入式硬件