![]() |
發(fā)布時間: 2021-4-22 15:20
正文摘要:stc8g1k08a是深圳宏晶科技的一款8腳8位兼容51系列的單片機 價格很便宜 但麻雀雖小五臟俱全 且速度還挺快下面就是用它做的小東東 精度不是很高 本人也是剛?cè)腴T 水平有限 希望大家多多指教共兩個按鍵 :按 ... |
厲害,有器件,但不知道能不能弄成,學習了。 |
請問這個是用keil4還是keil5建立的工程??建立工程時選擇哪個器件?為什么我的keil4 C51里面沒有這個stc8g1k08a器件??? |
共同學習,共同進步,向大佬學習! |
有時間研究一下 |
//一個簡單的在stc8g1ko8A上可以運行的小demo,可以用于簡單的AD測量,define修改一下就行了 #define TIME_3S 30000 #define TIME_2S 30000 #define TIME_1MS 100 #define TIME_2MS 200 #define TIME_5MS 500 // 狀態(tài)機 #define READY_ST 1 #define CAPCHARGE 2 #define MOT_ST 3 #define STOP_ST 4 #define CHARGE_ST 5 #define DELAY_ST 6 // 信號接收 // 狀態(tài)機 #define keyRun #define keyMot // 數(shù)值 #define U500 20 #define U6500 500 #define U8000 700 unsigned int STATUS unsigned int ADS // 計數(shù)器 unsigned int keyRunCounter unsigned int keyShutDownCounter unsigned int shortCurrentCounter unsigned int delaySTCounter unsigned int capChargeCounter unsigned int OVMonitCounter_1 unsigned int OVMonitCounter_2 mian() { case Status Run: Gpio.init;//keyRun 為推挽 Mot: Gpio.init2;//keyRun 為input default: Gpio.init;//初始化為Run } void ISR() { /*濾波器*/ /*保護*/ Protect(); /*按鍵檢測*/ keyMonitor(); /*狀態(tài)與動作*/ switch STATUS: case READY_ST: setGPIO1; case CHARGE_ST: setGPIO1(); case DELAY_ST: setGPIO1(); case MOT_ST: setGPIO1(); case STOP_ST: setGPIO1(); default: } /****************************** *執(zhí)行保護邏輯 ****************************/ void Protect() { // Short State monitor if (STATUS != READY_ST) && (ADS < U500)//在待機時不檢測,其他時段都不放過 { shortCurrentCounter++; } else { shortCurrentCounter = 0; } if (shortCurrentCounter > TIME_1MS) { shortCurrentCounter = 0; STATUS = STOP_ST; return; } // OverVoltage Monitor 1 if (STATUS != READY_ST) && (ADS > U500)// { OVMonitCounter_1++; } else { OVMonitCounter_1 = 0; } if (OVMonitCounter_1 > OVMonitCounter_1Debounce) { OVMonitCounter_1 = 0; STATUS = DELAY_ST; } // OverVoltage Monitor 2 if (STATUS != READY_ST) && (ADS > U7500)// { OVMonitCounter_2++; } else { OVMonitCounter_2 = 0; } if (OVMonitCounter_2 > OVMonitCounter_2Debounce) { OVMonitCounter_2 = 0; STATUS = DELAY_ST; } } /****************************** *按鍵檢測邏輯 ****************************/ void keyMonitor() { //待機狀態(tài),長按*秒開機 if (STATUS == READY_ST) && (keyRun == 1)//待機狀態(tài),長按3秒開機 { keyRunCounter++; } else { keyRunCounter = 0; } if (keyRunCounter > TIME_3S) { keyRunCounter = 0; STATUS = CHARGE_ST; } //運行狀態(tài),信號消失1ms關(guān)機 if ((STATUS == CHARGE_ST) || (STATUS == DELAY_ST) || (STATUS == CAPCHARGE) )&& (keyRun == 0) { keyShutDownCounter++; } else { keyShutDownCounter = 0; } if (keyShutDownCounter > TIME_3S) { keyShutDownCounter = 0; STATUS = READY_ST; } /*母線大電容充電2秒,開始工作*/ if (STATUS == CAPCHARGE) { if (capChargeCounter < TIME_2S) { capChargeCounter++; } else { capChargeCounter = 0; STATUS = CHARGE_ST; } } //delay狀態(tài),1ms后使能檢測 if ((STATUS == DELAY_ST) ) //&& (ADS < U500) delay 之后1ms再次檢測,不夠再加,夠了就再次進入delay { delaySTCounter++; } else { delaySTCounter = 0; } if (delaySTCounter > TIME_2MS) { delaySTCounter = 0; STATUS = CHARGE_ST; } } |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵! |
面包板插線,直接下載成功 |
老董 發(fā)表于 2021-4-22 18:55 您好,這個時鐘是怎么確定的呢? |
kmikmi 發(fā)表于 2021-7-5 22:09 謝謝指點 我還不知道有這個方法 所以把reg51.h里面加了很多與8G相關(guān)的東西 ![]() |
lin2453676722 發(fā)表于 2021-5-2 20:10 把文件頭改一下就能編譯 #include "reg51.h" #include "intrins.h" #include"main.h" #include<math.h> 改成: #include <STC8G.h> #ifndef __STC8G_H__ #define __STC8G_H__ |
測距精度可以用軟件調(diào)節(jié) 前提就是做著玩的 目的是對示波器和測試儀構(gòu)思的實踐 |
測距精度高不高,有沒有精度微調(diào) |
zhike 發(fā)表于 2021-5-30 10:00 簡易的 都是出于自己對示波器工作原理的理解 頻率和精度都不高 主要是出于興趣玩玩 |
這個能做成示波器嗎? |
學到了,有空弄一個 |
keil5好像編譯不成功 |
不錯,有時間來做一個 |
有意思,下來有時間研究一下 |
謝謝版主幫我整理 忘了告訴大家 單片機下載程序是 時鐘選擇33.1776MZ |
Powered by 單片機教程網(wǎng)