找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6816|回复: 3
打印 上一主题 下一主题
收起左侧

zlg7289键盘和数码管驱动程序+应用电路+资料下载

[复制链接]
跳转到指定楼层
楼主
zlg7289应用电路图:

zlg7289资料:


zlg7289矩阵键盘的应用:



源程序:
  1. /*该程序实现的功能是在小键盘按键,在LED上显示所按的键的数值*/
  2. #include <stdio.h>
  3. #include "hardware.h"
  4. #include "zlg7289.h"
  5. #define SDIO_CTRLIO      0X4  //PF2
  6. #define SDIOOUT()  (PDATF&=(~SDIO_CTRLIO));
  7. #define SDIOIN()   (PDATF|=SDIO_CTRLIO);

  8. unsigned char keymap[]={  7,4,1,0,10,0,0,0,8,5,
  9. 2,17,11,0,0,0,9,6,3,16,
  10. 12,13,0,0,14,0,15,0,0,0,
  11. 0,0,0,0,0, 0,0,0,0,0,
  12.                               0,0,0,0,0, 0,0,0,0,0,
  13. 0,0,0,0,0, 0,0,0,0,0,
  14. 0,0,0,0
  15. };        //键盘映射表


  16. void sendsiodata(unsigned char data)
  17. {
  18. I_ISPC=0x10;         //中断挂起清零寄存器 清除未响应中断请求([4] INT_SIO = 1 为清除)
  19. SIODAT=data;        //给SIO数据寄存器赋值
  20. SIOCON|=(0x1<<3);        //SIO控制寄存器澹([3] = 1 为 SIO开始)
  21. while(!(INTPND&0x10));        //中断挂起寄存器([4] INT_SIO = 1 为请求)
  22. I_ISPC=0x10;
  23. }

  24. unsigned char readsiodata()
  25. {
  26. SDIOIN();        //端口F控制寄存器的PF2设置成Input
  27. sendsiodata(0);        
  28. SDIOOUT();        //端口F控制寄存器的PF2设置成Output
  29. return SIODAT;        //返回SIO数据寄存器的值
  30. }

  31. char getkey()
  32. {
  33. char key,mykey;
  34. INTMSK|=(0X1<<26);

  35. while(PDATG&0x10);

  36. ZLG7289_ENABLE();
  37. sendsiodata(ZLG7289_CMD_RDKEY);
  38. mykey=readsiodata();        //mykey的值为该键在键盘影射表中的位子
  39. ZLG7289_DISABLE();
  40. INTMSK&=(~0X1<<26);
  41. key=keymap[mykey];         //查表得出该键的值
  42. printf("mykey is %d\nreturn key is %d\n",mykey,key);
  43. return key;
  44. }

  45. static void Delay(int t)         //延时函数
  46. {
  47.         int i;
  48.         for(;t>0;t--)
  49.                 for(i=0;i<400;i++);
  50. }

  51. int led_showdata(unsigned int a)
  52. {
  53. int i=0;
  54. INTMSK|=(0X1<<26);
  55. ZLG7289_ENABLE();
  56. sendsiodata(ZLG7289_CMD_RST);         //发送键盘的绝对值到SIODAT
  57. Delay(20);

  58. a%=100000000;         //为了避免a的值超出8 位数,如果超出8 位则将超出部分舍去
  59. //利用ZLG7289 将a 显示到LED上
  60. for(i=0;i<8 && a !=0 ;i++)
  61. {
  62. sendsiodata(ZLG7289_CMD_DATA1|i);
  63. sendsiodata(a%10);
  64. a/=10;
  65. Delay(10);
  66. }
  67. for(;i<8;i++)
  68. {
  69. sendsiodata(ZLG7289_CMD_DATA0|i);
  70. sendsiodata(0xf);
  71. Delay(10);
  72. }

  73. ZLG7289_DISABLE();
  74. INTMSK&=(~0X1<<26);
  75. return 0;
  76. }

  77. int main()
  78. {
  79. printf("inputEnterExit!\n");
  80. while( (i = getkey()) != 15)        //当小键盘按到回车键时退出,其他情况则将键盘值显示到LED上
  81. {
  82. led_showdata(i);
  83. Delay(2000);
  84. }
  85. return 0;
  86. }
复制代码

所有资料下载:
zlg7289键盘加数码管驱动程序及资料.rar (1.42 MB, 下载次数: 99)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:64765 发表于 2019-12-5 15:51 | 只看该作者
学习了,谢谢分享。
回复

使用道具 举报

板凳
ID:64765 发表于 2020-2-3 20:43 | 只看该作者
正好需要此资料,雪中送炭,谢了。
回复

使用道具 举报

地板
ID:686739 发表于 2020-2-5 09:45 来自手机 | 只看该作者
学习一下,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表