视频教程:https://www.bilibili.com/video/BV1m741187ga
什么是网红按钮?
51内核单片机定时器的计算(以12M晶振为例); 晶振 12MHz =12000000Hz 时钟周期 1/12000000 s(晶振的倒数) 机器周期是12/12000000 s (标准框架下51单片机一个机器是12个时钟周期) 因为定时器是每个机器周期加1所以定时时间为 N*时钟机器周期时间=所定时间T 所以要经过的机器周期是N*(12/12000000 s)=T N=t/(12/12000000 ) 初值等于 65536-N(因为16位的定时器65535再加1才溢出) 例如: 需要定时1ms=0.001s =时间(s)*(晶振/12) 0.001/(12/12000000 )=0.001*(12000000 /12)=0.001*1000000=1000 初值y=65536-1000=64536=0XFC18
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define SEG P0
sbit SCAN1 = P2^0;
sbit SCAN2 = P2^1;
sbit SCAN3 = P2^2;
sbit SCAN4 = P2^3;
sbit key = P3^0;
sbit Bepp = P3^7;
uchar number;
uchar flag;
uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int display=0;//数码管刷新
int The_Time;//显示时间 单位10ms
int dis_value;//计数频率 10ms
void delay(uint j) //1ms
{
uchar i=250;
for(;j>0;j--)
{
while(--i);
i=249;
while(--i);
i=250;
}
}
void Key_Scan()
{
if(key==0)
{
delay(20);
if(key==0)
{
while(key==0);
if(flag==0)
{
flag=1;
The_Time = 0;
}else
{
flag=0;
}
}
}
}
void Key_INT( ) interrupt 0 // 这里0对应下表
{
Bepp = ~ Bepp;
if(flag==0)
{
flag=1;
The_Time = 0;
}else
{
flag=0;
}
}
void main()
{
TMOD |= 0x01; //开启定时器0 0x10时使用定时器1 0x11时启动两个
TH0=0XFC; //给定时器赋初值,定时1ms TH1
TL0=0X18; //TL1
EA=1; //总中断打开
ET0=1; //定时器0中断打开 ET1
TR0=1; //定时器0开关打开 TR1
EX0=1; //外部中断0开() EX1 为外部中断1 (P3^3)
IT0=1; //低电平触发 IT1为中断1
while(1)
{
}
}
void Timer0() interrupt 1 //参考上图 定时器1时为3
{
static uint i; //定义一个自变形变量
TH0=0XFC; //给定时器赋初值,定时1ms TH1
TL0=0X18; //TL1
i++;
dis_value++;
if(i==2)
{
i=0;
SEG = 0XFF;
switch(number)
{
case 0:SCAN4=1;SCAN3=0;SCAN2=0;SCAN1=0;SEG=distab[The_Time%10];break;
case 1:SCAN4=0;SCAN3=1;SCAN2=0;SCAN1=0;;SEG=distab[The_Time/10%10];break;
case 2:SCAN4=0;SCAN3=0;SCAN2=1;SCAN1=0;SEG=distab[The_Time/100%10]& 0x7f;break;
case 3:SCAN4=0;SCAN3=0;SCAN2=0;SCAN1=1;;SEG=distab[The_Time/1000];break;
default:break;
}
number++;
if(number>3)number=0;
}
if(dis_value==10)
{
dis_value = 0;
if(The_Time< 9999 && flag == 1)
{
The_Time++;
}
}
}
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6001文章
43978浏览量
620871 -
定时器
+关注
关注
23文章
3148浏览量
112046 -
按钮
+关注
关注
0文章
129浏览量
12493 -
Protues
+关注
关注
39文章
183浏览量
69990
发布评论请先 登录
相关推荐
论坛组织FPGA讲座,看看你希望讲那些方面的内容
应用及解决方案FPGA的设计流程与开发方法第二讲:Verilog基本语法与设计方法Verilog系统设计原则与技巧Verilog进行典型电路的设计第三讲:Modelsim/Questa Sim
发表于 04-07 22:56
FPGA入门公益学习班第2讲精彩回播
/jishu_330342_1_1.html -------------------------------------------------------------------------------------------------------------------------------------第三讲
发表于 04-23 11:12
阿毛FPGA入门公益学习班全程四讲精彩回放
://webinar.elecfans.com/video_52.html第三讲课前视频:https://bbs.elecfans.com/forum.php?mod=viewthread&tid
发表于 06-05 14:46
转:STM32最小系统边讲边写视频教程
[img][/img]基础篇--刘洋老师边讲边写STM32视频教程 第三讲 STM32最小系统可到网盘下载:http://yun.baidu.com/s/1eRYzAEI
发表于 06-08 17:22
【开源骚客】《轻松设计SDRAM控制器》第三讲—串口发送模块设计及收发整合
相信很多朋友在学习完第二讲中所讲到的串口接收模块后,一定非常想学习如何设计串口的发送模块,Kevin也非常明白大家的好学之心,所以在第三讲,Kevin会带着大家一起来完成串口发送模块的设计,并且会
发表于 05-08 22:18
Harmony OS物联网应用开发实战(基于HiSpark WiFi IoT套件)第三讲 课程资料
本帖最后由 xusiwei1236 于 2020-11-20 14:24 编辑
Harmony OS物联网应用开发实战(基于HiSpark WiFi IoT套件)第三讲 课程资料全套课程资料
发表于 09-29 10:47
Harmony OS物联网应用开发实战(基于HiSpark WiFi IoT套件)第三讲 课程资料
本帖最后由 xusiwei1236 于 2020-11-20 14:23 编辑
Harmony OS物联网应用开发实战(基于HiSpark WiFi IoT套件)第三讲 课程资料全套课程资料
发表于 11-20 14:21
Altium实训班——声源跟踪小车设计挑战赛
放大电路的设计10月29日 19:30(周六)——陈俊祥第三讲:红外避障电路及电源电路的设计11月01日 19:30(周二)——郑振宇第四讲:4层声控寻迹小车PCB项目分析、流程、导入及PCB布局11月
发表于 09-21 10:43
第三十三讲 PLD器件的应用
第三十三讲 PLD器件的应用
10.4 PLD器件的应用10.4.1 可编程器件的开发系统10.4.2 ABEL硬件描述语言一、ABEL源文件的结构二、AB
发表于 03-30 16:38
•943次阅读
评论