1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include "intrins.h" #define uchar unsigned char #define uint unsigned int //¶¨Òå¿ØÖÆ¶Ë¿Ú sbit DIO =P0^2; sbit CLK =P0^1; sbit STB =P0^0; uchar const CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xef,0x6f}; uchar KEY[4]={0}; void send_8bit(uchar dat) { uchar i; for(i=0;i<8;i++) { if(dat&0x01) DIO=1; else DIO=0; CLK=0; // CLK=1; dat=dat>>1; } } void command(uchar com) { STB=1; STB=0; send_8bit(com); } void read_key() { uchar i,j; command(0x42); //¶Á¼üÅÌÃüÁî DIO=1; //½«DIOÖÃ¸ß for(j=0;j<5;j++) for(i=0;i<8;i++) { KEY[j]=KEY[j]>>1; CLK=0; CLK=1; if(DIO) KEY[j]=KEY[j]|0X80; } STB=1; } void display() { uchar i; command(0x03); command(0x40); command(0xc0); for(i=0;i<14;i++) { send_8bit(CODE[i]); send_8bit(0); } command(0x8F); STB=1; } void key_process() { //ÓÉÓû§±àд } void main() { display(); while(1) { read_key(); key_process(); } } |
|
相关推荐
1个回答
|
|
){DIO=1;}else{DIO=0;} //判断最低位是1还是0 CLK=1; _nop_(); CLK=0; dat=dat>>1; //将数据右移一位 } } void send(uchar addr,uchar dat){ STB=0; //片选使能延时 DIO=0; CLK=0; send_8bit(addr|0xc0); //先发送地址和写入命令 send_8bit(dat); //再发送要写入的数据 STB=1; //禁止片选延时 } void init(){ send(0x00,0x01); //数码管控制寄存器,设置自动增量和启用掉电保存 send(0x01,0x00); //按键扫描存储器,设置按键输出模式为矩阵输出 send(0x02,0x07); //LED控制寄存器,点亮所有LED } void display(){ uchar i; for(i=0;i<4;i++){ send(i*2,KEY[i]); //分别在地址为0、2、4、6的位置写入对应的数据 send(i*2+1,0x00); //清除小数点 } } void keyscan(){ uchar temp=0; uchar i; send(0x44,0x01); //按键扫描开始 send(0x44,0x00); //按键扫描禁止,等待读取按键数据 for(i=0;i<4;i++){ send(i*2+1,0x0f); //在地址为1、3、5、7的位置设置扫描掩码,只有对应位置才能读取按键数据 temp=P0&0x0f; //读取P0的低四位数据,并与扫描掩码取与 KEY[i]=temp^0x0f; //将读取到的数据取反,得到真实按键值 } } void main() { init(); while(1){ keyscan(); display(); } }
|
|
|
|
只有小组成员才能发言,加入小组>>
795 浏览 0 评论
1154 浏览 1 评论
2530 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2713 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1077浏览 3评论
195浏览 2评论
461浏览 2评论
374浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 14:37 , Processed in 1.113722 second(s), Total 81, Slave 61 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号