历史上的今天
今天是:2024年12月06日(星期五)
2019年12月06日 | zlg7289键盘和数码管驱动程序+应用电路
2019-12-06 来源:51hei
zlg7289应用电路图:
zlg7289资料:

zlg7289矩阵键盘的应用:

源程序:
/*该程序实现的功能是在小键盘按键,在LED上显示所按的键的数值*/
#include #include "hardware.h" #include "zlg7289.h" #define SDIO_CTRLIO 0X4 //PF2 #define SDIOOUT() (PDATF&=(~SDIO_CTRLIO)); #define SDIOIN() (PDATF|=SDIO_CTRLIO); unsigned char keymap[]={ 7,4,1,0,10,0,0,0,8,5, 2,17,11,0,0,0,9,6,3,16, 12,13,0,0,14,0,15,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; //键盘映射表 void sendsiodata(unsigned char data) { I_ISPC=0x10; //中断挂起清零寄存器 清除未响应中断请求([4] INT_SIO = 1 为清除) SIODAT=data; //给SIO数据寄存器赋值 SIOCON|=(0x1<<3); //SIO控制寄存器澹([3] = 1 为 SIO开始) while(!(INTPND&0x10)); //中断挂起寄存器([4] INT_SIO = 1 为请求) I_ISPC=0x10; } unsigned char readsiodata() { SDIOIN(); //端口F控制寄存器的PF2设置成Input sendsiodata(0); SDIOOUT(); //端口F控制寄存器的PF2设置成Output return SIODAT; //返回SIO数据寄存器的值 } char getkey() { char key,mykey; INTMSK|=(0X1<<26); while(PDATG&0x10); ZLG7289_ENABLE(); sendsiodata(ZLG7289_CMD_RDKEY); mykey=readsiodata(); //mykey的值为该键在键盘影射表中的位子 ZLG7289_DISABLE(); INTMSK&=(~0X1<<26); key=keymap[mykey]; //查表得出该键的值 printf("mykey is %dnreturn key is %dn",mykey,key); return key; } static void Delay(int t) //延时函数 { int i; for(;t>0;t--) for(i=0;i<400;i++); } int led_showdata(unsigned int a) { int i=0; INTMSK|=(0X1<<26); ZLG7289_ENABLE(); sendsiodata(ZLG7289_CMD_RST); //发送键盘的绝对值到SIODAT Delay(20); a%=100000000; //为了避免a的值超出8 位数,如果超出8 位则将超出部分舍去 //利用ZLG7289 将a 显示到LED上 for(i=0;i<8 && a !=0 ;i++) { sendsiodata(ZLG7289_CMD_DATA1|i); sendsiodata(a%10); a/=10; Delay(10); } for(;i<8;i++) { sendsiodata(ZLG7289_CMD_DATA0|i); sendsiodata(0xf); Delay(10); } ZLG7289_DISABLE(); INTMSK&=(~0X1<<26); return 0; } int main() { printf("inputEnterExit!n"); while( (i = getkey()) != 15) //当小键盘按到回车键时退出,其他情况则将键盘值显示到LED上 { led_showdata(i); Delay(2000); } return 0; }
下一篇:51单片机直流电机调速源程序
史海拾趣
|
FLYSUN-ARM9200开发板由北京飞旭科技有限公司设计开发,主处理器基于Atmel公司的AT91RM9200 ARM处理器。AT91RM9200内嵌ARM920T核,带有全性能的MMU,具有高性能、低功耗、低成本、小体积等优点,广泛地应用在各种嵌入式系统中,如通信、军事、航空 ...… 查看全部问答> |
|
我用vs2005定制了一个wince6.0的内核。想把它写入到omap3530的sd卡上,让这个系统启动。网上看了一些类似的问题,不得法。请朋友们帮帮忙,说说该怎么做。本人菜鸟,步骤解释的越详细越好。谢谢。… 查看全部问答> |
|
要点亮LED,但出错,认为P0没有定义,multisim10中C51的头文件怎么写? void main() { /* Insert your code here. */ P0=1; } 出错信息 Multisim - 2008-09-23 20:49:45 -------------------------- ...… 查看全部问答> |
|
我最近用LSD-TEST430F22X4学习套件,该套件没有外部晶振,然后就接了一个普通的32K晶振,感觉晶振没起振,想请教一下关于该套件的外部晶振问题… 查看全部问答> |
|
前几天用1138板还是好的,昨晚下载了几个程序后就出问题了,弹出下面这个对话框: 我以为是芯片锁了,就用ZLG的软件解锁,之后连驱动都安装不了,请问是什么原因呢?是Ft223d坏了,还是1138片子出问题了呢? 请大家帮帮忙,谢谢了! [ 本帖 ...… 查看全部问答> |




