三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 459|回复: 0
打印 上一主题 下一主题

tm1638b-tm1638b.c源码分析

[复制链接]

1657

主题

1684

帖子

5684

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5684
跳转到指定楼层
楼主
发表于 2017-6-12 15:13:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件名称:tm1638b.c
文件路径:contiki-3.0\examples\sm14z2538\TM1638B
源码分析:
  1. //引用系统文件
  2. #include "contiki.h"
  3. //引用驱动文件
  4. #include "dev/TM1638-arch.h"
  5. //引用输入输出接口
  6. #include <stdio.h> /* For printf() */
  7. //数码管段码
  8. const unsigned char CathodeCode[ 0x11 ] = {  0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F, 0X77, 0X7C, 0X39, 0X5E, 0X79, 0X71, 0XFF  };
  9. //声明一个进程
  10. /*---------------------------------------------------------------------------*/
  11. PROCESS(TM1638B_process, "TM1638B");
  12. //系统初始化的时候启动这个进程
  13. AUTOSTART_PROCESSES(&TM1638B_process);
  14. //进程实现
  15. /*---------------------------------------------------------------------------*/
  16. PROCESS_THREAD(TM1638B_process, ev, data)
  17. {
  18.   //进程开始
  19.   PROCESS_BEGIN();
  20.   //定义变量
  21.   unsigned int i,j,k;
  22.   unsigned int Key=0;
  23. //tm1638初始化
  24.   TM1638_init();
  25. //开显示
  26.   Write_COM( DISPLAY_ON );        /* 开显示 */
  27.   Write_COM( ADDRESS_FIX_MODE );  /* 地址固定模式 */
  28.   Write_COM( SET_PLUS_WIDTH4 );   //设置亮度
  29.   //清空显示内存
  30.   dispclear_led();
  31.   //段码显示
  32.   for (j=0;j<17;j++)
  33.   {
  34.      dispclear_B();
  35.      for(i=0;i<8;i++)
  36.        Write_DATA( TM1638_DIG0+i*2, CathodeCode[j]);            

  37.      for(k=0;k<1000;k++)
  38.         delay_us(1000);
  39.   }
  40.   for(j=0;j<8;j++)
  41.   {
  42.      display_led(TM1638_DIG0+2*j+1,1);
  43.      for(k=0;k<1000;k++)
  44.         delay_us(1000);
  45.   }
  46.   dispclear_led();
  47.   //按键值显示
  48.   while(1) {
  49.      Key=Read_key_B();

  50.      if(Key > 0)
  51.      {
  52.         dispclear_B();
  53.         dispclear_led();
  54.         Write_DATA( TM1638_DIG0+12, CathodeCode[Key/10]);
  55.         Write_DATA( TM1638_DIG0+14, CathodeCode[Key%10]);
  56.         Key=0;
  57.      }     
  58.      
  59.   }
  60.   //进程结束
  61.   PROCESS_END();
  62.   /*测试*/
  63. }
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2026-3-13 00:06 , Processed in 0.022338 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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