完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`代码:
#include #define uchar unsigned char #define uint unsigned int __CONFIG(HS&WDTDIS&LVPDIS); uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void init() { TRISC=0xf0; TRISD=0; PORTD=0; } void presskey() { PORTC=0xfe; if((PORTC&0xf0)==0xe0)// K1按下,显示0 PORTD=tab[0]; if((PORTC&0xf0)==0xd0)// K2按下,显示1 PORTD=tab[1]; if((PORTC&0xf0)==0xb0) PORTD=tab[2]; if((PORTC&0xf0)==0x70) PORTD=tab[3]; PORTC=0xfd; if((PORTC&0xf0)==0xe0) PORTD=tab[4]; if((PORTC&0xf0)==0xd0) PORTD=tab[5]; if((PORTC&0xf0)==0xb0) PORTD=tab[6]; if((PORTC&0xf0)==0x70) PORTD=tab[7]; PORTC=0xfb; if((PORTC&0xf0)==0xe0) PORTD=tab[8]; if((PORTC&0xf0)==0xd0) PORTD=tab[9]; if((PORTC&0xf0)==0xb0) PORTD=tab[10]; if((PORTC&0xf0)==0x70) PORTD=tab[11]; PORTC=0xf7; if((PORTC&0xf0)==0xe0) PORTD=tab[12]; if((PORTC&0xf0)==0xd0) PORTD=tab[13]; if((PORTC&0xf0)==0xb0) PORTD=tab[14]; if((PORTC&0xf0)==0x70) PORTD=tab[15]; } void main() { init(); while(1) { presskey(); } } 原理图:见图片 ` |
|
相关推荐
|
|
我觉的你代码有错,一下代码仅作参考
uchar temp; PORTC=0xfe; temp=PORTC; temp=temp&0xf0; if(temp!=0xf0)//判断是否有键按下 有键按下temp的值不会等于0xf0 { temp=temp|0x0e;//读出按键值 } switch(temp) { case 0xee:xxxxxx;break;//第一个键按下 } |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2084 浏览 1 评论
3629 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2336 浏览 2 评论
2763 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4027 浏览 5 评论
973浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6360浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 19:30 , Processed in 0.614963 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号