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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

2015全國電子設計大賽A題實物100分

  [復制鏈接]
跳轉到指定樓層
樓主
ID:225545 發表于 2017-8-7 20:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
內含輔助電路  功率電路  控制電路
/*2015全國電子設計大賽A題作品程序*/
#include <STC12C5A60S2.H>
#include <intrins.h>              /*use _nop_() function*/
#define uchar unsigned char
#define uint unsigned int
#define ADC_FLAG      0X10

/*****************************************
端口功能設定
*****************************************/
sbit PWM_1                =        P1^4;       //PWM1_Boost/Buck
sbit SD_1                  =        P1^3;       //SD1_Boost_Buck
sbit Key_1                =        P2^1;       //Key_1
sbit Key_2                =        P2^2;       //Key_2
sbit Key_3                =        P2^3;       //Key_3

uint ADC_value;
uchar PWM_temp=2;
uchar last_key;                                //按鍵變量
uchar channel=0;                        //第一通道
uchar Caes=0;                                //菜單
uint  OUT_Current=300;
uint  Battery_voltage;                //輸入電壓        
uint  Boost_voltage;                //Boost電壓                 
uint  Boost_Buck_current;        //Buck_Boost電流8位
uint  O_current;                        //輸出電流
uint  A_value=90;
bit lock=0;                           //PWM輸出鎖定
bit ADC_ready=0;                   //ADC完畢
bit K=0;
bit Charge=0;
void delay();
void Key_0_();
void Key_1_();
void Key_2_();
void Key_3_();
void init_pca();
void init_timer();
/**********************************************************
函數說明: 延時程序
**********************************************************/
void delay(uchar t)
{
        uint j;
        uchar i;
        for(i=0;i<t;i++)
                for(j=0;j<1000;j++);
}
/**********************************************************
函數說明: PWM初始化
**********************************************************/
void init_pwm()
{
  CCON = 0;
        CL = 0;
        CH = 0;
        CMOD = 0X08; //0X08:43KHZ // 0X02,22KHZ // 0X0A,10KHZ //
        CCAPM1        =0x42;//8位PWM輸出,無中斷
        CCAP1L         =CCAP1H =250;//初始化spwm輸出的占空比
        CR=1;
}
/**********************************************************
函數說明: 中斷 始化函數
**********************************************************/
void InitADC()
{
        P1M1=0x47;
        P1M0=0x00;
        P1ASF=0X47;                    //選擇ADC通道0126
        ADC_RES=0;
        ADC_CONTR=0X88;                   //1110 0000           E8 開電源,最高速
        EA=1;
        EADC=1;
}
/**************************************
1602液晶
**************************************/
sbit RS = P2^5;               
sbit RW = P2^6;
sbit E  = P2^7;
/**************************************
短延時
**************************************/
void delay5ms()   
{
    uchar i,v,k;
    for(i=1;i>0;i--)
        for(v=168;v>0;v--)
            for(k=22;k>0;k--);
}
/**************************************
寫指令
**************************************/
void lcd_Write_com(uchar com)         
{
        RS=0;                        //定義指令寄存器
        RW=0;                                  //寫允許
        P0=com;                                          //寫指令
        delay5ms();        E=1;                //片選端上拉
        delay5ms();        E=0;                //下降沿鎖存
}
/**************************************
寫數據
**************************************/
void lcd_write_date(uchar date)        
{
        RS=1;                                        //定義數據寄存器
        RW=0;                                        //寫允許
        P0=date;                                //寫數據
        delay5ms();        E=1;                //片選端上拉
        delay5ms();        E=0;                //下降沿鎖存
}
/**************************************
顯示程序
**************************************/
void dis_lcd1602(uchar x,uchar y,uchar dat)
{
        uchar add;
        if(y==1)         add=(0x80+x);
        if(y==2)         add=(0xc0+x);
        lcd_Write_com(add);                //寫指令
        lcd_write_date(dat);        //寫數據
}  
/**************************************
液晶初始化
**************************************/
void lcd1602_init()
{
        lcd_Write_com(0x38);        //設置8位格式,2行,5*7
        lcd_Write_com(0x01);        //清屏
        lcd_Write_com(0x0c);        //整體顯示,關光標,不閃爍
        lcd_Write_com(0x06);        //設定輸入方式,增量不移位
        lcd_Write_com(0x80);        //初始坐標
}
/**************************************
液晶顯示漢字程序
**************************************/
void hz_lcdDis(uchar x,uchar y,uchar *p) //漢字顯示
{
   uchar i=0,temp;
   if(x)temp = 0x40;   else temp = 0;
   for(i=y;*p!='\0';i++,p++)
   {
                lcd_Write_com(i|0x80+temp);
                lcd_write_date(*p);
                delay5ms();                          
   }
}
/**************************************
液晶顯示數字程序
**************************************/
void  num_lcdDis(uchar X,uchar Y,uint num,uchar n)        
{
        uint i=0,temp,hang;   
        n +=1;
           if(X)hang = 0x40;else hang = 0;
           for(i=(n-1);i>0;i--)
    {           
                  lcd_Write_com((i+Y-1)|0x80+hang);          //從個位開始顯示
                  temp = num%10+0x30;
                  lcd_write_date(temp);        
                 delay5ms();
                  num/=10;                                         
        }        
}
/**********************************************************
函數說明: 平均濾波函數
**********************************************************/
#define N 50
uint Filter(uint adc_data)
{
        uint value=0;
        uchar count,count_ADC;
        for(count=0;count<N;count++)
        {
                for(count_ADC=0;count_ADC<3;count_ADC++)
                {
                        while(!ADC_ready){}
                        ADC_ready=0;
                }
                value+=adc_data;         
        }
        return (value);
}
/**********************************************************
函數說明:按鍵延時防抖動
P3^5       Key_1
P3^6       Key_2
P3^7       Key_3

**********************************************************/
void key_scan()
{
        uchar temp;
        temp = P2&0x0F;
        if(temp != 0x0F)
        {
                delay(10);
                temp = P2&0x0F;
                if(temp!= 0x0F)
                {
                        switch(temp)
                        {
                                case 0x0E: Key_0_();        break;        //20
                                case 0x0D: Key_1_();        break;        //21
                                case 0x0B: Key_2_();        break;        //22
                                case 0x07: Key_3_();        break;        //23
                                default:break;
                        }
                }
        }
//        last_key = temp;
}

/**********************************************************
函數說明: 按鍵程序
**********************************************************/
void Key_0_()
{
  Charge=~Charge;
        if(Charge)         {CCAP1L         =CCAP1H =128;  SD_1=1;        hz_lcdDis(0,8,"d");}        
        else              {SD_1=0;  hz_lcdDis(0,8,"c");}        

}
void Key_1_()
{
        if(K)        {SD_1=0;        lock=1;                CCAP1L=CCAP1H =128;        hz_lcdDis(0,8,"g");        }  //boost的軟啟動,防止瞬間沖擊電流過大,影響后級穩定性
        else         {SD_1=1;        lock=0;        hz_lcdDis(0,8,"k");        }
        K=~K;
}
void Key_2_()
{
        OUT_Current=OUT_Current+15;
        if(OUT_Current>600)OUT_Current=600;        
}
void Key_3_()
{
        OUT_Current=OUT_Current-15;        
        if(OUT_Current<150)OUT_Current=150;
}
/**********************************************************
函數說明: 主函數
**********************************************************/
void main(void)
{
        uint U1,U2,I1,S;
        SD_1=0;
        lcd1602_init();
        hz_lcdDis(0,4,"Welcome!");
        init_pwm();
        InitADC();
        delay(250);        
//        delay(250);
        EA=1;//開總中斷
        lcd_Write_com(0x01);        //清屏
//        SD_1=1;
        hz_lcdDis(0,0,"IN=  . V S= .  A");
        hz_lcdDis(1,0,"OU=  . V I= .  A");
        while(1)//主循環
        {               
                U1=Filter(Boost_voltage)/92;        //輸入電壓  1:10采樣電阻                 93,
                U2=Filter(Battery_voltage)/92;    //輸出電壓  1:10采樣電阻        93
                I1=Filter(O_current)/150;       //輸出電流  
//                if(I1>1)                I1=I1-1;//輸出電流顯示校準
                if(U2>242)               
                        {SD_1=0;        lock=1;                CCAP1L         =CCAP1H =128;        hz_lcdDis(0,8,"P");        }
                num_lcdDis(0,3,U1/10,2);
                num_lcdDis(0,6,U1%10,1);        
                num_lcdDis(1,3,U2/10,2);
                num_lcdDis(1,6,U2%10,1);
……………………


DC-DC輔助電源.~(1).SchDoc.Zip

23.51 KB, 下載次數: 30, 下載積分: 黑幣 -5

功率主板.~(1).SchDoc.Zip

24.08 KB, 下載次數: 31, 下載積分: 黑幣 -5

控制電路.~(1).SchDoc.Zip

21.28 KB, 下載次數: 37, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:264547 發表于 2017-12-22 19:03 | 只看該作者
能發一份完整的程序嗎
郵箱 1090911613@qq.com
謝謝!
回復

使用道具 舉報

板凳
ID:256970 發表于 2017-12-27 00:27 | 只看該作者
能發一份完整的程序嗎
郵箱 89707600@qq.com
謝謝!
回復

使用道具 舉報

地板
ID:380761 發表于 2019-2-20 12:06 | 只看該作者
我在電源網上看到一個功率板和你相同的貼是你發的嗎
回復

使用道具 舉報

5#
ID:380761 發表于 2019-2-20 12:07 | 只看該作者
求完整代碼呀 學習參考 郵箱 1471281414@qq.com
回復

使用道具 舉報

6#
ID:262642 發表于 2019-3-6 08:57 | 只看該作者
非常棒
回復

使用道具 舉報

7#
ID:295658 發表于 2019-5-24 00:54 | 只看該作者
麻煩您發一份完整的程序。謝謝姐姐。quping987654@163.com
回復

使用道具 舉報

8#
ID:577945 發表于 2019-7-20 11:48 | 只看該作者
求完整程序996285926@qq.com 謝謝大神
回復

使用道具 舉報

9#
ID:587639 發表于 2019-7-21 12:13 | 只看該作者
求完整程序,謝謝大佬。郵箱1370804305@qq.com
回復

使用道具 舉報

10#
ID:588541 發表于 2019-7-23 15:44 | 只看該作者
求完整程序1545636103@qq.com 謝謝大神
回復

使用道具 舉報

11#
ID:579484 發表于 2019-7-23 20:40 來自觸屏版 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

12#
ID:481797 發表于 2020-1-7 11:50 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频精品 | 欧美日韩亚洲系列 | 国产精品视频免费播放 | 国产一区二区精品自拍 | 五月综合色啪 | 国产精品无码久久久久 | 911精品国产 | 欧美aⅴ | 蜜臀久久99精品久久久久久宅男 | 欧美日本韩国一区二区 | 久精品久久 | 亚洲精品久久久久中文字幕二区 | 国产馆 | 黄一区二区三区 | 精品永久| 亚洲欧洲国产视频 | 日本不卡一区二区三区在线观看 | 在线一区视频 | 日韩一区二区视频 | 99精品视频免费观看 | 久久久成人精品 | 国产一二三区在线 | 亚洲精品乱码久久久久久9色 | 亚洲黄色av| 女同av亚洲女人天堂 | 偷拍亚洲色图 | 国产在线一区二 | 午夜视频免费在线观看 | 亚洲一区中文 | а天堂中文最新一区二区三区 | 日本在线中文 | 91资源在线 | 女同久久另类99精品国产 | 国产日韩免费观看 | 一级片网址 | 色综合色综合 | 高清亚洲 | 99reav| 欧美精品一区二区三区在线 | 国产日韩欧美在线一区 | 亚洲精品一二三 |