2131|0

9792

帖子

24

TA的资源

版主

楼主
 

msp430 数码管程序,附电路图 [复制链接]

本帖最后由 littleshrimp 于 2014-7-23 16:28 编辑

新写的MSP430g2231数码管程序,附上原理图。


  1. #include "msp430.h"
  2. #include <stdint.h>
  3. #include "led.h"

  4. uint16_t t = 0,h = 0;
  5. uint32_t i = 0;;
  6. int main( void )
  7. {
  8.   // Stop watchdog timer to prevent time out reset
  9.   WDTCTL = WDTPW + WDTHOLD;
  10.   LED_PORT_INIT();
  11.   while(1)
  12.   {  
  13.     if(i++%100==0)
  14.     {
  15.       setValue(t++,h++,0);
  16.     }
  17.     ledDisplay();
  18.     //    ledClearPartNumberValue();//消除残影
  19.     __delay_cycles(500);
  20.   }
  21. }
复制代码
  1. #include "led.h"
  2. uint8_t fseg[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  3. uint16_t tube1,tube2;
  4. uint8_t ledTwinkle = 0;//LED是否闪烁
  5. uint8_t ledTwinkleFlag = 0;//LED闪烁标志
  6. uint8_t showLed = 1;//LED是否显示
  7. uint8_t ledUnitCount = 1;//LED显示单元
  8. uint8_t displayUnitValue = 0;//LED单元数值
  9. void delay_us(uint16_t us)
  10. {
  11. }
  12. void setValue(uint16_t t,uint16_t h,uint8_t twinkle)
  13. {
  14.   ledTwinkle = twinkle;
  15.   tube1 = t;
  16.   tube2 = h;
  17. }
  18. void putByte(uint8_t b)
  19. {
  20.   uint8_t i;
  21.   for(i=0;i<8;i++)
  22.   {
  23.     if(b&0x080)
  24.     {
  25.       DIO_H;
  26.     }
  27.     else
  28.     {
  29.       DIO_L;
  30.     }
  31.     b<<=1;
  32.     delay_us(1);
  33.     SCLK_H;
  34.     delay_us(1);
  35.     SCLK_L;
  36.     delay_us(1);
  37.   }
  38. }
  39. void show(void)
  40. {
  41.   RCLK_H;
  42.   delay_us(1);
  43.   RCLK_L;
  44.   delay_us(1);
  45. }
  46. void putNumber(uint8_t num,uint8_t bit)
  47. {
  48.   putByte(~(1<<(7-bit)));
  49.   putByte(fseg[num]|((bit == 2 || bit==6 )?0x80:0x00));
  50.   show();
  51. }
  52. void refurbish(void)
  53. {
  54.   
  55. }

  56. //清除残影
  57. void ledClearPartNumberValue(void)
  58. {
  59.   putByte(0);
  60.   putByte(0);
  61.   show();
  62. }
  63. //设置小数点
  64. void ledSetPartDotValue(uint8_t dot)
  65. {
  66.   
  67. }
  68. //设置显示单元
  69. void ledSetUnit(uint8_t unit)
  70. {
  71.   switch(unit)
  72.   {
  73.   case 0:
  74.     break;
  75.   case 1:
  76.     break;
  77.   case 2:
  78.     break;
  79.   case 3:;
  80.   break;
  81.   
  82.   }
  83. }
  84. //刷新数据
  85. void ledDisplay(void)
  86. {
  87.   //  ledClearPartNumberValue();//清除残影
  88.   if(showLed &&  (ledTwinkle == 0 || ledTwinkleFlag))//判断显示标志
  89.   {
  90.     switch(ledUnitCount)
  91.     {
  92.     case 0:
  93.       displayUnitValue = tube2%10;//个位
  94.       break;
  95.     case 1:
  96.       displayUnitValue = (tube2%100)/10;//十位
  97.       break;
  98.     case 2:
  99.       displayUnitValue = (tube2%1000)/100;//百位
  100.       break;
  101.     case 3:
  102.       displayUnitValue = (tube2%10000)/1000;//千位
  103.       break;
  104.     case 4:
  105.       displayUnitValue = tube1%10;//个位
  106.       break;
  107.     case 5:
  108.       displayUnitValue = (tube1%100)/10;//十位
  109.       break;
  110.     case 6:
  111.       displayUnitValue = (tube1%1000)/100;//百位
  112.       break;
  113.     case 7:
  114.       displayUnitValue = (tube1%10000)/1000;//千位
  115.       break;
  116.     }
  117.     putNumber(displayUnitValue,ledUnitCount);//显示单元数值
  118.     if(ledUnitCount++>=7) ledUnitCount = 0;//下一单元
  119.   }
  120. }
  121. //使能LED显示
  122. void ledEnable(void)
  123. {
  124.   showLed = 1;
  125. }
  126. //禁能LED显示
  127. void ledDisable(void)
  128. {
  129.   showLed = 0;
  130. }
  131. void SetLedTwinkle(uint8_t twinkle)
  132. {
  133.   ledTwinkle = twinkle;
  134. }
  135. void test(uint8_t n)
  136. {
  137.   putNumber(n,n);
  138.   show();
  139. }
复制代码

eeworld.com.msp430.code @msp430g2553 数码管.rar (160.28 KB, 下载次数: 12)


赞赏

1

查看全部赞赏

 
点赞 关注
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表