求一个程序,行列式键盘控制数码管和stm32流水灯程序,数码管显示按下的键值,当按到5时,stm32流水灯程序自上而下依次亮。

按键控制数码管和流水灯设计报告实验报告doc下载_爱问共享资料
按键控制数码管和流水灯设计报告实验报告.doc
按键控制数码管和流水灯设计报告实验报告.doc
按键控制数码管和流水灯设计报告实验报告.doc
简介:本文档为《按键控制数码管和流水灯设计报告实验报告doc》,可适用于综合领域,主题内容包含按键控制数码管和流水灯设计报告实验报告,摘要单片机自世纪年代以来以其极高的性价比以及方便小巧受到人们极大的重视和关注。本设计选用mspf芯片作为控制符等。
侵权或盗版
*若权利人发现爱问平台上用户上传内容侵犯了其作品的信息网络传播权等合法权益时,请按照平台要求书面通知爱问!
赌博犯罪类
在此可输入您对该资料的评论~
添加成功至
资料评价:An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click
to find out more about this error.查看: 2498|回复: 5
求51单片机编程 要求按下k1时8个LED为流水灯工作,按下k2时数码管显示28
51单片机编程,用c语言编写程序。要求按下k1时8个LED为流水灯工作,按下k2时数码管显示28,按下k3数码管作为秒表计数60秒,当按下k4停止计数,按下k5清零。
我是初学者,你贴程序上来,大家帮你分析。我不会别人会。
回帖助人的奖励!
必须有原理图才能进行程序书写的,
首先对按键进行扫描,然后再判断按键键值,通过键值执行相应的操作即可啊,流水灯的程序写出来,数码管动态显示程序,利用定时器写出60秒秒表,利用TR0/TR1来控制计数器的开启或停止,最后进行清零即可实现,采用模块化设计就可以了
这个挺简单的,定义5个子函数,分别实现以上功能,在用一个键盘检测程序,检测按下哪个键,就执行相应的子函数
本帖最后由 exv 于
11:00 编辑
使用uCOS-II ,用OSTaskCreate开六个任务,keyscan的优先级高,其他五个优先级等同。
参考论坛的这个帖子“uCOS-II v2.52在MCS-51系列单片机上的移植实例”
你可以分别写出流水灯,数码管显示,数码管定时器计数,和独立键盘的程序,然后再写一个主函数用IF语句来将集中功能综合,不过在开头要加上各个分程序的头定义
Powered by矩阵键盘控制led
矩阵键盘控制led
矩阵键盘控制led
矩阵键盘控制led
矩阵键盘控制led知识来自于造价通云知平台上百万用户的经验与心得交流。
造价通即可以了解到相关矩阵键盘控制led最新的精华知识、热门知识、相关问答、行业资讯及精品资料下载。同时,造价通还为您提供材价查询、测算、、等建设行业领域优质服务。手机版访问:
&&&&日前,深圳市住房和建设局印发一则关于开展建设工程实名制和分账制落实情况专项检查的通知(深建设〔2018〕20号),具体内容如下所示。
&&&&根据《福建省住房和城乡建设厅关于立即开展全省房屋建筑和市政基础设施工程用砂专项检查的紧急通知》要求,即日起开展全市房屋建筑和市政基础设施工程用砂专项检查,有关事项通知如下。
&&&&为积极响应《市政府办公厅关于印发加快推进全市不见面审批(服务)改革实施方案的通知》(宁政办发〔号)的文件精神,进一步提升政府行政效能,方便企业办理相关事项,我处自日起对在南京市办理工程造价咨询企业跨地区单项业务备案实行网上办理服务。
&&&&作为信息化发展的新阶段,大数据正对经济发展、社会秩序、国家治理、人民生活产生重大影响。紧抓大数据产业这一“富矿”,开创发展新局面,亦是“数字福建”建设面临的全新时代课题。
&&&&提起设计费问题,恐怕每位建筑师都有很多话想说,个中的酸甜苦辣非外行人所能理解和体会。经过调研我们发现,设计费不仅是建筑师群体颇为关注的问题,对于成本人而言也是非常感兴趣的话题。
&&&&日前,郑州市造价办召开了2018年度工作部署会议,深入贯彻落实党的十九大精神、省定额站2018年度标准定额管理工作安排和市建委工作会议精神,结合单位实际,认真分析形势,部署今年任务,把握方向、狠抓落实,努力开启郑州市造价管理事业新征程。
&&&&据记者获悉,山东省住房和城乡建设厅、山东省质量技术监督局于日联合发布了山东省工程建设标准《装配式钢结构建筑技术规程》。
&&&&辽宁省大连市审计局主动适应投资审计新形势,积极探索审计方式、方法,聚焦“三个转变”,努力推动投资审计工作新发展。
&&&&日前,由贵州省贵阳市工信委、贵阳国家高新区管委会共同主办的“大数据+混凝土”产业深度融合项目推介会在贵阳召开,会上发布了“砼智造—高性能混凝土信息化产业平台”,将有效打通整个行业产业链,实现深度融合发展。
&&&&根据《工程造价咨询企业管理办法》(建设部令第149号)及《关于进一步加强工程造价咨询企业晋升甲级资质审核工作的通知》(建办标[2011]29号)的有关规定,我部标准定额司对近期工程造价咨询企业晋升甲级资质申报材料进行了审核,现将审核结果予以公示。
矩阵键盘控制led相关专题
分类检索:
(C) 2006- WWW.ZJTCN.COM
增值电信业务经营许可证B2-首先既然是检测输入,对于当然要用到拉电阻,来检测引脚电平变化变化。51单片机中,除了P0口外,P2,P3,P4都是内置上拉电阻的准双向IO口,一般 的 51 P0引脚都外接了上拉电阻,当然也可以用作输入口。
作为输入前需要拉为高电平。&当有按键按下,致使单片机的某个引脚接地,变为低电平时,我们就认为这个按键按下了。当按键松开后,由于输入不会锁存,所以此时拉高的引脚回归到高电平。
独立按键的内部原理。
独立按键的4个引脚中,两两为一组。每一组的2个引脚是连在一起的,当按键按键时,2个组又连接了,也就是4个脚都连接一起了。
在按键没有按下去的时候1,2号脚相连,3,4号脚相连。按键按下去的时候,1,2,3,4号脚就全部接通。
按键的很重要注意点就是消除抖动,消抖。因为人按下按键不是并瞬间到位的,按键在按下的过程中会有抖动。我们需要通过延时来让单片机绕过抖动的时间。
下面是一个用按键作为开关间接控制LED的demo。
&注:下图中P2.0连接的按键应该再接一个电阻,我疏忽忘记画出来了。
/***************************************按键按下,LED亮,松开,LED熄灭**************************************/#include&reg51.h&
typedef unsigned int uint;
typedef unsigned char
sbit button = P2^0;
//按键输入引脚
sbit led = P0^0;
//LED控制输出引脚
/***************************/
void delay(uint t);
uchar isKeyPressed(void);
/***************************/
void main(void)
button = 1;
//P2 是 准 IO口,作为输入前要写1
if(isKeyPressed())
delay(100);
uchar isKeyPressed(void)
uchar isPressed = 0;
//是否按下标志位
uchar c=50;
if(button==0)
//初次检测
//消抖延时
if(button==0)
//再次验证
isPressed = 1;
while(isPressed==0 && c--)
//如果不用c作为计数器,那么一直按着按键的话,程序就会一直在这里循环。是否要用c需要根据自己的要求。
return isP
void delay(uint t)
for(i=t;i&0;i--)
for(j=110;j&0;j--)
矩阵按键的检测方式有多种,最常用的就是行列式扫描检测。原理和独立按键是一样的,只不过我们要扫描一组按键,找出那个被按下的而已。
对行列式扫描的分析。
假如我们按下了按键S6,现在来检测它。
用红色表示1高电平,蓝色表示0低电平。
先给键盘连接的GPIO口赋值为0XF0。
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 错误修正:图中的行改为列
电平反转。
&& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &错误修正:图中的列改为行
这样就可以判断定了按键的坐标。
demo的连线图。
/******************************将按键的编号显示到数码管上*****************************/#include&reg51.h&
typedef unsigned int uint;
typedef unsigned char
typedef signed char
/*************************/
void delay(uint t) ;
void showDigit(uint num);
schar martixKeyScan(void);
/***************************/
uchar code TABLE[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F} ;
//数码管的段选
//连接矩阵键盘
sbit Add0 = P0^0;
//译码器的A0 A1 A3,用来数码管的位选
sbit Add1 = P0^1;
sbit Add2 = P0^2;
void main(void)
schar keyRe;
uint number=0;
keyRe = martixKeyScan();
if(-1 != keyRe){
number = keyRe;
showDigit(number);
void showDigit(uint num)
uchar count = 0;
//根据输入数据的位数来开启数码管的位。
switch(count)
case 0:Add2 = 1;Add1 = 1;Add0 = 1;break;
//送入位选,显示这个数的个位
case 1:Add2 = 1;Add1 = 1;Add0 = 0;break;
//显示十位
case 2:Add2 = 1;Add1 = 0;Add0 = 1;break;
case 3:Add2 = 1;Add1 = 0;Add0 = 0;break;
case 4:Add2 = 0;Add1 = 1;Add0 = 1;break;
case 5:Add2 = 0;Add1 = 1;Add0 = 0;break;
case 6:Add2 = 0;Add1 = 0;Add0 = 1;break;
case 7:Add2 = 0;Add1 = 0;Add0 = 0;break;
DUAN_XUAN = TABLE[num%10];
//送入段选
DUAN_XUAN = 0 ;
//关闭所有段,消影
}while(num/=10);
/**********************
矩阵按键检测。
有按键按下,返回按键的编号,否则返回-1;
***********************/
schar martixKeyScan(void)
schar col,
uchar c=50;
//松手计数器
KEYS_REC = 0xF0 ;
//让连接键盘的高4位为1 ,低4位为0
if(KEYS_REC != 0xF0)
//初次检查到按下
//消抖延时
if(KEYS_REC != 0xF0)
//真的被按下了
switch(KEYS_REC)
0X70: row =1 ;break;
0XB0: row = 2; break;
0XD0: row = 3;break;
0XE0: row = 4;break;
default:break;
KEYS_REC = 0x0F;
//电平反转,检测列
switch(KEYS_REC)
0X07: col = 1;break;
0X0B: col = 2; break;
0X0D: col = 3;break;
0X0E: col = 4;break;
default:break;
while((c--) && (KEYS_REC!=0x0F))
//等待按键松手
return (row-1)*4+
//使用4X4的键盘
} //真的按下了
return -1;
return -1;
void delay(uint t)
for(i=t;i&0;i--)
for(j=123;j&0;j--)
阅读(...) 评论()}

我要回帖

更多关于 单片机流水灯程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信