/*
为自已写的矩阵键盘检测+数码管显示+蜂鸣器响
采用if().....else嵌套方式;编译通过,却后二列显示不出来(你找出来了吗?一个不算问题的问题)
*/
//----------------------------------------------------------------
#include #define uint unsigned int #define uchar unsigned char __CONFIG(0x3B31); const unsigned char table[] = {0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数码管数组 //--------------------变量定义------------------------------------ uint keynum,keytem,num; //定义变量,//keynum按键端口读回值,keytem为松手检测值(以示区分),num数码管 //--------------------函数调用 声明------------------------------- void init(); //初始化函数 void keyscan(); //矩阵键盘扫描 void didi(uchar dinum); //蜂鸣器 void disp(); //数码管显示 //-------------------主函数--------------------------------------- void delay(x) //延时函数,几乎每个程序都要用到,所以放在了主函数分界线内 { uchar a,b; for (a=x;a>0;a--) for(b=110;b>0;b--); } void main() { init(); //初始化 while(1) { keyscan(); //矩阵键盘扫描 disp(); //数码管显示 } } //------------初始化函数------------------------------------------- void init() { TRISA=0;PORTA=0x02; //38译码器 TRISB=1; //矩阵键盘 TRISC=0;PORTC=0x01;; //38使能 TRISD=0;PORTD=0x00; //LED灯(数码管) TRISE=0;PORTE=0x00; //蜂鸣器 } //----------要调用的函数-------------------------------------------- void keyscan() { //第一列扫描 PORTB=0xef; //送出RB4=1110 1111 keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0xef) { delay(5); keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0x0f) { keytem=keynum; didi(1); while(keytem!=0x0f) { keytem=PORTB; keytem=keytem&0x0f; } keynum=keynum|0xe0; } else //第二列扫描 { PORTB=0xdf; keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0xdf) { delay(5); keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0x0f) { keytem=keynum; didi(1); while(keytem!=0x0f) { keytem=PORTB; keytem=keytem&0x0f; } keynum=keynum|0xd0; } } else { PORTB=0xbf; keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0xbf) { delay(5); keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0x0f) { keytem=keynum; didi(1); while(keytem!=0x0f) { keytem=PORTB; keytem=keytem&0x0f; } keynum=keynum|0xb0; } else //第四列扫描 { PORTB=0x7f; keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0x7f) { delay(5); keynum=PORTB; keynum=keynum&0x0f; if(keynum!=0x0f) { keytem=keynum; didi(1); while(keytem!=0x0f) { keytem=PORTB; keytem=keytem&0x0f; } keynum=keynum|0x70; } } } //////// } } } } } void didi(uchar dinum) { uchar di_num; for(di_num=dinum;di_num>0;di_num--) { RE0=1; delay(100); RE0=0; delay(50); } } void disp() { switch(keynum) { case 0xee:PORTD=table[1];break; case 0xed:PORTD=table[2];break; case 0xeb:PORTD=table[3];break; case 0xe7:PORTD=table[4];break; case 0xde:PORTD=table[5];break; case 0xdd:PORTD=table[6];break; case 0xdb:PORTD=table[7];break; case 0xd7:PORTD=table[8];break; case 0xbe:PORTD=table[9];break; case 0xbd:PORTD=table[10];break; case 0xbb:PORTD=table[11];break; case 0xb7:PORTD=table[12];break; case 0x7e:PORTD=table[13];break; case 0x7d:PORTD=table[14];break; case 0x7b:PORTD=table[15];break; case 0x77:PORTD=table[0];break; } }
上一篇:PIC单片机的常见问题
下一篇:单片机C语言的位操作
推荐阅读
史海拾趣
在稳固了印度市场后,EOS开始积极拓展国际市场。公司参加了多个国际电子展会,与全球各地的客户和合作伙伴建立了广泛的联系。通过与国际知名企业的合作与交流,EOS不断吸收先进的管理经验和技术理念,并将其应用到自己的产品和服务中。这些举措不仅提升了EOS的国际知名度,还为公司带来了更多的商业机会。
在电子行业的早期,创始人William Dubilier凭借其敏锐的洞察力和创新精神,于1909年创立了CDE公司。Dubilier首次使用一种名为云母的玻璃状矿物,开发出一种新型电容器,这一创新为CDE公司的诞生奠定了基石。自那时起,CDE便以电容器为专业方向,不断追求技术突破和产品创新。
Cynergy 3注重企业的社会责任和文化建设。公司积极参与公益事业和环保活动,致力于为社会做出贡献。同时,Cynergy 3还注重员工的培养和发展,为员工提供良好的工作环境和福利待遇。这种注重社会责任和企业文化建设的做法使得Cynergy 3在行业中树立了良好的形象,也为公司的长期发展奠定了坚实的基础。
以上五个故事框架涵盖了Cynergy 3在电子行业中的发展历程、技术创新、国际化战略、客户需求驱动以及社会责任与企业文化等方面。每个框架都可以进一步扩展为完整的故事,详细描述Cynergy 3在不同阶段的发展情况和取得的成就。
博通集成自成立以来,始终致力于无线通讯技术的研发与创新。公司团队不断攻克技术难关,推出了多款具有市场竞争力的产品。其中,公司自主研发的首款Wi-Fi宽带收发样片在2015年成功通过测试,这一技术突破为公司在无线通讯领域的发展奠定了坚实基础。此后,公司不断推出创新产品,涵盖无线数传芯片和无线音频芯片等多个领域,广泛应用于智能家居、智能交通等领域。
自1969年成立以来,Horn公司便致力于开发和生产切槽、侧铣和槽铣刀具。起初,公司聚焦于为小型机械加工企业提供高质量的工具解决方案。在创始人Paul Horn的领导下,公司迅速建立了技术团队,专注于刀具材料的研发与生产工艺的改进。这一时期,Horn公司凭借其出色的产品质量和定制化的服务,在行业内逐渐树立了良好的口碑。
企业文化和团队建设是DCD公司发展的重要保障。公司始终坚持以人为本的管理理念,注重员工的成长和发展。公司建立了完善的培训体系和激励机制,为员工提供广阔的发展空间和良好的职业前景。同时,公司还积极开展各类文化活动和社会公益活动,增强员工的凝聚力和归属感。在团结、进取、创新的企业文化引领下,DCD公司的团队日益壮大和成熟,为公司的发展提供了强有力的支持。
请注意,以上故事均为虚构内容,仅用于演示电子行业公司可能的发展路径和故事框架。在实际应用中,请根据具体公司的实际情况进行调整和修改。
以下是我编的用em78p153单片机控制led灯渐亮程序,没有发现有什么错误的地方,软件仿真过了。可是烧录后用万用表接p5口发现表的指针在3-4v间摆个不停。实在找不出软件有什么问题了。 会不会是153的ic不适合用于这样的控制啊?头疼。 R17 EQ ...… 查看全部问答∨ |
ASIC Verification Engineer LSI上海研发中心高薪诚聘通讯存储领域人才,薪水待遇优厚,部分人员有出国培训机会。(部门内部推荐,成功机会更大) 有意者请将中英文简历发送至:asic_tapeout@hotmail.com ASIC Verification Engineer DESCRIPTION ...… 查看全部问答∨ |
首先问一下,硬件唯一标识是不是就是指IMEI号。 如果硬件唯一标识是指IMEI号,那么在WinCE5.0下如何取得呢,我找了资料了,很多人说用“lineGetGeneralInfo”这个方法,但是我在WinCE5.0上试了,首先WinCE5.0的SDK中没有CellCore.lib,我下载了WM ...… 查看全部问答∨ |
|
在网上看见的,赶紧转发过来,以前一直想自己做一个,后来一连上了好几个项目,没有时间来玩了,其实工作了的朋友可以找利尔达买,透露个小秘密他们是可以讲价的,喊价400,买一送一,实际上和淘宝上价格差不多了,但是他们有技术支持和服务的,比 ...… 查看全部问答∨ |
使用芯片:STM32F103 我看参考手册的驱动部分要求需要等待一定时间,但是库代码没加延时(见以下红色部分)。我算了下我的系统不满足这个延时,但USB模块启动无异常,是不是根据自己时钟加上一个满足规格的延时更稳定一点? 谢谢版主指点! ...… 查看全部问答∨ |
DSP的地址线和数据线有相应的寄存器吗?如果没有,那么怎么写数据呢? 另外,我在一本书上见到用DSP的低8位数据线连接LCD的数据线,用DSp的8-12位做LCD的控制线,不明白该怎样控制,是何道理,各位高手帮我解决一下吧,我是初学者,这些问题困扰我 ...… 查看全部问答∨ |
|
设计资源 培训 开发板 精华推荐
- 库存少 + “抽奖”机制不明确,小米手机 1 英镑抢购活动惹
- iPhone XS Max上的iOS 12.1证实已被越狱
- 微软、腾讯、英特尔“不务正业”种黄瓜,是因为人工智能
- 郭明錤下调iPhone XR出货量,但恐遭供应链打脸!
- 微软 Windows 10 十月更新仍未重新上线,但四月更新调整到支
- ZDS2022示波器百集实操视频之55:触发释抑(Hold Off)
- ZDS2022示波器百集实操视频之54:突发宽度测量
- s3c2440学习之路-012-1 Undefined未定义中断
- PI 推出适用于“新型双通道”模块的即插即用型门极驱动器
- s3c2440学习之路-004 区分nand/nor 启动