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