单片机——独立按键
来源:互联网 发布:英雄联盟登录网络异常 编辑:程序博客网 时间:2024/06/09 22:48
该程序实现的功能是按一下按键蜂鸣器发出响声并且数码管上显示的数字加一,当加到100之后重新从0开始计数
#include <reg52.h>
#include "./delay/delay.h"
#include "./delay/delay.h"
#define SEGPORT P0
unsigned char bitdata[2] = {0xfe,0xfd};
unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char disdata[2] = {0x3f,0x3f};
unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char disdata[2] = {0x3f,0x3f};
sbit key1 = P1^0;
sbit seg_sel = P2^1;
sbit bit_sel = P2^0;
sbit seg_sel = P2^1;
sbit bit_sel = P2^0;
sbit beep = P2^7;
void display()
{
static unsigned char i = 0;
SEGPORT = 0x0;
seg_sel = 1;
seg_sel = 0;
SEGPORT = 0xff;
bit_sel = 1;
bit_sel = 0;
SEGPORT = disdata[i];
seg_sel = 1;
seg_sel = 0;
SEGPORT = bitdata[i];
bit_sel = 1;
bit_sel = 0;
i++;
if(i == 2)
{
i = 0;
}
}
{
static unsigned char i = 0;
SEGPORT = 0x0;
seg_sel = 1;
seg_sel = 0;
SEGPORT = 0xff;
bit_sel = 1;
bit_sel = 0;
SEGPORT = disdata[i];
seg_sel = 1;
seg_sel = 0;
SEGPORT = bitdata[i];
bit_sel = 1;
bit_sel = 0;
i++;
if(i == 2)
{
i = 0;
}
}
void timer0_init(void)
{
EA = 1;
TH0 = (65536 - 2000)/256;
TL0 = (65536 - 2000)%256;
TMOD |= 0x01;
TR0 = 1;
ET0 = 1;
}
{
EA = 1;
TH0 = (65536 - 2000)/256;
TL0 = (65536 - 2000)%256;
TMOD |= 0x01;
TR0 = 1;
ET0 = 1;
}
void timer0_isr(void) interrupt 1
{
TH0 = (65536 - 2000)/256;
TL0 = (65536 - 2000)%256;
display();
}
{
TH0 = (65536 - 2000)/256;
TL0 = (65536 - 2000)%256;
display();
}
void timer1_init(void)
{
EA = 1;
TH1 = (65536 - 5000)/256;
TL1 = (65536 - 5000)%256;
TMOD |= 0x01;
TR1 = 1;
ET1 = 1;
}
{
EA = 1;
TH1 = (65536 - 5000)/256;
TL1 = (65536 - 5000)%256;
TMOD |= 0x01;
TR1 = 1;
ET1 = 1;
}
void timer1_isr(void) interrupt 3
{
TH1 = (65536 - 5000)/256;
TL1 = (65536 - 5000)%256;
beep = ~beep;
}
{
TH1 = (65536 - 5000)/256;
TL1 = (65536 - 5000)%256;
beep = ~beep;
}
void main()
{
static unsigned char i = 0;
timer0_init();
while(1)
{
if(key1 == 0)
{
delay_ms(10);
if(0 == key1)
{
while(!key1);
delay_ms(10);
while(!key1);
timer1_init();
i++;
if(i == 100)
{
i = 0;
}
}
}
timer1_init();
disdata[0] = segdata[i/10];
disdata[1] = segdata[i%10];
{
static unsigned char i = 0;
timer0_init();
while(1)
{
if(key1 == 0)
{
delay_ms(10);
if(0 == key1)
{
while(!key1);
delay_ms(10);
while(!key1);
timer1_init();
i++;
if(i == 100)
{
i = 0;
}
}
}
timer1_init();
disdata[0] = segdata[i/10];
disdata[1] = segdata[i%10];
}
}
}
0 0
- 单片机——独立按键
- 51单片机—独立按键
- 单片机学习记录——LED与独立按键
- 单片机开发——独立按键的扫描
- 单片机独立按键
- 单片机独立按键
- 单片机独立按键
- 单片机控制独立按键读入
- 【C51】单片机独立按键与矩阵按键
- 51单片机外设之——独立按键的检测(传统法一)
- 51单片机外设之——独立按键的检测(传统法一)
- 单片机——按键扫描
- 51单片机STC89C52 独立按键检测
- 8.5 单片机独立按键的扫描
- 关于独立按键与矩阵按键的程序(51单片机)
- 51单片机独立按键抖动演示及软件消抖
- 51单片机STC89C52 4个独立按键的检测
- 【51单片机学习过程记录】3独立按键
- 数据结构实验之栈三:后缀式求值
- jQuery 简单实现select二级联动
- UVALive6834->贪心
- FPGA Verilog HDL格雷码的产生
- Redis Go语言客户端指南
- 单片机——独立按键
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- Eclipse编辑jsp、html的preview、Design/Source视图出错
- POJ 1141 Brackets Sequence+区间DP+想办法输出来
- stm32官方库数据格式定义 uint16_t
- ScrollView和HorizontalScrollView控件
- 小学生算数题
- SpringMVC-1 helloworld
- xss攻击入门