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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機手動程控放大器仿真+源程序+電路原理圖(MAX7219驅動數碼管顯示)

[復制鏈接]
跳轉到指定樓層
樓主


單片機手動程控放大器仿真電路原理圖(工程文件清晰版請下載本帖最后的附件),采用MAX7219驅動數碼管顯示.

單片機手動程控放大器源程序如下:
  1. #include <AT89X52.h>
  2. #include <intrins.h>
  3. sbit sbF1 = P2 ^ 0;   //不進行放大處理
  4. sbit sbF20 = P2 ^ 1;  //放大20倍
  5. sbit sbF30 = P2 ^ 2;  //放大30倍
  6. sbit sbF50 = P2 ^ 3;  //放大50倍

  7. sbit sbDIN = P3 ^ 0;                        //MAX7219的數據引腳
  8. sbit sbLOAD = P3 ^ 1;                      //MAX7219的控制引腳
  9. sbit sbCLK = P3 ^ 2;                       //MAX7219的時鐘引腳

  10. //顯示緩沖區定義
  11. unsigned char Disp_Buffer[8]=            //MAX7219的輸出緩沖
  12. {
  13.          0,0,0,0,0,0,0,0
  14. };
  15. unsigned char Disp_Buffer1[8]=            //MAX7219的輸出緩沖
  16. {
  17.          0,0,0,0,0,0,0,1
  18. };
  19. unsigned char Disp_Buffer20[8]=            //MAX7219的輸出緩沖
  20. {
  21.          0,0,0,0,0,0,2,0
  22. };
  23. unsigned char Disp_Buffer30[8]=            //MAX7219的輸出緩沖
  24. {
  25.          0,0,0,0,0,0,3,0
  26. };
  27. unsigned char Disp_Buffer50[8]=            //MAX7219的輸出緩沖
  28. {
  29.          0,0,0,0,0,0,5,0
  30. };

  31. void DelayMS(unsigned int ms)              //毫秒級延時函數
  32. {
  33.         unsigned int i,j;
  34.         for( i=0;i<ms;i++)
  35.                 for(j=0;j<1141;j++);        
  36. }
  37. //寫MAX7219函數,Addr為MAX7219的內部寄存器地址,Dat為待寫入的數據
  38. void Write7219(unsigned char Addr,unsigned char Dat)
  39. {
  40.          unsigned char i;
  41.         sbLOAD = 0;                                         
  42.         for(i=0;i<8;i++)                               //先送出8位地址
  43.         {
  44.                  sbCLK = 0;                                   //時鐘拉低
  45.                 Addr <<= 1;                                  //移位送出地址
  46.                 sbDIN        = CY;                                    //送出數據
  47.                 sbCLK = 1;                                   //時鐘上升沿
  48.                 _nop_();
  49.                 _nop_();
  50.                 sbCLK = 0;                                   
  51.         }
  52.         for(i=0;i<8;i++)                              //再送出8位數據
  53.         {
  54.                  sbCLK = 0;
  55.                 Dat <<= 1;                                  //移位送出數據
  56.                 sbDIN        = CY;
  57.                 sbCLK = 1;
  58.                 _nop_();
  59.                 _nop_();
  60.                 sbCLK = 0;        
  61.         }
  62.         sbLOAD = 1;
  63. }
  64. //MAX7129的初始化函數
  65. void Initialise7219()
  66. {
  67.          Write7219(0x09,0xff);                 //編碼模式寄存器
  68.         Write7219(0x0a,0x07);                 //顯示亮度控制
  69.         Write7219(0x0b,0x07);                 //掃描控制
  70.         Write7219(0x0c,0x01);                 //關閉模式控制寄存器設置
  71. }

  72. void  Wobbling ()   //延時程序防止按鍵抖動
  73. {
  74.   unsigned int i;
  75.   for(i=0;i<1000;i++);
  76. }

  77. void main()
  78. {
  79.   unsigned char i;
  80.         Initialise7219();                     //首先初始化MAX7129
  81.         DelayMS(1);                         //延時1毫秒
  82.   for(i=0;i<8;i++)
  83.         {
  84.                  Write7219(i+1,Disp_Buffer[i]);      //將顯示緩沖區內的數據循環送出
  85.         }
  86.   P1 = 0x00;    //初始化端口
  87.   P2 = 0xFF;  
  88.   P1 = 0x11;   //再不按鍵的情況下默認為不進行放大處理
  89.   while(1)
  90.   {
  91.   if (sbF1 == 0) //判斷是否按下按鍵
  92.   {
  93.     Wobbling();   //時間延時程序,軟件防抖動
  94.     if( sbF1 == 0)  //確定按下按鍵
  95.     {
  96.       P1 = 0x11;   //放大1倍
  97.       for(i=0;i<8;i++)
  98.             {
  99.                      Write7219(i+1,Disp_Buffer1[i]);      //顯示放大1倍
  100.             }
  101.     }
  102.   }
  103.   if(sbF20 == 0)  //判斷是否按下按鍵         
  104.   {
  105.     Wobbling();   //時間延時程序,軟件防抖動
  106.     if(sbF20 == 0) //確定按下按鍵
  107.     {            
  108.       P1 = 0x22;   //放大20倍
  109.       for(i=0;i<8;i++)
  110.             {
  111.                      Write7219(i+1,Disp_Buffer20[i]);      //顯示放大20倍
  112.             }
  113.      }            
  114.   }
  115.   if(sbF30 == 0) //判斷是否按下按鍵         
  116.   {
  117.     Wobbling();   //時間延時程序,軟件防抖動
  118.     if(sbF30 == 0) //確定按下按鍵   
  119.     {         
  120.       P1 = 0x44;   //放大30倍  
  121.       for(i=0;i<8;i++)
  122.             {
  123.                      Write7219(i+1,Disp_Buffer30[i]);      //顯示放大20倍
  124.             }
  125.      }            
  126.   }
  127.   if(sbF50 == 0) //判斷是否按下按鍵         
  128.   {
  129.     Wobbling();   //時間延時程序,軟件防抖動
  130.     if(sbF50 == 0)//確定按下按鍵  
  131.     {         
  132.       P1=0x88;  //放大50倍   
  133.       for(i=0;i<8;i++)
  134.             {
  135.                      Write7219(i+1,Disp_Buffer50[i]);      //顯示放大20倍
  136.             }
  137.      }         
  138.   }
  139. }
  140. }
復制代碼



單片機手動程控放大器所有資料下載:
http://www.zg4o1577.cn/bbs/dpj-54940-1.html


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

使用道具 舉報

沙發
ID:503507 發表于 2019-6-29 08:51 | 只看該作者
你做處實物了嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线一区二区 | 亚洲国产一区二区三区在线观看 | 日本亚洲欧美 | 久久99国产精品 | 秋霞在线一区二区 | 成人在线看片 | 亚洲精品在线视频 | 中文字幕一区二区三区乱码在线 | 日韩色在线| 婷婷久久一区 | 福利视频亚洲 | 色久在线 | 精产国产伦理一二三区 | 精品久久99 | av天空 | 亚洲天堂免费 | 成人影| 天天av综合 | 亚洲精品久久久一区二区三区 | 久久精品91 | www.日日夜夜 | 国产精品美女久久久久久免费 | 精品视频99 | 国产区在线视频 | 99re6在线视频精品免费 | 激情五月综合网 | 欧美久久综合 | 欧美一级二级三级 | 亚洲毛片在线 | 久久久久久免费精品一区二区三区 | 国产精品久久九九 | 久久高清免费视频 | 国产精品伦理一区 | 国产亚洲精品美女久久久久久久久久 | 中国一级大毛片 | 日日噜噜噜夜夜爽爽狠狠视频, | av一区二区三区四区 | 丝袜天堂| 国产激情第一页 | 中文字幕av亚洲精品一部二部 | 中文字幕在线观看视频一区 |