按键+数码管

key.c

#include "key.h"	 //把led.h文件包含进来
#include "system.h"	   //把timer0.h文件包含进来
#include "smg.h"extern  uint num;
char key_value;  //有按键按下
char key_shourtflag;//没有按键按下uint KeyScan ()		//按键扫描函数
{static	uint timer=0;char key_temp=0;if(k1==0){key_temp|=0x01;}if(k2==0){key_temp|=0x02;}if(k3==0){key_temp|=0x04;}if(k4==0){key_temp|=0x08;}if(key_temp!=0){timer++;	  if(timer==20){key_value=key_temp;key_shourtflag=1;} 		 else if(timer==1000){timer=500;key_value=key_temp;key_shourtflag=1;} //否则长按不停加1   }else{key_shourtflag=0;timer=0;	   //定时清0}}void KEY_SHEZHI()  //按键设置
{ 	   if(key_shourtflag==0)   //没有按键按下直接退出,不执行以下内容{return;}switch(key_value)	 {case(0):break;case(0x01):num++;break;case(0x02):num++; break;case(0x04):num--;break;case(0x08):num--;break;case(0x03):    //双按键num=6666;break;case(0x5):     //双按键num=7777;break; case(0x9):     //双按键num=8888;break;case(0x7):     //三按键num=9999;break;  }	key_value=0; }

key.h

#include "system.h"	   //把timer0.h文件包含进来
#include "smg.h"
sbit k1=P3^7;
sbit k2=P3^6;
sbit k3=P3^5;
sbit k4=P3^4;uint KeyScan ();
void KEY_SHEZHI();

smg.c

#include "smg.h"
sbit WEI0 = P2^7;
sbit WEI1 = P2^6;
sbit WEI2 = P2^5;
sbit WEI3 = P2^4;
sbit aa = P0^0;
sbit bb = P0^1;
sbit cc = P0^2;
sbit dd = P0^3;
sbit ee = P0^4;
sbit ff = P0^5;
sbit gg = P0^6;
sbit dp = P0^7;
uint num=0;uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴
//uchar code smgduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳//uchar DisplayData[3];void smg_DigDisplay()	 //数码管显示
{static	uchar i=0;P0=0x00;//消隐switch(i)	 //位选,选择点亮的数码管,{case(0):WEI0=0;WEI1=1;WEI2=1;WEI3=1;smg_scan(num % 10000/ 1000); break;//显示第0位case(1):WEI0=1;WEI1=0;WEI2=1;WEI3=1;smg_scan(num % 1000 / 100);break;//显示第1位case(2):WEI0=1;WEI1=1;WEI2=0;WEI3=1;smg_scan(num % 100/10);break;//显示第2位case(3):WEI0=1;WEI1=1;WEI2=1;WEI3=0;smg_scan(num%10);break;//显示第3位}	i++;	if(i>3){i=0;}}//数码管 驱动
void smg_scan(unsigned char n)
{uchar temp;temp = smgduan[n];aa = temp & (0x01<<0);bb = temp & (0x01<<1);cc = temp & (0x01<<2);dd = temp & (0x01<<3);ee = temp & (0x01<<4);ff = temp & (0x01<<5);gg = temp & (0x01<<6);
}///******************
//数码管 驱动
//*********************/
//void smg_scan(unsigned char n)
//{	
//  uchar temp;
//  temp = smgduan[n];
// if(temp&0x01)aa=1;
//	else aa=0;
//	
//	if(temp&0x02)bb=1;
//	else bb=0;
//	
//	if(temp&0x04)cc=1;
//	else cc=0;
//	
//	if(temp&0x08)dd=1;
//	else dd=0;
//	
//	if(temp&0x10)ee=1;
//	else ee=0;
//	
//	if(temp&0x20)ff=1;
//	else ff=0;
//	
//	if(temp&0x40)gg=1;
//	else gg=0; 
//	
//	if(temp&0x80)dp=1;
//	else dp=0; //}void	SMG_XS(void)
{static uint	x=0;x++;if(x>=1000)   //定时500毫秒{	   num++;x=0;}} 在这里插入代码片

smg.h

#include "system.h"//sbit WEI0 = P2^7;
//sbit WEI1 = P2^6;
//sbit WEI2 = P2^5;
//sbit WEI3 = P2^4;void smg_DigDisplay(); //数码管位选
void smg_scan(unsigned char n);//数码管 驱动
void	SMG_XS(void);在这里插入代码片

#include “system.c”

#include "system.h"uchar flag_1ms=0;
unsigned char count_0_1ms=0;
uint count_100us=0;
void	Timer0_Init(void)
{TH0 = T1MS>>8; //赋初值TL0 = T1MS;	   //赋初值TMOD = 0x01;  //设置定时器0用十六位定时器方式EA = 1;			 //打开总中断ET0 = 1;		 //打开定时器0中断TR0 = 1;		 //启动定时器0		
}void Timer0() interrupt 1		 //中断号1
{	TH0 = T1MS>>8; //赋初值TL0 = T1MS;	   //赋初值count_0_1ms++;if(count_0_1ms>=10){flag_1ms=1;count_0_1ms=0;}count_100us++;
}void	Delay_us(uint xus)
{for(;xus>0;xus--);
}void	Delay_ms(uint xms)
{for(;xms>0;xms--){Delay_us(1000);}
}

#include “system.h”

//#include "reg51.h"
#include "STC12C5630AD.H"
//#include "STC12C5A60S2.H"
#define	uchar unsigned char	//定义无符号字符
#define	uint  unsigned int	//定义无符号整形#define	u8 unsigned char	//定义无符号字符
#define	u16  unsigned int	//定义无符号整形#define	FOSC	12000000L	//定义晶振频率		   
#define	T1MS	(65536-FOSC/12/10000)  //定时10毫秒的时候,计数器要写入的值void	Delay_us(uint xus);	//us级延时
void	Delay_ms(uint xms);	//ms级延时
void	Timer0_Init(void);  	//定时器初始化

main.c

#include "system.h"
#include "key.h"
#include "led.h"	
#include "smg.h"extern	uchar flag_1ms;	   //在其他模块中寻找其定义。另外,extern也可用来进行链接指定。void main(void)			//程序的主函数
{	
//    P0M0  = 0x0;
//    P0M1  = 0xff;
//     P0M0  = 0x20;
//     P0M1  = 0x20;Timer0_Init(); 定时器0函数调用while(1)  			//大括号里面的东西,被不停的循环执行{  //1ms进入一次if(flag_1ms==1)	//加了我之后,我的大括号里面的东西,被定期的1ms执行一次,反复执行	 	{flag_1ms=0;  smg_DigDisplay();//数码管位选Led_SHANSHUO();// LED 500ms闪烁KEY_SHEZHI(); //按键设置KeyScan ();//按键扫描函数//   smg_XS();  //数码管显示}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中关于head命令详解

head的作用 head用于查看文件的开头部分的内容。 head的参数 -q隐藏文件名-v 显示文件名-c<数目>显示的字节数-n<数目>显示的行数 head的案例 # 查看yum.log前五行内容 head -5 yum.log

vue2打包

首先&#xff0c;请确保您已经安装了Vue CLI。 打开终端或命令提示符&#xff0c;进入您的Vue项目的根目录。 运行以下命令来安装所需的依赖项&#xff1a; npm install安装完成后&#xff0c;运行以下命令来打包您的Vue项目&#xff1a; npm run build这将在您的项目根目录…

Cortex-M3/M4内核NVIC及HAL库函数详解(4):使用HAL库配置外部中断

0 工具准备 Keil uVision5 Cortex M3权威指南&#xff08;中文&#xff09; Cortex M3与M4权威指南 stm32f407的HAL库工程 STM32F4xx中文参考手册 1 使用HAL库配置外部中断 前面我们已经熟悉了有关内核部分的寄存器配置&#xff0c;接下来我们结合stm32f407的GPIO外设&#xf…

站长为什么都说WordPress太复杂不会用要放弃?

网络上经常看到有站长说要放弃WordPress&#xff0c;理由各有不同&#xff0c;比如有些说WordPress太复杂不会用&#xff1b;有些说WordPress是国外建站系统&#xff0c;在国内用来搭建访问速度太慢&#xff1b;也有些说WordPress是针对谷歌优化的&#xff0c;不适合国内的搜索…

UE 可靠UDP实现原理

发送 我们的消息发送都是通过 UChannel 来处理的&#xff0c;通过调用 UChannel::SendBunch 统一处理。 发送的 Bunch 是以 FOutBunch 的形式存在的。当 bReliable 为 True 的时候&#xff0c;表示 Bunch 是可靠的。 发送逻辑直接从UChannel::SendBunch处开始分析 1、大小限…

【算法与数据结构】1049、LeetCode 最后一块石头的重量 II

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题需要得到石头之间两两粉碎之后的最小值&#xff0c;那么一个简单的思路就是将这堆石头划分成大小相…

【MySQL】where和having的区别

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 用途: 使用位置: 操作对象: 聚合函数: 示例&#xff1a; 结语 我的其他博客 前言 数据库中的 WHERE 和 HAVING 子句在 SQL 查…

线程池最佳实践!这几个坑使用不当绝对生产事故!!

拿来即用!这篇文章我会介绍我使用线程池的时候应该注意的坑以及一些优秀的实践。 1、正确声明线程池 线程池必须手动通过 ThreadPoolExecutor 的构造函数来声明&#xff0c;避免使用Executors 类创建线程池&#xff0c;会有 OOM 风险。 Executors 返回线程池对象的弊端如下(…

【机器学习300问】14、什么是特征工程?

当我学习到这个知识点的时候十分困惑&#xff0c;因为从名字中我完全无法理解这个什么东西。于是呢我就去问了一下维基百科&#xff0c;下面是他的回答&#xff1a; 特征工程&#xff08;英语&#xff1a;feature engineering&#xff09;又称特征提取&#xff08;英语&#xf…

H3C设备配置端口镜像案例

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​ https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle O…

C语言练习day8

变种水仙花 变种水仙花_牛客题霸_牛客网 题目&#xff1a; 思路&#xff1a;我们拿到题目的第一步可以先看一看题目给的例子&#xff0c;1461这个数被从中间拆成了两部分&#xff1a;1和461&#xff0c;14和61&#xff0c;146和1&#xff0c;不知道看到这大家有没有觉得很熟…

NodeJs 第十八章 图片水印

图片处理是一个专业的事情。秉承着专业的事情就要交给专业的人处理。所以我们就要站在巨人的肩膀上去处理问题。 本章节主要介绍 jimp。jimp 是一个完全用JavaScript为Node编写的图像处理库&#xff0c;没有外部依赖。 jimp 支持图片类型 bmpgifjpegpngtiff 简单示例 本示例…

stm32f103c8r6 dma 测试

main.h文件 #include "stm32f10x.h" //STM32头文件 #include "sys.h" #include "delay.h" #include "usart.h" #include "dma.h" int main (void){//主程序 u8 i; //RCC_Configuration(); //时钟设置 uart_init…

计算机服务器中了mallox勒索病毒怎么办,mallox勒索病毒解密数据恢复

企业的计算机服务器存储着企业重要的信息数据&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但网络安全威胁随着技术的不断发展也在不断增加&#xff0c;近期&#xff0c;云天数据恢复中心接到许多企业的求助&#xff0c;企业的计算机服务器中了mallox勒索病毒&#…

XSS语句

XSS测试语句 在测试网站是否存在XSS漏洞时&#xff0c;应该输入一些标签如<,>输入后查看网页源代码是否过滤标签&#xff0c;如果没过滤&#xff0c;很大可能存在XSS漏洞。 <h5>1</h5> <span>1</span> <SCRIPT>alert(document.cookie)&l…

线性代数的学习和整理23:用EXCEL,VBA,python计算向量/矩阵的各种乘法:内积,点积,外积,叉积(建设ing)

目录 前言&#xff1a;EXCEL里的的向量相关计算公式 0.1 EXCEL里相关公式 0.2 先说结论&#xff1a;向量组的点乘公式和 向量组的点乘公式不一样 1 向量的点乘 (内积) 1.1 向量的点乘公式 1.2 EXCEL里向量点乘的计算 ​编辑 1.3 向量点乘的性质 1.3.1 内积的公式…

014-信息打点-JS架构框架识别泄漏提取API接口枚举FUZZ爬虫插件项目

014-信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&插件项目 #知识点&#xff1a; 1、JS前端架构-识别&分析 2、JS前端架构-开发框架分析 3、JS前端架构-打包器分析 4、JS前端架构-提取&FUZZ 解决&#xff1a; 1、如何从表现中的JS提取…

使用Element中的input组件如何实现文字和输入框在一行显示

利用 <el-form-item label"商品名称&#xff1a;">标签包裹即可&#xff0c;label写提示文字 <el-form ref"form" label-width"100px"><el-form-item label"商品名称&#xff1a;"><el-input v-model"na…

3 Python 工匠:使用数字与字符串的技巧

Python 工匠&#xff1a;使用数字与字符串的技巧 序言 这是 “Python 工匠”系列的第 3 篇文章。[查看系列所有文章] 数字是几乎所有编程语言里最基本的数据类型&#xff0c;它是我们通过代码连接现实世界的基础。在 Python 里有三种数值类型&#xff1a;整型&#xff08;int&…

9.Vim 编辑器

Vim编译器基础笔记请访问URL 1.配置主机名称 使用Vim编辑器修改/etc/hostname主机名称文件。 hostname 命令用于查看当前的主机名称 [rootlocalhost ~]# vim /etc/hostname [rootlocalhost ~]# hostname2.配置网卡信息 使用Vim编辑器修改网卡文件ifcfg-ens160 [rootlocal…