5159|7

2057

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

[TI首届低功耗设计大赛]+扩展板1+74hc595数码管电位器扩展板+595驱动显示4位数码管 [复制链接]

本帖最后由 IC爬虫 于 2014-9-28 18:03 编辑

发了这几次FR5969的寄存器和库函数版本的片上外设的试验例程貌似没有什么人关注
这里先给我做的74HC595+4位数码管+电位器的launchpad写点驱动,这个扩展板可以试验芯片内的ADC转换试验和片内的RTC试验,这个后续会更新。
这个扩展板最基本的就是需要利用74hc595驱动四位的数码管,至于驱动的原理这里就不做多说的了。

我设置MCLK=SMCLK=8mhz,这样速度快一点,扫描数码管不会出现延迟。
简单显示数字1234

上几张图:





  1. /*******************************************************************************
  2. //  MSP430FR59x Demo -驱动74HC595显示1234
  3. //
  4. //  Description: 数码管显示数字1234
  5. //  ACLK = n/a, MCLK = SMCLK = 8MHZ
  6. //
  7. //           MSP430FR5969
  8. //         ---------------
  9. //     /|\|               |
  10. //      | |               |
  11. //      --|RST            |
  12. //        |               |
  13. //        |           P2.2|
  14. // SRCLK--|P3.4       P2.4|
  15. //   SER--|P3.5       P2.5|
  16. //  RCLK--|P3.6       P4.3|
  17. //
  18. //   IC爬虫   QQ:1394024051
  19. //   
  20. //   Sep 2014
  21. //   Built with IAR Embedded Workbench V6.1
  22. *******************************************************************************/
  23. #include <msp430.h>

  24. #define SER   ( 1 << 5 )    //也是所谓的DS
  25. #define SRCLK ( 1 << 4 )    //也是所谓的SHCP
  26. #define RCLK  ( 1 << 6 )    //也是所谓的STCP

  27. long resultend1=1234;       //需要显示的数字
  28. unsigned char ge,shi,bai,qian;
  29. /*******************************************************************************
  30. *函数名 :delay_1ms
  31. *描述   :延时函数
  32. *输入   :无
  33. *输出   :无
  34. *调用   :内部调用
  35. ******************************************************************************/
  36. void delay_1ms(void)
  37. {
  38.   unsigned int i;
  39.   for (i=0;i<1000;i++);
  40. }
  41. /*******************************************************************************
  42. *函数名 :delay_nms
  43. *描述   :延时函数
  44. *输入   :n -- 延时n个ms
  45. *输出   :无
  46. *调用   :内部调用
  47. ******************************************************************************/
  48. void delay_nms(unsigned int n)
  49. {
  50.   unsigned int i=0;
  51.   for (i=0;i<n;i++)
  52.   delay_1ms();
  53. }
  54. unsigned char table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 };
  55. /*******************************************************************************
  56. *函数名 :Write595
  57. *描述   :74HC595写入数字函数
  58. *输入   :无
  59. *输出   :无
  60. *调用   :内部调用
  61. ******************************************************************************/
  62. void Write595(unsigned char data)
  63. {
  64.   unsigned char i;
  65.   P3OUT &= ~RCLK;
  66.   for( i=0;i<8;i++ )
  67.   {
  68.     if(data&0x80)
  69.     {
  70.       P3OUT |= SER;
  71.     }
  72.     else
  73.     {
  74.       P3OUT &= ~SER;
  75.     }
  76.     P3OUT &= ~SRCLK;
  77.     P3OUT |= SRCLK;
  78.     data <<= 1;
  79.   }
  80.   P3OUT |= RCLK;
  81. }
  82. /*******************************************************************************
  83. *函数名 :main
  84. *描述   :主函数
  85. *输入   :无
  86. *输出   :无
  87. *调用   :
  88. ******************************************************************************/
  89. void main(void)
  90. {
  91.   WDTCTL = WDTPW + WDTHOLD;    // Stop WDT
  92.                      
  93.   P2DIR |= (BIT2|BIT4|BIT5);   // P2.2,P2.4,P2.5设置为输出端口
  94.   P4DIR |= BIT3;               // P4.3设置为输出端口

  95.   P3DIR |= (BIT4|BIT5|BIT6);   // P3.4,P3.5,P3.6设置为输出端口
  96.   
  97.   PJSEL0 |= BIT4 | BIT5;       // For XT1
  98.   
  99.   PM5CTL0 &= ~LOCKLPM5;        // 关闭上电端口默认输出高阻抗的功能,使能上电保持起始设置
  100.   
  101.   /***************************系统时钟设置**************************************/
  102.   
  103.   CSCTL0_H = CSKEY >> 8;                    // Unlock CS registers
  104.   CSCTL1 = DCOFSEL_3;                       // Set DCO to 8MHz
  105.   CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK;
  106.   CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;     // MCLK = SMCLK = 1MHz
  107.   CSCTL4 &= ~LFXTOFF;                       // Enable LFXT1
  108.     do
  109.   {
  110.     CSCTL5 &= ~LFXTOFFG;                    // Clear XT1 fault flag
  111.     SFRIFG1 &= ~OFIFG;
  112.   }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
  113.   CSCTL0_H = 0;                             // Lock CS registers
  114.   /*****************************************************************************/
  115.   

  116.   while(1)
  117.   {
  118.     qian = resultend1/1000;    //千位
  119.     bai = resultend1/100%10;   //百位
  120.     shi = resultend1/10%10;    //十位
  121.     ge = resultend1%10;        //个位
  122.    
  123.     P2OUT |= (( 1 << 2 )|(1<<4)|(1<<5));
  124.     P4OUT |= (1<<3);
  125.     Write595(table[ge]);
  126.     P2OUT &= ~( 1 << 5 );
  127.     delay_nms(1);

  128.     P2OUT |= (( 1 << 2 )|(1<<4)|(1<<5));
  129.     P4OUT |= (1<<3);
  130.     Write595(table[shi]);
  131.     P4OUT &= ~( 1 << 3 );
  132.     delay_nms(1);

  133.     P2OUT |= (( 1 << 2 )|(1<<4)|(1<<5));
  134.     P4OUT |= (1<<3);
  135.     Write595(table[bai]);
  136.     P2OUT &= ~( 1 << 4 );
  137.     delay_nms(1);

  138.     P2OUT |= (( 1 << 2 )|(1<<4)|(1<<5));
  139.     P4OUT |= (1<<3);
  140.     Write595(table[qian]);
  141.     P2OUT &= ~( 1 << 2 );
  142.     delay_nms(1);
  143.   }
  144. }
复制代码
sn74hc595驱动数码管.rar (1.45 KB, 下载次数: 8, 售价: 2 分芯积分)



最新回复

直角不好。  详情 回复 发表于 2014-9-30 23:46
 
点赞 关注(2)

回复
举报

391

帖子

1

TA的资源

一粒金砂(高级)

沙发
 
= = 讨厌数码管,刚弄完一个485通信模块,就用了595驱动数码管,用液晶多好看,数码管看起来一点都不爽。。。

点评

数码管也挺好看的啊!液晶的后续会弄出来  详情 回复 发表于 2014-9-29 11:15
 
个人签名尽善尽美
 

回复

440

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
  楼主为什么走直线呢?

点评

直线比较规整  详情 回复 发表于 2014-9-29 11:17
除非是高频甚至是超高频的,走直角也没什么影响的,当然45度角可能好看一点,不过没必要纠结这个  详情 回复 发表于 2014-9-28 18:59
 
个人签名
I like you, but just like you !
纵然万劫不复,纵然相思入骨,
我也待你眉眼如初,岁月如故!
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

4
 
High哥 发表于 2014-9-28 18:35
楼主为什么走直线呢?

除非是高频甚至是超高频的,走直角也没什么影响的,当然45度角可能好看一点,不过没必要纠结这个
 
 
 

回复

2057

帖子

0

TA的资源

五彩晶圆(初级)

5
 
hh376158101 发表于 2014-9-28 18:16
= = 讨厌数码管,刚弄完一个485通信模块,就用了595驱动数码管,用液晶多好看,数码管看起来一点都 ...

数码管也挺好看的啊!液晶的后续会弄出来
 
 
 

回复

2057

帖子

0

TA的资源

五彩晶圆(初级)

6
 
High哥 发表于 2014-9-28 18:35
楼主为什么走直线呢?

直线比较规整
 
 
 

回复

450

帖子

43

TA的资源

一粒金砂(高级)

7
 
我以前还见过曲线、弧线、波浪线的走法,只是连通而已
 
个人签名一心一意,精益求精
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

8
 
直角不好。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表