久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4126|回復: 0
打印 上一主題 下一主題
收起左側

HD7279A控制數碼管(IAR環境)

[復制鏈接]
跳轉到指定樓層
樓主
ID:73477 發表于 2015-2-10 17:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

  1. /***************************************************************************
  2. IAR環境,HD7279A,P4.0~CS,P4.1~CLK,P4.2~DATA,P4,3~KAY,
  3. DATA為串口數據口,時序圖如下:
  4. CS:    ---------_________________________--------
  5. CLK:   ___________---___---___---___---__________
  6. DATA:  ---------~~~---~~~---~~~~---~~~-----------
  7. 由430將顯示數據一次性送到7279,再由7279顯示
  8. 通過定時器TimerA將數值不斷改變,當主函數發現數值改變后,再將新的數值寫到
  9. HD7279A中,這樣便起到了節約CPU資源的作用。數值由數碼管顯示,由于HD7279含有
  10. 寄存器的原因,所以只單片機將要顯示的數字和位置的信息傳給HS7279A即可顯示,而
  11. 無需單片機掃描。
  12. ***************************************************************************/

  13. #include "msp430x15x.h"

  14. #define      DATADIR      P4DIR    //  定義端口方向
  15. #define      DATAOUT      P4OUT    //  定義輸出端口

  16. #define      CS_L         DATAOUT &= ~BIT0;  //  7279的片選輸出低電平
  17. #define      CLK_L        DATAOUT &= ~BIT1;  //  7279的時鐘輸出低電平
  18. #define      DATA_L       DATAOUT &= ~BIT2;  //  7279的數據輸出低電平

  19. #define      CS_H         DATAOUT |= BIT0;  //  7279的片選輸出高電平
  20. #define      CLK_H        DATAOUT |= BIT1;  //  7279的時鐘輸出高電平
  21. #define      DATA_H       DATAOUT |= BIT2;  //  7279的數據輸出高電平
  22.          
  23. #define      DP           0X80    //  顯示小數點
  24. #define      CMD_REST     0XA4    //  7279的復位命令
  25. #define      CMD_LEFT     0XA1    //  7279的左移位命令
  26. #define      CMD_RIGHT    0XA0    //  7279的讀緩沖命令

  27. #define      CMD_MODE_1   0X80    // 按方式0譯碼
  28. #define      CMD_MODE_2   0XC8    // 按方式1譯碼
  29. #define      CMD_MODE_3   0X90    // 輸入數據不譯碼

  30. #define      CMD_SHOW     0X88    // 閃爍

  31. typedef unsigned int uint16;

  32. char tab_num[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
  33.                 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};

  34. uint16 tym,tym_delay;

  35. void delay_nop(uint16 u)                             // 延時多少個機器周期
  36. {
  37.   for(;u>0;u--)
  38.     _NOP();
  39. }

  40. void Send_1_byte(char send)                          // 發送一個字節
  41. {
  42.   char temp,i;  
  43.   CS_L;                                                             // 置低片選信號
  44.   for(i=0;i<8;i++)
  45.   {
  46.     temp = send & 0x80;                                       // 發送高位
  47.     if(temp!=0)   {DATA_H;}
  48.     else          {DATA_L;}
  49.     CLK_H;                                                             // 置高時鐘位
  50.     send <<= 1;                                                         // 左移一位
  51.     CLK_L;                                                                // 置低時鐘位
  52.   }
  53.   CS_H;                                                                 // 置高片選信號
  54. }

  55. void Send_2_byte(char send1,char send2)         // 發送兩個字節
  56. {
  57.    char temp,i;
  58.    CS_L;
  59.    for(i=0;i<16;i++)
  60.    {
  61.       if(i<8)      temp = send1 & 0x80;                      // 發送高位
  62.       else         temp = send2 & 0x80;
  63.       if(temp!=0)  {DATA_H;}                                   // 如果不為0,輸出高電位
  64.       else         {DATA_L;}                                      // 如果為0,則輸出低電位
  65.       CLK_H;                                                           // 置高時鐘位
  66.       if(i<8)      send1 <<= 1;                                    // 左移一位
  67.       else         send2 <<= 1;
  68.       CLK_L;                                                           // 置低時鐘位
  69.       if(i==7)     _NOP();
  70.    }
  71.   CS_H;                                                                 // 置高片選信號  
  72. }

  73. void Write7279()
  74. {
  75. //  char i;
  76. //  Send_1_byte(0xbf);                                                                 // 用于測試
  77. //  Send_1_byte(0xa4);                                                                //復位指令
  78.   Send_2_byte(CMD_MODE_2|0X03,tab_num[tym/1000]);         //  取千位
  79.   Send_2_byte(CMD_MODE_2|0X02,tab_num[tym/100%10]);    //  取百位
  80.   Send_2_byte(CMD_MODE_2|0X01,tab_num[tym/10%10]);      //  取十位
  81.   Send_2_byte(CMD_MODE_2|0X00,tab_num[tym%10]);           //  取個位
  82. //  Send_1_byte(0xa1);                                                               //左移指令
  83.   
  84. }

  85. void main( void )
  86. {
  87.   uint16 ram;
  88.   // Stop watchdog timer to prevent time out reset
  89.   WDTCTL = WDTPW + WDTHOLD;
  90.   TACTL  = TASSEL_1 + TACLR + MC_1;  // + TAIE 時鐘源MCLK,增計模式,開總中斷,清除定時器
  91.   CCTL0 |= CCIE;                //允許中斷
  92.   CCR0   = 2000;               //設置寄存器的值
  93. //  _EINT();                        //溢出中斷
  94.   _BIS_SR(GIE);                //開總中斷
  95.   
  96.   DATADIR = 0X07;
  97.   ram = tym;                     //使兩者的值相等
  98.   Write7279();                   //顯示初始化
  99.   while(1)
  100.   {
  101.     if(ram!=tym)                //當tym的值有變動時,調用7279
  102.     {
  103.       Write7279();             //顯示新數值
  104.       ram = tym;                 //使ram和tym的值相同,以確定下一次tym的值的變動
  105.     }
  106.     delay_nop(1);              //延時一個機器周期
  107.   }
  108. }

  109. #pragma vector = TIMERA0_VECTOR
  110. __interrupt void Timer_A0(void)
  111. {
  112.    tym_delay++;                                                                   //進入中斷tym_delay的值加一
  113.    if(tym_delay>=20)   {tym++;tym_delay=0;}                       //當tym_delay為20時,tym加一
  114.    if(tym>1000)        tym = 0;                                                //當tym為1000時清零
  115. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久精品国产毛片 | 91色视频在线观看 | www.99re | 久草在线 | 国产精品美女www爽爽爽视频 | 国产成人精品999在线观看 | 在线免费小视频 | 日本三级电影在线看 | 免费在线观看av的网站 | 久草精品视频 | 国产一区二区免费 | 欧美一级片| 蜜桃视频在线观看免费视频网站www | 色在线免费 | 亚洲一区二区在线视频 | 国产美女高潮 | 羞羞的视频在线观看 | 欧美一区二区三区免费在线观看 | www.色综合| 91亚洲精华国产 | 国产一区视频在线 | 欧美日本在线观看 | 免费a网| 中文字幕亚洲一区二区三区 | 国产午夜精品视频 | www.国产视频 | 久久久久久色 | 成人久久久久 | 欧美精品一区在线观看 | 91麻豆产精品久久久久久 | 亚洲成av人片在线观看无码 | 伊人影院99 | av一区二区三区四区 | 国产精品亚洲第一 | 波多野结衣一区二区三区在线观看 | 亚洲视频免费 | 黄色免费网站在线看 | 一区二区三区欧美在线 | 精品国产一区二区三区成人影院 | 亚洲高清视频一区二区 | 国产日韩欧美精品一区二区三区 |