stc89c52怎么通过单片机矩阵键盘程序使四位一体共阳数码管循环左移显示 ,下面是我写的代码

需要一个STC89C52芯片的矩阵按键扫描程序,要求:每一个按键(共16个)对应数码管0~F显示出来_百度知道
需要一个STC89C52芯片的矩阵按键扫描程序,要求:每一个按键(共16个)对应数码管0~F显示出来
用c语言编写的
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
这个是单独的键盘扫描子程序,你可以借鉴一下..我使用的P3口接的矩阵键盘,你可以根据需要适当改变. 还要注意我的键值可能和你不一样,这就要看你的硬件电路是怎么设计的了.uint keyscan(void)//键盘扫描函数,使用行列反转扫描法{uint cord_h,cord_l,//行列值
//行线输出全为0 cord_h=P3&0x0f;
//读入列线值 if(cord_h!=0x0f)
//先检测有无按键按下 {
if(cord_h!=0x0f)
cord_h=P3&0x0f;
//读入列线值
P3=cord_h|0xf0;
//输出当前列线值
cord_l=P3&0xf0;
//读入行线值
for(;;){P3=0x0f;if(P3==0x0f)
}P10=0;delayring();P10=1;switch(cord_h+cord_l){case 0x7e:P0=led[1];cord=1;case 0x7d:P0=led[2];cord=2;case 0x7b:P0=led[3];cord=3;case 0x77:P0=led[4];cord=4;case 0xbe:P0=led[5];cord=5;case 0xbd:P0=led[6];cord=6;case 0xbb:P0=led[7];cord=7;case 0xb7:P0=led[8];cord=8;case 0xde:P0=led[9];cord=9;case 0xdd:P0=led[0];cord=0;case 0xee:cord=13;case 0xed:cord=14;case 0xeb:cord=15;case 0xe7:cord=16;}P2=h;return(cord);//键盘最后组合码值
}return(0xff);
//返回该值}如果有按键,就会返回按键值, 如果没按键则返回 0XFF,
通过读取返回值可以判断是否有按键, 在程序开头可以加上全局变量的断码表,
这就看你用的是共阴的还是共阳的数码管了~~
祝您的问题早日得到解决.
采纳率:82%
我自己写的,有共阴的,共阳的,给你看看,希望对你有用共阴的如下:#include&reg52.h&#define uchar unsigned char#define uint unsigned int char code zhi[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,
0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77,};char code shu[]={0x3f,0x66,0x7f,0x39,0x06,0x6d,0x6f,0x5e,
0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71,};uchar temp,num1,i;void delay(uint z){
uchar x,y;
for(x=z;x&0;x--)
for(y=110;y&0;y--);}void main(){
delay(10);
if(P1!=0xf0)
if(P1==temp)
for(i=0;i&16;i++)
if(num1==zhi[i])
P0=shu[i];
}共阳的如下,共阳的我是用三极管驱动的,所以只要控制基极,给他低电平就可以让是对应管亮,这里是用四位的数码管,四个数码管显示的是一样的 #include&reg52.h&#define uchar unsigned char#define uint unsigned int char code zhi[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,
0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77,};char code shu[]={0xb0,0xf8,0x83,0x8e,0xa4,0x82,0x88,0x86,
0xf9,0x92,0x90,0xa1,0xc0,0x99,0x80,0xc6,};uchar temp,num,i;void delay(uint z){
uchar x,y;
for(x=z;x&0;x--)
for(y=110;y&0;y--);}void main(){
delay(10);
if(P1!=0xf0)
if(P1==temp)
for(i=0;i&16;i++)
if(num==zhi[i])
P0=shu[i];
为您推荐:
其他类似问题
stc89c52的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于STC89C52单片机的智能定时器设计-毕业论文.docx 51页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
·····
智能定时器设计摘要:定时器的数字化给人们生产生活带来了极大的方便,同时定时器的集成化受广大消费的喜爱,因此得到了广泛的使用。定时器是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。定时器的精度、稳定度远远超过老式定时器。在这次设计中,我们采用LED数码管显示时、分、秒,以24 小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。本次设计定时器主要通过单片机系统将传输的数据显示在数码显示管和LED灯上,从而实现的闹钟、整点报时、时间显示、校对时间等一系列的的操作。关键词:定时器;单片机; STC89C52目录摘要11 引言11.定时器的背景11.2定时器的意义11.3定时器的应用11.4主要设计任务22
整体设计方案32.1 定时器的功能及设计要求32.2 定时器的实现形式32.3 实现定时器计时的基本方法43
定时器硬件系统的设计63.1 定时器主控电路CPU的选择63.2 定时器主控电路最小应用系统103.3 键盘及其接口113.3.1按键的去抖处理113.3.2定时器按键电路113.4 蜂鸣器电路123.5 数码管显示电路134
定时器软件系统的设计164.1 主程序流程图164.2 中断流程图174.3 定时程序设计195
定时器的系统调试仿真与测试205.1 调试205.2 仿真215.3 测试236 总结25致谢26参考文献27附件一:定时器电路图28附件二:元器件清单29附件三:源程序31第1章引言1.1数字定时器的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。1.2数字定时器的意义定时器是采用数字电路实现对时、分、秒。数字显示的计时装置,广泛用于个人家庭、车站,、码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式定时器, 定时器的数字化给人们生产生活带来了极大的方便,而且大大地扩展了定时器原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以定时器数字化为基础的。因此,研究定时器及扩大其应用,有着非常现实的意义。[出售10元2000个财富值,足够大学4年的使用。+威信(mk6689866)。]感谢您对我们的信任.已帮助1800多名毕业生完成毕业设计,顺利通过毕业.在本工作室定做,请认真阅读以下注意事项:
1.承接毕业设计/论文类型[专科/本科/工硕]1.1 PLC毕业设计,单片机毕业设计1.2.电子|通信|电力|电气|机电|自动化类1.3.图像处理类/地理信息GIS类2.认真如实填写论文定做报表。因为我们是根据你的定做需求收费,并按此需求,作为毕业设计制作完成时验收的依据.3.填写完成后。+qq或发邮箱请发至邮箱:1046908547@qq.com我们将在一日之内回复你,并与你联系.1.3数字定时器的应用数字定时器已成为人们日常生活中的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使定时器具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。1.4主要设计任务本次设计需要完成的设计不仅仅是完成毕业设计而已,更主要的是通过本次本次的设计更好的来回顾三年所学的知识,老师们的辛勤奉献自己究竟学到了什么,同时也是自己对自己即将结束的大学生活画个句号,为即将来到的工作作出了是实际性的准备
正在加载中,请稍后...51单片机STC89C52 矩阵键盘数码管显示
WELA BIT P2.7
DULA BIT P2.6
DIOLA BIT P2.5
FM BIT P2.3
SETB DIOLA
MOV SP,#0E0H
LCALL key_Scan
LCALL DELAY20MS
LCALL key_Scan
LCALL key_S等待按键释放
LCALL DELAY20MS
SJMP HERE0
MOV P3,#0FH
ORL P3,#0FH
MOV A,P3取低4位 行
MOV P3,#0F0H
ORL P3,#0F0H
MOV R0,P3 ;取高4位 列
ANL A,#0FH
ANL A,#0F0H
JZ EXIT ;为0说明无键,退出
MOV R0,A ; 暂存完整键状态
ANL A,#0FH
CJNE A,#01H,NEXT0
SJMP NEXT4
CJNE A,#02H,NEXT1
SJMP NEXT4
CJNE A,#04H,NEXT2
SJMP NEXT4
CJNE A,#08H,NEXT3
SJMP NEXT4
MOV R1,#0 ;R1保存行号 无键为0,有键1-4
CLR A ;退出前,清零累加器
MOV A,R0开始算列
ANL A,#0F0H
CJNE A,#10H,NEXT00
SJMP NEXT40
CJNE A,#20H,NEXT10
SJMP NEXT40
CJNE A,#40H,NEXT20
SJMP NEXT40
CJNE A,#80H,NEXT30
SJMP NEXT40
MOV R2,#0 ;R2保存列号,无键为0,有键1-4
CLR A ;无键退出,并清零累加器
ADD A,R2 ;键值 0-15
DELAY20MS:延时
MOV R1,#20
MOV R0,#0FAH
DJNZ R0,DELAY0
DJNZ R1,DELAY1
DELAY4S:延时
MOV R3,#02H
MOV R2,#04H
MOV R1,#250
MOV R0,#250
DJNZ R0,DELAY00
DJNZ R1,DELAY10
DJNZ R2,DELAY20
DJNZ R3,DELAY30
MOV P0,#00H
MOV DPTR,#TABLEK
MOVC A,@A+DPTR
TABLEK:共阴数码管
3FH,06H,5BH,4FH
66H,6DH,7DH,07H
7FH,6FH,77H,7CH
39H,5EH,79H,71H
51 单片机 C 语言编程:矩阵键盘输入,显示在数码管
51单片机STC89C52 数码管动态
没有更多推荐了,四位一体数码管介绍、扫描原理、应用电路和共阳共阴码段编写
四位一体数码管介绍、扫描原理、应用电路和共阳共阴码段编写1、 数码管结构如图 1,一般7段数码管由7段条形发光二极管和一个圆点发光二极管组成,控制ABCDEFG发光二极管的亮灭,可以显示0-F字符以及其他特殊字符,控制DP发光二极管的亮灭能控制是否显示小数点。如图 2,为四位一体共阳数码管的内部结构,在使用时12、9、8、6分时接高电平,11、7、4、3、1、10、5、3引脚对应于数码的A-G、DP发光管,控制A-G、DP发光管的高低电平能控制对应发光管的灭亮。例如对于第一位的共阳数码管,令12脚为高电平,11、7、4、2、1、10、3为低电平,5为高电平,则第一位数码管显示字符“0”,具体的共阳共阴数码管的编码参加后面章节4。2、 数码管动态扫描原理数码管动态扫描的原理是利用人的视觉暂留原理,快速循环显示各个数码管的字符,形成连续的字符串。例如,在数码管显示“1234”字符的流程如下:1、第1位数码管显示“1”,第234位数码管不显示;2、经过时间t后,第2位数码管显示“2”,第134位数码管不显示;3、又经过时间t后,第3位数码管显示“3”,第124位数码管不显示;4、又经过时间t后,第4位数码管显示“4”,第123位数码管不显示;5、又经过时间t后,返回第1步显示第1位数码管,依次循坏。其中扫描显示间隔t是很关键的参数,t太长将会导致数码管闪烁,一般选择5ms或者更短的时间为宜。3、 数码管常用应用电路如图 4和图 5,表示了一个单片机与四位一体共阳数码管连接应用的电路,单片机P2脚(可根据实际改变)接数码管A-G、DP引脚,P1.2-P1.5(可根据实际改变)接数码管12、9、8、6引脚。单片机P2脚控制数码管的码段(显示不同的字符,在章节4中描述),P1.2-P1.5控制各位数码管的亮灭。4、 共阴共阳数码管码段共阳数码管码段unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳数码管显示字符0-F共阴数码管码段unsigned char code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管显示字符0-F自定义数码管显示对于共阳数码管,引脚ABCDEFG、DP为低电平,公共端接高电平,对应的发光管亮。对于共阴数码管,引脚ABCDEFG、DP为高电平,公共端接低电平,对应的发光管亮。例如,共阳数码管显示字符“A”,可知管脚ABCEFG亮,置0,管脚DP、D灭,为高电平1,获得的十六进制编码为0x88。详见表格 1 第3行。我处提供单片机、电路板、控制器、电子产品、工控测控传感自动化系统、仪器仪表、软件EXE编程、安卓APP开发设计定制等优质服务(QQ),欢迎惠顾。注:更多精彩内容,尽在微信公众号“永珂在线”参考:【1】共阴和共阳数码管编码表http://blog.csdn.net/kevinhg/article/details/7824836
【raspberry】(五) 四位数码管F3461BH
四位一体数码管总有一位比其它数码管明显变亮
STM32 控制4位共阳数码管输出计数
4位共阳数码管
简易四位一体数码管显示数字(部分代码查询获得)
没有更多推荐了,21ic官方微信-->
如何用矩阵键盘输入一多位数在数码管上显示
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
本帖最后由 cyl0856 于
13:50 编辑
求前辈高手们赐教,如何编程实现用矩阵键盘输入一多位数在数码管上显示,要c语言的,最好附上思路,
单片机芯片是STC89c52的,板子是德飞莱的,由于原理我也不懂,所以方框图也没法给,我希望实现的功能是在
矩阵键盘上按“1”键就在第一个数码管显示“1”,再按“2”键就在第二个数码管上显示“2”,最终用矩阵键盘输入一多位数,不知道能否实现?
这问题纠结好多天了,希望高手们指点小弟,
又见伸手党
中级工程师, 积分 3392, 距离下一级还需 1608 积分
中级工程师, 积分 3392, 距离下一级还需 1608 积分
中级工程师, 积分 3392, 距离下一级还需 1608 积分
中级工程师, 积分 3392, 距离下一级还需 1608 积分
楼主的提问,连百度也搜索不出来
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
输入一多位数好似问的都唔系好清楚。又见伸手党
技术总监, 积分 41545, 距离下一级还需 8455 积分
技术总监, 积分 41545, 距离下一级还需 8455 积分
技术总监, 积分 41545, 距离下一级还需 8455 积分
技术总监, 积分 41545, 距离下一级还需 8455 积分
最好注释详细点,外加方框图
高级技术员, 积分 757, 距离下一级还需 243 积分
高级技术员, 积分 757, 距离下一级还需 243 积分
高级技术员, 积分 757, 距离下一级还需 243 积分
高级技术员, 积分 757, 距离下一级还需 243 积分
硬件不同,程序不同,自己写吧亲
资深工程师, 积分 12372, 距离下一级还需 7628 积分
资深工程师, 积分 12372, 距离下一级还需 7628 积分
资深工程师, 积分 12372, 距离下一级还需 7628 积分
资深工程师, 积分 12372, 距离下一级还需 7628 积分
LZ忘记附上email或QQ了,帮写好了发给他。如5楼所说的,最好注释详细点,注释要中文的,外加方框图,程序要完整的工程。
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
coody 发表于
LZ忘记附上email或QQ了,帮写好了发给他。如5楼所说的,最好注释详细点,注释要中文的,外加方框图,程序要 ...
多谢兄台指点,但是它的原理我不懂,方框图没法给,还请兄弟多帮忙
资深工程师, 积分 12372, 距离下一级还需 7628 积分
资深工程师, 积分 12372, 距离下一级还需 7628 积分
资深工程师, 积分 12372, 距离下一级还需 7628 积分
资深工程师, 积分 12372, 距离下一级还需 7628 积分
你找一本基础的课本,里面详细得很。虽然实际的产品已经很少用这样的方案。
助理工程师, 积分 1902, 距离下一级还需 98 积分
助理工程师, 积分 1902, 距离下一级还需 98 积分
助理工程师, 积分 1902, 距离下一级还需 98 积分
助理工程师, 积分 1902, 距离下一级还需 98 积分
看到好问题,路过学学习
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
看来要看那个闲着才帮你搞全套
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
拿来主义那个给你慢慢改吧,改到合适你的
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P3^4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchar num,temp,num1;
void delay(uint z)
& & & & uint x,y;
& & & & for(x=z;x&0;x--)
& & & & & & & & for(y=110;y&0;y--);
uchar keyscan();
void display(uchar aa);
void main()
& & & & num=17;
& & & & dula=1;
& & & & P0=0;
& & & & dula=0;
& & & & wela=1;
& & & & P0=0xc0;
& & & & wela=0;
& & & & while(1)
& & & & & & & & {
& & & & & & & & & & & & display(keyscan());
& & & & & & & & }
void display(uchar aa)
& & & & & & & & & & & & dula=1;
& & & & & & & & & & & & P0=table[aa-1];
& & & & & & & & & & & & dula=0;& & & & & & & &
uchar keyscan()
& & & & & & & & & & & & P3=0
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xee:num=1;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xde:num=2;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xbe:num=3;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0x7e:num=4;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & P3=0
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xed:num=5;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xdd:num=6;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xbd:num=7;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0x7d:num=8;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & P3=0
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xeb:num=9;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xdb:num=10;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xbb:num=11;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0x7b:num=12;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & P3=0xf7;
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xe7:num=13;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xd7:num=14;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0xb7:num=15;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & case 0x77:num=16;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
百度上有很多例子。。。。
方框图没法给!!!源码不给,原理图不给!!!!这个虎头蛇尾的问答。。。
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
林志财 发表于
拿来主义那个给你慢慢改吧,改到合适你的
#define uint unsigned int
老兄,我就是改不成才来问的,我本想用一循环右移来使位选在按下一个键后自动右移,以便在第二个数码管显示,但是就是不成功,我不知道该将这个循环右移放在哪?
这是我改的代码,劳烦看看错在哪?
#include&reg52.h&
#include &intrins.h&
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar tema[5];
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x80,0};
uchar num,temp,z,n1=0,n2=0,n3=0,n4=0,h;
void delay(uint z)
& & & & uint x,y;
& & & & for(x=z;x&0;x--)
& & & & & & & & for(y=110;y&0;y--);
uchar keyscan()
& & & & P1=0
& & & & temp=P1;
& & & & temp=temp&0xf0;
& & & & while(temp!=0xf0)
& & & & & & & & delay(5);
& & & & & & & & temp=P1;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & while(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & n1=1;
& & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & case 0xee:num=1;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xde:num=8;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xbe:num=5;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0x7e:num=2;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & }
& & & & P1=0
& & & & temp=P1;
& & & & temp=temp&0xf0;
& & & & while(temp!=0xf0)
& & & & & & & & delay(5);
& & & & & & & & temp=P1;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & while(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & n2=1;
& & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & case 0xed:num=17;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xdd:num=9;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xbd:num=6;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0x7d:num=3;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & }
& & & & P1=0
& & & & temp=P1;
& & & & temp=temp&0xf0;
& & & & while(temp!=0xf0)
& & & & & & & & delay(5);
& & & & & & & & temp=P1;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & while(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & n3=1;
& & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & case 0xeb:num=9;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xdb:num=10;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xbb:num=7;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0x7b:num=4;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & }
& & & & P1=0xf7;
& & & & temp=P1;
& & & & temp=temp&0xf0;
& & & & while(temp!=0xf0)
& & & & & & & & delay(5);
& & & & & & & & temp=P1;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & while(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & n4=0;
& & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & case 0xe7:num=13;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xd7:num=14;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xb7:num=15;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0x77:num=16;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & while(temp!=0xf0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & temp=P1;
& & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & }
void display(uchar wan,uchar qin)
& & & & & & & & dula=1;
& & & & & & & & P0=table[wan-1];
& & & & & & & & dula=0;
& & & & & & & & P0=0
& & & & & & & & wela=1;
& & & & & & & & P0=
& & & & & & & & wela=0;
& & & & & & & & delay(1);
& & & & & & & &
void main()
& & & & uchar b,i=0,n;
& & & & b=0
& & & & num=18;
& & & & while(1)
& & & & & & & & tema=keyscan();
& & & & & & & & n=n1+n2+n3+n4;
& & & & & & & & if(n!=0)
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & & & & & display(tema,b);& & & &
& & & & & & & & & & & & b=_cror_(b,1);
& & & & & & & & & & & & n=0;
& & & & & & & & & & & & i++;& & & &
& & & & & & & & }& & & &
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
助理工程师, 积分 1192, 距离下一级还需 808 积分
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
sbit s1=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchar num,temp,num1,num2,wl1,wl2,wl3,wl4;
void delay(uint z)
& && &&&uint x,y;
& && &&&for(x=z;x&0;x--)
& && && && && & for(y=110;y&0;y--);
void init()
& & & & EA=1;
& & & & EA=1;//开总中断
& & & & EX0=1;//开外部中断0
& & & & TCON=0x01;
& & & & num=17;
& & & & num2=0;
& & & & wl1=0;
& & & & wl2=0;
& & & & wl3=0;
& & & & wl4=0;
void key_num()
& & & & while(flag)
& & & & & & & & P1=0
& & & & & & & & temp=P1;
& & & & & & & & temp=temp&0xf0;
& && &&&while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& && && && &&&delay(5);
& && && && &&&temp=P1;
& && && && &&&temp=temp&0xf0;
& && && && &&&while(temp!=0xf0)
& && && && &&&{
& && && && && && & temp=P1;
& & & & & & & & & & & && && &&&num2++;
& & & & & & & & & & & & & & & & & & & & if(num2==2)
& & & & & & & & & & & & & & & & & & & & wl1=
& & & & & & & & & & & & & & & & & & & & else if(num==3)
& & & & & & & & & & & & & & & & & & & & wl2=
& & & & & & & & & & & & & & & & & & & & else if(num==4)
& & & & & & & & & & & & & & & & & & & & wl3=
& & & & & & & & & & & & & & & & & & & & else if(num==5)
& & & & & & & & & & & & & & & & & & & & wl4=
& & & & & & & & & & & & & & & && &&&else
& & & & & & & & & & & & & & & && &&&num2=0;
& && && && && && & switch(temp)
& && && && && && && &&&{
& && && && && && && && && &&&case 0xee:num=0;
& && && && && && && && && && && && && &
& && && && && && && && && &&&case 0xde:num=1;
& && && && && && && && && && && && && &
& && && && && && && && && &&&case 0xbe:num=2;
& && && && && && && && && && && && && &
& && && && && && && && && &&&case 0x7e:num=3;
& && && && && && && && && && && && && &
& && && && && && && && &}
& && && && && && && &&&while(temp!=0xf0)
& && && && && && && && &{
& && && && && && && && && && &temp=P1;
& && && && && && && && && && &temp=temp&0xf0;
& && && && && && && && &}
& && && && && &}
& && && & }
& & & & & & & & P1=0
& & & & & & & & temp=P1;
& & & & & & & & temp=temp&0xf0;
& && &&&while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& && && && &&&delay(5);
& && && && &&&temp=P1;
& && && && &&&temp=temp&0xf0;
& && && && &&&while(temp!=0xf0)
& && && && &&&{
& && && && && && & temp=P1;
& & & & & & & & & & & && && &&&num2++;
& & & & & & & & & & & & & & & && & if(num2==2)
& & & & & & & & & & & & & & & & & & & & wl1=
& & & & & & & & & & & & & & & & & & & & else if(num==3)
& & & & & & & & & & & & & & & & & & & & wl2=
& & & & & & & & & & & & & & & & & & & & else if(num==4)
& & & & & & & & & & & & & & & & & & & & wl3=
& & & & & & & & & & & & & & & & & & & & else if(num==5)
& & & & & & & & & & & & & & & & & & & & wl4=
& & & & & & & & & & & & & & & && &&&else
& & & & & & & & & & & & & & & && &&&num2=0;
& && && && && && & switch(temp)
& && && && && && && &&&{
& && && && && && && && && &&&case 0xea:num=4;
& && && && && && && && && && && && && &
& && && && && && && && && &&&case 0xda:num=5;
& && && && && && && && && && && && && &
& && && && && && && && && &&&case 0xba:num=6;
& && && && && && && && && && && && && &
& && && && && && && && && &&&case 0x7a:num=7;
& && && && && && && && && && && && && &
& && && && && && && && &}
& && && && && && && &&&while(temp!=0xf0)
& && && && && && && && &{
& && && && && && && && && && &temp=P1;
& && && && && && && && && && &temp=temp&0xf0;
& && && && && && && && &}
& && && && && &}
& && && & }
& & & & & & & & P1=0xf6;
& & & & & & & & temp=P1;
& & & & & & & & temp=temp&0xf0;
& && &&&while(temp!=0xf0)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& && && && &&&delay(5);
& && && && &&&temp=P1;
& && && && &&&temp=temp&0xf0;
& && && && &&&while(temp!=0xf0)
& && && && &&&{
& && && && && && & temp=P1;
& & & & & & & & & & & && && &&&num2++;
& & & & & & & & & & & & & & & && & if(num2==2)
& & & & & & & & & & & & & & & & & & & & wl1=
& & & & & & & & & & & & & & & & & & & & else if(num==3)
& & & & & & & & & & & & & & & & & & & & wl2=
& & & & & & & & & & & & & & & & & & & & else if(num==4)
& & & & & & & & & & & & & & & & & & & & wl3=
& & & & & & & & & & & & & & & & & & & & else if(num==5)
& & & & & & & & & & & & & & & & & & & & wl4=
& & & & & & & & & & & & & & & && &&&else
& & & & & & & & & & & & & & & && &&&num2=0;
& && && && && && & switch(temp)
& && && && && && && &&&{
& && && && && && && && && &&&case 0xee:num=8;
& && && && && && && && && && && && && &
& && && && && && && && && &&&case 0xde:num=9;
& && && && && && && && && && && && && &
& && && && &
& && && && && && && && &}
& && && && && && && &&&while(temp!=0xf0)
& && && && && && && && &{
& && && && && && && && && && &temp=P1;
& && && && && && && && && && &temp=temp&0xf0;
& && && && && && && && &}
& && && && && &}
& && && & }& & & &
& & & & & & & & P2=0x0c;
& & & & & & & & P0=table[wl1];
& & & & & & & & delay(4);& & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & P2=0x08;
& & & & & & & & P0=table[wl2];
& & & & & & & & delay(4);& & & & & & & & & & & &
& & & && &&&P2=0x04;
& & & & & & & & P0=table[wl3];
& & & & & & & & delay(4);& & & & & & & & & & & &
& & & & & & & & P2=0x00;
& & & & & & & & P0=table[wl4];
& & & & & & & & delay(4);
& & & & & & & & & & & &
&&& & & & }
& & & & init();
& & while(1)
& & & & & & & & key_num();
void exter0() interrupt 0
& & & & num1++;
& & & & if(num1%2==1)
& & & & & & & & flag=1;
& & & & & & & & s1=0;& & & &
& & & & else
& & & & flag=0;& & & &
没有测试过你自己看看
扫描二维码,随时随地手机跟帖
技术新星奖章
人才类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
技术奇才奖章
人才类勋章
时间类勋章
湍急之河流
发帖类勋章
精华达人奖章
等级类勋章
时间类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
荣誉元老奖章
等级类勋章
技术高手奖章
人才类勋章
甘甜之泉水
发帖类勋章
精英会员奖章
等级类勋章
奔腾之江水
发帖类勋章
时间类勋章
核心会员奖章
等级类勋章
技术导师奖章
人才类勋章
您需要登录后才可以回帖
热门推荐 /6}

我要回帖

更多关于 4x4矩阵键盘扫描原理 的文章

更多推荐

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

点击添加站长微信