0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Protues教程第三讲:“挑战10秒”网红按钮的实现

Harmony&嵌入式学习 来源:Harmony&嵌入式学习 作者:Harmony&嵌入式学 2023-06-14 11:17 次阅读

视频教程:https://www.bilibili.com/video/BV1m741187ga

什么是网红按钮?

pYYBAGSJMO6AOPRTAARdFROKrW4294.pngpoYBAGSJMRWAFhEAAAIOL5UgjC0146.png

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

poYBAGSJMSqAIHjMAAMBh4qI3HE841.pngpYYBAGSJMTWATBWYAAKKB9LQbVQ434.pngpYYBAGSJMUKAXTi6AANnBsT9DdE242.png
#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

    特权FPGA技术公开课第三讲PPT下载

    特权FPGA技术公开课第三讲PPT下载
    发表于 07-05 19:32

    下载完第三方软件库后怎么让protues识别???跪求大神们...

    下载完第三方软件库后怎么让protues识别???
    发表于 12-11 18:15

    转: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

    第三讲 逻辑代数的基本定律和规则

    第三讲 逻辑代数的基本定律和规则 2.3.1 逻辑代数的基本公式一、逻辑常量运算公式二、逻辑变量、常量运算公式
    发表于 03-30 16:02 5173次阅读
    <b class='flag-5'>第三讲</b> 逻辑代数的基本定律和规则

    第三十三讲 PLD器件的应用

    第三十三讲 PLD器件的应用 10.4 PLD器件的应用10.4.1 可编程器件的开发系统10.4.2 ABEL硬件描述语言一、ABEL源文件的结构二、AB
    发表于 03-30 16:38 943次阅读
    <b class='flag-5'>第三十三讲</b> PLD器件的应用

    高压示波器通俗讲座_第三讲_方波电路

    高压示波器通俗讲座_ 第三讲_ 方波电路。
    发表于 05-05 10:10 0次下载

    matlab的经典课件-第三讲

    算法学习的资料matlab的经典课件-第三讲
    发表于 09-01 14:55 0次下载

    STC15单片机实战项目软件开发第三讲 - 按键检测(外部中断)

    STC15单片机实战项目软件开发第三讲 - 按键检测(外部中断)
    发表于 11-22 15:06 16次下载
    STC15单片机实战项目软件开发<b class='flag-5'>第三讲</b> - 按键检测(外部中断)