個人還是比較喜歡有個電源指示燈,所以另外加了個“小紅”
【單片機開源學習】跟著樂老師學習數控電源
全部回復(62)
正序查看
倒序查看
最近比較忙今天晚上才把板子焊完,不過功率板還沒上電,只有一路電源過幾天得去買個變壓器。有誰買到了嗎?給個淘寶鏈接,我不知道要買哪種
下載程序的時候要裝一下驅動誰要我貼上來方便下載CH340IR.rar
下載軟件用新版本的會自動讀取COM口stc-isp-15xx-v6.70.rar
程序可以下載了,接下來就可以自己調程序啦。先睡覺,改天了。
0
回復
帖子已被推薦到帖子底部經典圖庫。更多請點擊哦:http://www.daogou-taobao.cn/bbs/classic/
0
回復
@又一個暑假
[圖片]樂老師的這個毫秒延時函數誤差有點大吧,有人去算過嗎
可參考
/****************************************************************** - 功能描述:1MS延時子程序 帶(16位)參數 - 隸屬模塊: - 參數說明:無 - 返回說明:無 - 注: 此處MAIN_Fosc=22.1184 MHz ******************************************************************/ void Delay_ms(uint x_ms) { unsigned int i; do { i = MAIN_Fosc / 13000; while(--i) ; //14T }while(--x_ms); }
0
回復
@又一個暑假
按鍵部分參照吳堅鴻的思想[圖片]源代碼見3樓
還有一個按鍵的寫法更酷,我用Proteus仿真了一下 ,不妨大家也可以看看這樣的按鍵寫法,不過核心算法我是原創的,我相信也很多人看過,沒看過的朋友仔細看看,會有收獲的。
源代碼如下:
/****************************************************************** - 功能描述:主要是想測試按鍵的算法 按鍵按下對應的LED燈翻轉 又一個暑假 2015.02.12 ******************************************************************/ #include "REG52.H" #define PINB P1 sbit LED0 = P2^0; sbit LED1 = P2^1; sbit LED2 = P2^2; sbit LED3 = P2^3; volatile unsigned char Key_Value; volatile unsigned char Key_Trg; volatile unsigned char Key_Cont; volatile unsigned char Key_Release; void Key_Scan(void) ; //按鍵掃描函數 void Key_Service(void); //按鍵服務函數 void KeyRead( void ); //按鍵核心算法 /****************************************************************** - 功能描述:中斷服務函數 - 參數說明:無 - 返回說明:無 - 注: ******************************************************************/ void T0_time(void) interrupt 1 { TF0=0; //清除中斷標志 TR0=0; //關中斷 Key_Scan(); TH0=(65535-20000)/255; //重裝初始值 TL0=(65535-20000)%255; TR0=1; //開中斷 } /****************************************************************** - 功能描述:單片機初始化 - 參數說明:無 - 返回說明:無 - 注: ******************************************************************/ void Init_Mcu(void) //初始化單片機 { TMOD=0x01; //設置定時器0為工作方式1 TH0=0xff; //重裝初始值(65535-2000)=63535=0xf82f TL0=0xf0; EA=1; //開總中斷 ET0=1; //允許定時中斷 TR0=1; //啟動定時中斷 } /****************************************************************** - 功能描述:主函數 - 參數說明:無 - 返回說明:無 - 注: ******************************************************************/ void main ( void ) { Init_Mcu() ; while(1) { Key_Service(); } } /****************************************************************** - 功能描述:執行按鍵按下 要執行的任務 - 參數說明:無 - 返回說明:無 - 注: ******************************************************************/ void Key_Service( void ) //第三區 按鍵服務的應用程序 { switch(Key_Value) //按鍵服務狀態切換 { case 1: Key_Value = 0; LED0=!LED0; break; case 2: Key_Value = 0; LED1=!LED1; break; case 3: Key_Value = 0; LED2=!LED2; break; case 4: Key_Value = 0; LED3=!LED3; break; default: break; } } /****************************************************************** - 功能描述:按鍵核心算法 - 參數說明:無 - 返回說明:無 - 注: ******************************************************************/ void KeyRead( void ) { unsigned char read_data = PINB^0xff; // 1 讀鍵值 Key_Trg = read_data & (read_data ^ Key_Cont); // 2 得到按下觸發值 Key_Release= (read_data ^ Key_Trg ^ Key_Cont);// 3 得到釋放觸發值 Key_Cont = read_data; // 4 得到所有未釋放的鍵值 } /****************************************************************** - 功能描述:按鍵掃描函數 - 參數說明:無 - 返回說明:無 - 注: ******************************************************************/ void Key_Scan( void ) { KeyRead(); switch(Key_Trg & 0xf0) { case 0x10: Key_Value = 1; break; case 0x20: Key_Value = 2; break; case 0x40: Key_Value = 3; break; case 0x80: Key_Value = 4; break; default: Key_Value = 0; break; } }
0
回復
@又一個暑假
還有一個按鍵的寫法更酷,我用Proteus仿真了一下,不妨大家也可以看看這樣的按鍵寫法,不過核心算法我是原創的,我相信也很多人看過,沒看過的朋友仔細看看,會有收獲的。源代碼如下:/******************************************************************-功能描述:主要是想測試按鍵的算法按鍵按下對應的LED燈翻轉又一個暑假2015.02.12******************************************************************/#include"REG52.H"#definePINBP1sbitLED0=P2^0;sbitLED1=P2^1;sbitLED2=P2^2;sbitLED3=P2^3;volatileunsignedcharKey_Value;volatileunsignedcharKey_Trg;volatileunsignedcharKey_Cont;volatileunsignedcharKey_Release;voidKey_Scan(void);//按鍵掃描函數voidKey_Service(void);//按鍵服務函數voidKeyRead(void);//按鍵核心算法/******************************************************************-功能描述:中斷服務函數-參數說明:無-返回說明:無-注:******************************************************************/voidT0_time(void)interrupt1{TF0=0;//清除中斷標志TR0=0;//關中斷Key_Scan();TH0=(65535-20000)/255;//重裝初始值TL0=(65535-20000)%255;TR0=1;//開中斷}/******************************************************************-功能描述:單片機初始化-參數說明:無-返回說明:無-注:******************************************************************/voidInit_Mcu(void)//初始化單片機{TMOD=0x01;//設置定時器0為工作方式1TH0=0xff;//重裝初始值(65535-2000)=63535=0xf82fTL0=0xf0;EA=1;//開總中斷ET0=1;//允許定時中斷TR0=1;//啟動定時中斷}/******************************************************************-功能描述:主函數-參數說明:無-返回說明:無-注:******************************************************************/voidmain(void){Init_Mcu();while(1){Key_Service();}}/******************************************************************-功能描述:執行按鍵按下要執行的任務-參數說明:無-返回說明:無-注:******************************************************************/voidKey_Service(void)//第三區按鍵服務的應用程序{switch(Key_Value)//按鍵服務狀態切換{case1:Key_Value=0;LED0=!LED0;break;case2:Key_Value=0;LED1=!LED1;break;case3:Key_Value=0;LED2=!LED2;break;case4:Key_Value=0;LED3=!LED3;break;default:break;}}/******************************************************************-功能描述:按鍵核心算法-參數說明:無-返回說明:無-注:******************************************************************/voidKeyRead(void){unsignedcharread_data=PINB^0xff;//1讀鍵值Key_Trg=read_data&(read_data^Key_Cont);//2得到按下觸發值Key_Release=(read_data^Key_Trg^Key_Cont);//3得到釋放觸發值Key_Cont=read_data;//4得到所有未釋放的鍵值}/******************************************************************-功能描述:按鍵掃描函數-參數說明:無-返回說明:無-注:******************************************************************/voidKey_Scan(void){KeyRead();switch(Key_Trg&0xf0){case0x10:Key_Value=1;break;case0x20:Key_Value=2;break;case0x40:Key_Value=3;break;case0x80:Key_Value=4;break;default:Key_Value=0;break;}}
這個程序不是在數控電源的板子上運行的
源代碼就貼在這了。按鍵.rar
0
回復