基于51单片机的独立按键和矩阵按键用法

发布者:BlissfulJoy最新更新时间:2024-08-12 来源: cnblogs关键字:51单片机  独立按键  矩阵按键 手机看文章 扫描二维码
随时随地手机看文章

 70             led=~temp;

 71             delay(40000);

 72         }   

 73         m=0;

 74     }

 75     

 76 }

 77 

 78 void work7()//4--衍生物

 79 {

 80     if(m<500)

 81     {

 82         led=0xff;

 83         led=~temp;

 84     }

 85     if(m%1000==0)

 86     {

 87         temp+=pow(4,j);

 88         led=~temp;

 89     }

 90     if(m>=10000)

 91     {

 92         j++;

 93         m=0;

 94     }

 95 }

 96 

 97 void work8()//5--4个空格

 98 {

 99     if(m>200)

100     {

101         led=0xff;

102         temp=~led;

103     }

104     if(m>=32000)

105     {

106         for(b=0;b<7;b+=5)

107         {

108             temp+=pow(2,b);

109             led=~temp;

110             delay(40000);

111         }

112         

113         for(b=2;b<8;b+=5)

114         {

115             temp+=pow(2,b);

116             led=~temp;

117             delay(40000);

118         }

119         for(b=4;b<8;b+=5)

120         {

121             temp+=pow(2,b);

122             led=~temp;

123             delay(40000);

124         }

125         for(b=1;b<8;b+=5)

126         {

127             temp+=pow(2,b);

128             led=~temp;

129             delay(40000);

130         }

131         for(b=3;b<8;b+=5)

132         {

133             temp+=pow(2,b);

134             led=~temp;

135             delay(40000);

136         }

137         m=0;

138     }

139 }

140 

141 void work9()//6--5个空格

142 {

143     if(m>200)

144     {

145         led=0xff;

146         temp=~led;

147     }

148     if(m>=32000)

149     {

150         for(b=0;b<7;b+=6)

151         {

152             temp+=pow(2,b);

153             led=~temp;

154             delay(40000);

155         }

156         

157         for(b=4;b<8;b+=6)

158         {

159             temp+=pow(2,b);

160             led=~temp;

161             delay(40000);

162         }

163         for(b=2;b<8;b+=6)

164         {

165             temp+=pow(2,b);

166             led=~temp;

167             delay(40000);

168         }

169         m=0;

170     }

171 }

172 void work10()//7--6个空格

173 {

174     if(m>200)

175     {

176         led=0xff;

177         temp=~led;

178     }

179     if(m>=32000)

180     {

181         for(b=0;b<=7;b+=7)

182         {

183             temp+=pow(2,b);

184             led=~temp;

185             delay(40000);

186         }

187         for(b=6;b>0;b--)

188         {

189             temp+=pow(2,b);

190             led=~temp;

191             delay(40000);

192         }

193         m=0;

194     }

195 }

196 

197 void work11()//8--衍生物

198 {

199     led=0XFF;

200       for(j=7;j>0;j--)

201         {

202         led=led-pow(2,j);

203           delay(10000);

204          }

205 }

206 

207 void work12()//9--7个空格

208 {

209     led=0xfe;

210 }

211 

212 void work13()//10--8个空格

213 {

214     if(m>200)

215     {

216         led=0xff;

217         temp=~led;

218     }

219     if(m>=32000)

220     {

221         for(b=0;b<=7;b++)

222         {

223             temp+=pow(2,b);

224             led=~temp;

225             delay(40000);

226         }

227         m=0;

228     }

229 }

230 

231 void work14()//11--9个空格

232 {

233     if(m>200)

234     {

235         led=0xff;

236         temp=~led;

237     }

238     if(m>=32000)

239     {

240         for(b=7;b>=0;b--)

241         {

242             temp+=pow(2,b);

243             led=~temp;

244             delay(40000);

245         }

246         m=0;

247     }

248 }

249 

250 void work15()//12----10个空格时:衍生物

251 {

252     if(m>200)

253     {

254         led=0xff;

255         temp=~led;

256     }

257     if(m>=32000)

258     {

259         for(b=0;b<7;b+=3)

260         {

261             temp+=pow(2,b);

262             led=~temp;

263             delay(40000);

264         }

265         

266         for(b=1;b<8;b+=3)

267         {

268             temp+=pow(2,b);

269             led=~temp;

270             delay(40000);

271         }

272         for(b=2;b<8;b+=3)

273         {

274             temp+=pow(2,b);

275             led=~temp;

276             delay(40000);

277         }

278         m=0;

279     }

280 }

281 

282 void work16()//13:衍生物

283 {

284     if(m>200)

285     {

286         led=0xff;

287         temp=~led;

288     }

289     if(m>=32000)

290     {

291         for(b=0;b<7;b+=2)

292         {

293             temp+=pow(2,b);

294             led=~temp;

295             delay(40000);

296         }

297         m=0;

298     }

299 }

300 

301 void work17()//14

302 {

303     led=0x00;

304 }

305 

306 void work18()//15

307 {

308     

309 }

310 

311 void work19()//16

312 {

313     

314 }


随后放进main.c的代码中引用它们


//main.c

#include

#include

#include

#include 'qiyu.h'

#include 'dulianjian.h'

#include 'juzhenganjian.h'



void main()

{     

    ini();//初始化


  while(1)//闭环

        {                

            while(TF0==0);//启动主循环        

              TL0=0x9C;

            TH0=0xFF;

                TF0=0;

            keyscan();    //    键扫描

            KeyScan1();

[1] [2] [3]
关键字:51单片机  独立按键  矩阵按键 引用地址:基于51单片机的独立按键和矩阵按键用法

上一篇:定时器按键消抖的方法
下一篇:基于51单片机,蜂鸣器和led每秒1滴1亮的程序

推荐阅读最新更新时间:2026-02-25 06:55

单片机驱动矩阵按键独立按键源代码
本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c52;找到相应部分即可.这是一整个单片机开发板的电路图其他的忽略. hex文件及其工程文件下载:http://www.51hei.com/f/pingfc.rar 下面是程序源码: /* *功能:使用矩阵按键使得按键按下时数码管上显示各自对应的数字的立方数 * 优化显示,只显示有效位; * 且使用独立按键实现key1清零,key2加数,key3减数; *日期:2013-05-07-10:20 *作者:徐冉 *特别说明:本程序代码已经通过调试,仅供学习使用; * */ /***********AT89C52-RC 单片机-51hei实验板***********/
[单片机]
51单片机学习:独立按键实验
实验名称:独立按键实验 接线说明: 实验现象:下载程序后,按下“独立按键”模块中K1键,控制D1指示灯亮灭 注意事项: ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义独立按键控制脚 sbit KEY1=P3^1; sbit KEY2=P3^0; sbit KEY3=P3^2; sbit KEY4=P3^3; //定义LED
[单片机]
51单片机-独立按键控制LED灯
1.硬件设计 轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开;原理图如下: 2.软件设计 2.1.独立按键控制LED闪烁 功能需求:按下按键,LED点亮;松开按键,LED熄灭;可单个按键控制,也可多个按键控制 程序设计:分析原理图,确定要通过控制哪个按键去决定LED亮灭;单个按键K1,控制LED亮灭的程序如下: #include REGX52.H void main() { while(1) { if(P3_1==0)//通过控制K1按键,去控制LED闪烁 //P3_0==0,即是控制K2 { P2_0=
[单片机]
<font color='red'>51单片机</font>-<font color='red'>独立</font><font color='red'>按键</font>控制LED灯
51单片机玩转物联网基础篇03-独立按键
前言 上一节,我们完成了51单片机控制LED灯,并实现流水灯效果,本节我们学习操作独立按键,并通过两个按键,分别打开和关闭所有LED灯,按键作为输入设备,在系统开发过程中十分常见,一般来说,按键可以设置系统参数、控制系统运行状态。 一、基础知识 1.按键简介 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号会发生变化,常见的按键开关如下图所示,其中A端引脚在同侧,默认断开,B端引脚在不在同侧,默认导通,当按键按下时,A端导通,B端断开。 此类开关,按下时候通常不会立刻导通,开和关的瞬间伴有一连串抖动,一般为5ms到10ms,具体抖动时间由按键机械特性决定,抖动过程如下图所示: 为了解决这个问题,通常可
[单片机]
<font color='red'>51单片机</font>玩转物联网基础篇03-<font color='red'>独立</font><font color='red'>按键</font>
51单片机多路独立按键开关程序
每一个按键对应一个led灯,实现独立开关灯。 源程序: ** #include reg51.h #define uint unsigned int #define uchar unsigned char //定义按键端口 sbit key1 = P1^0;//定义按键端口1 sbit key2 = P1^1; sbit key3 = P1^2; sbit key4 = P1^3;//定义按键端口4 sbit key5 = P1^4; sbit key6 = P1^5; sbit key7 = P1^6; sbit key8 = P1^7; sbit led1 = P2^0; //定义LED灯1 sbit led2 = P
[单片机]
51单片机累计主循环次数实现独立按键
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: Independent-KEY ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200505 ---- @ModifiedTime: 20200505 ---- @Description:
[单片机]
<font color='red'>51单片机</font>累计主循环次数实现<font color='red'>独立</font><font color='red'>按键</font>
基于51单片机秒表设计,独立按键实现启动、复位、暂停功能
功能说明: #include reg52.h //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit K1=P3^1; //开始 sbit K2=P3^0; //停止 sbit K3=P3^2; //使用中断 清零 //数码表 u8 code smgduan ={0x3f,0x06,0x5b, 0x4f,0x66,0x6d, 0x7d,
[单片机]
基于<font color='red'>51单片机</font>秒表设计,<font color='red'>独立</font><font color='red'>按键</font>实现启动、复位、暂停功能
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved