蓝桥杯单片机——锁存器、数码管、定时器的基本操作

news/2024/10/18 22:30:10/

锁存器

蓝桥杯的锁存器可以直接背,这里就不再赘述

数码管的基本原理

共阳数码管:将所有发光二极管的阳极接到一起形成公共阳极的数码管,且公共极接VCC
共阴数码管:将所有发光二极管的阴极接到一起形成公共阴极的数码管,且公共极接GND
简单来说,共阳数码管低电平点亮,共阴数码管高电平点亮


蓝桥杯开发板上使用的是共阳数码管。例如,将第一个数码管的位置点亮,并显示位数字0,则需要给P0口赋值的16进制位0xc0(~0x3f)

dp g f e d c b a 1 1 0 0 0 0 0 0 

使用STC-ISP辅助写共阴数码管的段码和位码

// 前面记得定义类型 
typedef unsigned char u8; 
typedef unsigned int u16; /*************  本地常量声明    **************/ 
u8 code t_display[]={                       //标准字库 
//   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71, 
//black  -     H    J    K    L    N    o   P    U     t    G    Q    r   M    y 0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e, 0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};    //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1 u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};      //位码 使用延时函数显示静态数码管 
只需要在main函数的while(1)当中调用如下函数,注意x需要定义在全局变量的位置 
u8 x; 
void SmgUseDelay() 
{ P2=0xc0;P0=0x00;P2=0x00; P2=0xe0;P0=~t_display[x];P2=0x00; P2=0xc0;P0=T_COM[x];P2=0x00; x++; if (x == 8) x = 0 ; Delay2ms(); 
} 

定时器的基本原理

使用STC-ISP生成定时器

 void Timer0Init(void)                //100微秒@11.0592MHz 
{ AUXR |= 0x80;                //定时器时钟1T模式 TMOD &= 0xF0;                //设置定时器模式 TL0 = 0xAE;                //设置定时初值 TH0 = 0xFB;                //设置定时初值 TF0 = 0;                //清除TF0标志 TR0 = 1;                //定时器0开始计时 // 下面需要自己加上 ET0 = 1;    // 打开定时器0中断 EA = 1;    // 打开总中断 
} 

定时器方法显示静态数码管

静态变量(static )属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束。
全局变量全都是静态变量,局部变量加上关键字static后才是静态变量。
如下为定时器0的中断服务函数,当定时器0触发后,CPU会执行中断服务函数下面的程序

void timer0() interrupt 1 using 1        //中断号 和 寄存器 
{ static int smg_cnt = 0, i = 0; smg_cnt ++ ; if (smg_cnt == 2) { smg_cnt = 0; P2=0xc0;P0=0x00;P2=0x00; P2=0xe0;P0=~t_display[i];P2=0x00; P2=0xc0;P0=T_COM[i];P2=0x00; i++; if (i == 8) i = 0 ; } 
} 外部中断 
外部中断无法用STC-ISP生成,需要手动配置。当然不会配置的同学也可以参考STC-ISP软件中的范例程序。 

外部中断配置的函数如下,同时初始化外部中断0和外部中断1

void Int_init(void) 
{ IT0 = 1;//配置成下降沿触发 EX0 = 1;//配置外中断0使能 IT1 = 1;//配置成下降沿触发 EX1 = 1;//配置外中断1使能 EA = 1;//打开总中断 } 

外部中断0的上升沿和下降沿标志位是INT0,可以通过改变P32口的电平来触发,蓝桥杯板子上P32口连接按键S5.


http://www.ppmy.cn/news/519699.html

相关文章

51单片机(三)数码管(超详细、必会!)

数码管详细总结 一、数码管电路1、单个数码管2、多个数码管3、数码管与芯片的连接3.1 为什么要使用锁存器?3.2 锁存器的电路连接 二、数码管显示数字时芯片引脚的状态值三、数码管实现动态显示1、一个数码管从0到F动态显示2、多个数码管从0到F动态显示3、一个经典例…

51单片机学习篇-- --静态数码管的显示(74HC138译码器,74HC245锁存器,74HC573锁存器)

开篇先说一句废话 本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛! 数码管的介绍 啥是个数码管呢?先来看一些数码管的照片。 其实数码管就是通过点亮里面的发光二极管来发…

单片机——C51实验含Proteus仿真(锁存器,流水灯,继电器,数码管静态显示,蜂鸣器)

文章仅为本人学习记录&#xff0c;如有引用部分会另加说明引用出处 代码部分 #include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned charsbit LED_LEP2^0; //LED锁存器控制端 sbit FMP2^1; //蜂鸣器控制端 sbit RLP2^2; /…

51单片机小白零基础教程——数码管的静态显示,以及数码管拓展程序(含74HC573锁存器的介绍)

数码管的静态显示 一、数码管的显示原理二、74HC573锁存器工作原理2.1 原理图分析2.2 真值表 三、74HC573锁存器在数码管中的应用四、实际静态数码管程序的设计 一、数码管的显示原理 数码管&#xff1a;是一种可以显示数字和其他信息的电子设备&#xff0c;可以看成是多个二极…

bios常见中英文对照

Time/System Time 时间/系统时间 Date/System Date 日期/系统日期 Level 2 Cache 二级缓存 System Memory 系统内存 Video Controller 视频控制器 Panel Type 液晶屏型号 Audio Controller 音频控制器 Modem Controller 调制解调器&#xff08;Modem) Primary Hard Drive 主硬盘…

【2023】Redis常用命令

目录 1.键操作命令1.1.判断键是否存在1.2.用keys命令查找键1.3.用scan命令查找键1.4.重命名键1.5.删除键1.5.关于键存活时间命令 2.HyperLogLog相关命令2.1.用pfadd添加键2.2.用pfcount统计基数值2.3.用pfmerge进行合并操作2.4.统计网站访问人数 3.排序相关命令3.1.用sort命令进…

Prompt Engineering 面面观

作者&#xff1a;紫气东来 项目地址&#xff1a;https://zhuanlan.zhihu.com/p/632369186 一、概述 提示工程&#xff08;Prompt Engineering&#xff09;&#xff0c;也称为 In-Context Prompting&#xff0c;是指在不更新模型权重的情况下如何与 LLM 交互以引导其行为以获得…

BIOS问答

BIOS问答 Q&#xff1a;什么是BIOS ? A&#xff1a;BIOS&#xff08;Basic Input&#xff0f;Output System&#xff09;即基本输入输出系统&#xff0c;通常是固化在只读存储器&#xff08;ROM&#xff09;中&#xff0c;所以又称为ROM&#xff0d;BIOS。它直接对计算机系统…