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_DigitsNum_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=~Mij; 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点阵屏显示图形 |

相关推荐
清风6666667 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
azwsm9 小时前
电路元器件和GPIO控制器
单片机·嵌入式硬件
kebidaixu12 小时前
FreeRTOS 移植到 STM32F407VETX 记录(一)
stm32·单片机·嵌入式硬件
CSDN官方博客12 小时前
「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令
嵌入式硬件·物联网·embedding
点灯小铭13 小时前
基于单片机的数码管定时插座设计与定时开关功能实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
云栖梦泽13 小时前
玩转RK3506SDK
linux·嵌入式硬件
数智工坊15 小时前
机器人四大主控板系统分层选型指南:树莓派、ESP32、STM32与Arduino的能力边界与实战定位
stm32·嵌入式硬件·机器人
进击的小头16 小时前
第8篇:IGBT 从零到精通:核心原理、关键参数、选型指南与工业级应用要点
经验分享·嵌入式硬件·学习
点灯小铭16 小时前
基于单片机的多模式智能洗衣机设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
项目題供诗16 小时前
STM32-AD单通道&AD多通道(十九)
stm32·单片机·嵌入式硬件