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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ATMEA48單片機太陽能光伏板_Proteus仿真圖 原理圖及程序

  [復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. //晶振1M
  2. #include <iom48v.h>
  3. #include <macros.h>
  4. /********************************************************************
  5.                 數據類型定義
  6. *********************************************************************/
  7. #define uchar unsigned char
  8. #define uint  unsigned int
  9. #define LED1_K  PORTB|=BIT(0)
  10. #define LED1_G  PORTB&=~BIT(0)
  11. #define LED2_K  PORTB|=BIT(1)
  12. #define LED2_G  PORTB&=~BIT(1)

  13. #define PWM_1  PORTD|=BIT(0)
  14. #define PWM_2  PORTD|=BIT(1)
  15. #define PWM_1G  PORTD&=~BIT(0)
  16. #define PWM_2G  PORTD&=~BIT(1)
  17. uint pwm1=100;   
  18. uint CNT=0;                  

  19. /**********************************************************************
  20.                                                                 延時函數                                                                           
  21. **********************************************************************/
  22. void DelayMs(uint i)  //0.25ms
  23. {uchar j;
  24. for(;i!=0;i--)
  25.   {for(j=250;j!=0;j--) {;}}
  26. }

  27. /**********************************************************************
  28.                                                                 電壓值處理函數                                                                           
  29. **********************************************************************/
  30. uint ADC_Convert(void)
  31. {uint temp1,temp2;
  32. temp1=(uint)ADCL;//先讀ADCL
  33. temp2=(uint)ADCH;//再讀ADCH
  34. temp2=(temp2<<8)+temp1;//求值
  35. temp2=temp2*49/10;//求顯示的電壓值(0~5.12)V
  36. return(temp2);
  37. }



  38. /**********************************************************************
  39.                       初始化I/O口
  40. **********************************************************************/
  41. void Init_IO(void)             //初始化I/O口
  42. {
  43. DDRC=0x00;                    //設置C口為推挽1輸出            
  44. PORTC=0x00;
  45. DDRB=0xff;                  
  46. PORTB=0xff;
  47. DDRD=0xff;                    //設置D口為推挽1輸出
  48. PORTD=0xff;   
  49. }


  50. /**********************************************************************
  51.                                           主函數                           
  52. **********************************************************************/
  53. void main(void)
  54. {uchar Load;
  55. uint i,K,M;
  56. uint u1,u2;
  57. Init_IO();                    //初始化I/O口
  58. TCCR1A=0X00;
  59. TCCR1B=0X01; //
  60. TCNT1=65036;//500u
  61. TIMSK1=0X01;         
  62. SEI();
  63. DelayMs(300);                //延時待系統穩定;
  64. while(1)
  65. {
  66.   if(M<=150)
  67. {  
  68. ADMUX=0x01;                   //選擇第二通道;
  69. ADCSRA=0xe0;                   //500K轉換速率,自由轉換模式;啟動AD轉換器;
  70. u1=ADC_Convert();            
  71. u1=u1*4;//蓄電池電壓
  72. }
  73.   else
  74. {
  75. ADMUX=0x00;                   //選擇第一通道;
  76. ADCSRA=0xe0;                   //500K轉換速率,自由轉換模式;啟動AD轉換器;
  77. u2=ADC_Convert();            
  78. u2=u2*6;//太陽電池電壓
  79. }
  80. if(u2>=30000)//太陽電池過壓保護
  81. {
  82.   LED1_G;
  83.   LED2_G;
  84.   CLI();//關中斷
  85. }
  86. else //沒有過壓 正常工作
  87. {
  88. if(u1>=14500)//停止充電
  89. {
  90.   LED1_K;
  91.   LED2_K;
  92.   PWM_1G;//pwm引腳置低電平;停止充電
  93.   CLI();//關中斷
  94.   PWM_2;//pwm引腳置高電平;允許放電
  95. }
  96. else if(u1>=12000&&u1<=14500)//pwm充電
  97. {
  98.   LED1_K;
  99.   LED2_G;
  100.   SEI(); //開中斷
  101.   pwm1=80;// 占空比為80% pwm充電
  102.   PWM_2;//pwm引腳置高電平;允許放電
  103. }
  104.   else if(u1>=10800&&u1<=12000)//快速充電
  105. {
  106.   LED1_K;
  107.   LED2_G;
  108.   PWM_1;//pwm引腳置高電平 快速充電
  109.   PWM_2;//pwm引腳置高電平;允許放電
  110.   CLI();//關中斷
  111. }
  112.    else//停止放電
  113. {
  114.   LED1_G;
  115.   LED2_K;
  116.   pwm1=50;// 占空比為50% pwm充電   
  117.   PWM_2G;//pwm引腳置低電平  停止放電
  118.   SEI(); //開中斷
  119. }
  120. }
  121.    if(M++>=160)
  122. { M=0;}
  123. }
  124. }

  125. //********************T/C1中斷服務函數500us進入一次,周期50ms********************//
  126. #pragma interrupt_handler Timer1:14
  127. void Timer1(void)
  128. {
  129. TCNT1=65036;
  130. if(CNT++>=100) //中斷次數累加         
  131.     {
  132.         CNT=0;               
  133.         }                       
  134. if(CNT<=(pwm1)) //pwm1=1時,占空比為1%         
  135.     {
  136.         PWM_1;//pwm引腳置高電平;                    
  137.         }
  138.         else           
  139.     {
  140.         PWM_1G;//pwm引腳置低電平
  141.         }  
  142.         
  143.                
  144. }
復制代碼



全部資料51hei下載地址:
ATMEA48_太陽能光伏板_仿真圖_原理圖_及程序.rar (580.53 KB, 下載次數: 151)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:281113 發表于 2020-4-29 16:45 | 只看該作者
這個可以,學習一下!
回復

使用道具 舉報

板凳
ID:733657 發表于 2020-5-5 23:36 | 只看該作者
這個仿真圖的輸出端在哪里,打撈求解答
回復

使用道具 舉報

地板
ID:226953 發表于 2021-3-28 18:45 | 只看該作者
樓主好,仿真提示錯誤,adc鎖定了,是木有開啟adc么?能不能把完整的程序代碼共享來學習一下
回復

使用道具 舉報

5#
ID:226953 發表于 2021-3-28 18:47 | 只看該作者
仿真提示錯誤,是單片機ADC鎖定,寫不進數據,能不能將完整程序代碼共享呢,謝謝哦
回復

使用道具 舉報

6#
ID:908806 發表于 2021-4-20 09:13 | 只看該作者
太陽能光伏板怎么找啊?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产第一页 | 日本电影韩国电影免费观看 | 欧美精品一区二区三区在线播放 | 国产精品久久久久久久久久久久冷 | 99久久国产综合精品麻豆 | 国产精品国产精品 | 国产日韩一区二区三区 | www.奇米| 国产一区二区免费 | 国产精品久久久久久久久久软件 | 国产精品永久免费 | avav在线看 | 日韩欧美国产精品一区二区 | 超碰免费在 | 免费精品视频 | 亚洲日日 | 精品无码久久久久久国产 | 成人精品高清 | 黑人巨大精品欧美黑白配亚洲 | 色资源在线视频 | 免费视频99 | 激情五月婷婷综合 | 欧美久久精品一级c片 | 国产在线观看一区二区 | 成人国产精品久久 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 成人影院网站ww555久久精品 | 国产综合区 | 亚洲九九色 | 午夜精品久久久久久久99黑人 | 韩国欧洲一级毛片 | 国产精品美女久久久 | 国产精品中文字幕一区二区三区 | 国产日韩欧美一区 | 国产电影一区 | 国产一区二区视频在线 | 亚洲成av| 视频一二区 | 福利片在线观看 | 久久久爽爽爽美女图片 | 日本字幕在线观看 |