按下独立按键k1数码管左移,按下独立按键k2数码管数值加1。
typedef unsigned char u8;
u8 code smgwei[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit key1=P3^1;
sbit key2=P3^0;
u8 wei,shu;
void delay(u16 i)
{
while(i--);
}
void button()
{
if(key1==0)
{
delay(1000);
if(key1==0)
{
wei++;
if(wei>=8)
{
wei=0;
}
while(!key1);
}
}
if(key2==0)
{
delay(1000);
if(key2==0)
{
shu++;
if(shu>=10)
{
shu=0;
}
while(!key2);
}
}
}
void main()
{
while(1)
{
button();
P0=smgduan[shu];
P2=smgwei[wei];
}
}
关键字:51单片机 独立按键
引用地址:
51单片机 独立按键k1控制数码管移位 k2控制数值加
推荐阅读最新更新时间:2024-11-09 10:14
51单片机(STC89C52)的多路PWM脉冲宽度调制输出
软件方式输出PWM PWM用于输出强度的控制, 例如灯的亮度, 轮子速度等, STC89/90系列没有硬件PWM, 需要使用代码模拟 使用纯循环的方式实现PWM 非中断的实现(SDCC环境编译) #include 8052.h #define Led10 P0_7 typedef unsigned int u16; int atime = 64; // 仅作为延时, pms取值区间为 0 - 64 void delay(u16 pms) { u16 x, y; for (x=pms; x 0; x--) { for (y=11; y 0; y--); } } // 这里控制占空比, i取值区间为
[单片机]
基于GSM模块Q2403A和8051单片机实现短消息收发系统的应用方案
基于GSM短消息的业务不需要建立拨号连接,只需把待发的消息加上目的地址发送至短消息中心,再由短消息中心转发到最终目标。GSM 短消息业务以其连接简单、费用低廉、覆盖范围广、实现方便等优点得到了广泛的应用。运用 GSM 短消息实现远程测控的可靠性较高、信号传播距离远、覆盖面积广,并且可以节省建网初期的巨额投资。 本文对基于GSM短消息收发系统的设计与实现作了具体描述,给出了系统的软硬件设计方案,对主要硬件,即GSM模块Q2403A 和8051单片机作了重点介绍。给出了系统的软件设计,包括PC与单片机通信部分和短消息收发部分。最后实现系统监控功能。 系统硬件实现 总体系统结构 该系统硬件主要由8051单片机扩展电路、Q2403
[单片机]
51单片机定时器TMOD与TCON、SCON
51单片机中断级别 中断源 默认中断级别 序号(C语言用) INT0---外部中断0 最高 0 T0 ---定时器/计数器0中断 第2 1 INT1---外部中断1 第3 2 T1 ----定时器/计数器1中断 第4 3 TX/RX---串行口中断 第5 4 T2 ---定时器/计数器2中断 最低 5 ———————————————— 定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。 D0~D3为
[单片机]
51单片机STC89C52矩阵键盘之扫描法检测
程序源码 /*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------数据类型定义区域-----------------------*/ typedef unsigned char u8; //定义类型unsigned char别名为u8 typedef unsigned int u16; //定义类型unsigned int别名为u16 /*-----------------------用户自定义数据区域---------------------*/
[单片机]
51单片机学习笔记———3.LED点亮的几种不同方式(数组形式)及其按键检测,延时消抖
四个小灯循环闪烁程序(未优化版本): /* * @Author: 王云龙 * @Date: 2020-02-23 12:48:51 * @Last Modified by: 王云龙 * @Last Modified time: 2020-02-23 12:48:51 */ #include #define LED P0; void delay(unsigned int n);//n的取值范围是0~65535 void main()//四个小灯循环闪烁 { while(1) { LED = 0xEF;//二进制:11101111 delay(1000); LED = 0xDF;//二进制
[单片机]
51单片机汇编语言:利用 RET 指令实现多路分支
有这样一个问题: ----------------------------- 已知程序执行前有 A = 02H,SP = 52H,(51H) = FFH,(52H) = FFH。 执行下列程序: POP DPH POP DPL MOV DPTR, #4000H RL A MOV B, A MOVC A, @A + DPTR PUSH A MOV A, B INC A MOVC A, @A + DPTR PUSH A RET ORG 4000H DB 10H, 80H, 30H, 50H, 30H,
[单片机]
C51单片机的IO口介绍(下)
上一篇文章我们对C51的IO简单的介绍了一下,现在我们来简单了解C51的IO的结构 这里我们学习一下比较常见的单片机的IO模式,分别是准双向,开漏输出和推挽输出 (这里要提一嘴,我们用的STC88C52RC是没有推挽输出功能的,STC公司后续推出的一些机型才有推挽输出功能) 接下来我们来看看这几种模式 1.准双向 看看下面的原理图,机内信号通过一个非门取反后送入一个MOS管,MOS管负责控制这个IO的高低电平,配合内部上拉电阻完成高低电平的输出 为了方便我们分析,我们把这个MOS管看成一只NPN三极管。区别是三极管靠电流导通,MOS管靠电压导通 结合前面我们讲过的知识,对于一只NPN三极管,基极b电压比集电极c电压
[单片机]
解析8051单片机的三种数据传输方式
单片机CPU与外部设备交换信息通常有如下几种方式:无条件传送方式,查询传送方式和中断传送方式。我们以单片机与微型打印机接口为例讲述这三种方式。假定用户要打印三个数据,这三个数据保存在单片机的内部数据存储器10H,11H,和12H中,8051用并口P2与微型打印机的并行数据口DB进行数据交换。 (1)无条件传送方式 这种数据传送方式中没有联络信号,即CPU总是认为打印机在如何时候都是处于“准备好”的状态。这种传送方式中只需要在程序中加入数据送往P2的指令,数据传送便可以实现。但这种数据传送方式有一个致命弱点,数据易丢失,这是因为CPU的速度相当快,而打印机的速度相对来说较慢,其结果是在打印机打印一个数据的时间内,CPU已送来了多
[单片机]