找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4608|回復(fù): 28
打印 上一主題 下一主題
收起左側(cè)

自學(xué)了好長(zhǎng)時(shí)間C51單片機(jī)還是懵懵懂懂,求指導(dǎo)下程序 硬件已經(jīng)完成了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
能力有限,自學(xué)了好長(zhǎng)時(shí)間C51單片機(jī)還是懵懵懂懂,現(xiàn)在手頭上有個(gè)DIY需要用到51程序。對(duì)于我來說難度很大但是對(duì)于高手來說是非常簡(jiǎn)單的。求助有沒有大師能不能帶著輔導(dǎo)寫一下。硬件已經(jīng)完成了。下面是程序需求。
MCU芯片型號(hào):STC8G1K17-38I
封裝:TSSOP-20
系統(tǒng)供電:+5V
燒錄方式:串口ISP下載
系統(tǒng)程序要求:
開機(jī)自檢:
1. 溫度是否在60℃以下,如果溫度在范圍內(nèi);MCU正常開機(jī)且4顆LED跑馬燈式依次全亮10秒后熄滅。如果溫度超過設(shè)計(jì)60℃范圍,MCU不能正常開機(jī)(兩個(gè)按鍵狀態(tài)鎖定)且4顆LED連續(xù)閃爍30S后熄滅。
2. 檢查BV電壓:上電后BV電壓<2.8V或大于4.6V系統(tǒng)不能正常工作(兩個(gè)按鍵狀態(tài)鎖定);且LED1燈快閃10次熄滅;BV電壓自檢正常4顆LED跑馬燈依次點(diǎn)亮10秒后對(duì)應(yīng)BV值顯示出該值下的電量顯示,詳見電量指示LED對(duì)應(yīng)表。
系統(tǒng)工作:
短按SW2,系統(tǒng)能依照電量指示LED對(duì)應(yīng)表輸出LED1-LED4的點(diǎn)燈狀態(tài),控制端口為P3.3-P3.5;低電平有效;點(diǎn)亮LED時(shí)間為5S。
1. 短按SW1;P1.1端口能輸出高電平;再次短按P1.1能輸出低電平。
2. 長(zhǎng)按SW1時(shí)長(zhǎng)3S以上;P1.1輸出高電平。長(zhǎng)按SW1時(shí)長(zhǎng)3S以上,P1.0端口輸出低電平;
3. 系統(tǒng)工作后持續(xù)檢測(cè)TEMP值,對(duì)應(yīng)溫度值達(dá)到60℃時(shí),P3.7端口持續(xù)輸出高電平打開FAN;直到系統(tǒng)檢測(cè)TEMP值小于60℃時(shí),P3.7端口持續(xù)輸出低電平關(guān)斷FAN。
4. 系統(tǒng)工作后持續(xù)檢測(cè)BV值;當(dāng)檢測(cè)到BV值<3.0V時(shí),LED1-LED2連續(xù)閃爍5秒后熄滅。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1043624 發(fā)表于 2022-10-19 02:56 | 只看該作者
第1個(gè)表述有點(diǎn)問題,不是MCU不能正常開機(jī)而是面板不允許操作且輸出故障提示。
回復(fù)

使用道具 舉報(bào)

板凳
ID:525244 發(fā)表于 2022-10-19 07:14 來自觸屏版 | 只看該作者
qingshuiyu 發(fā)表于 2022-10-19 02:56
第1個(gè)表述有點(diǎn)問題,不是MCU不能正常開機(jī)而是面板不允許操作且輸出故障提示。

編程就是數(shù)據(jù)的傳送、搬運(yùn)!首先你要知道如何搬運(yùn),其次是如何搬運(yùn),為什么搬運(yùn)?就像做菜,案板就那一個(gè),切菜也是拿來一樣,切完了,拿走,再拿來一樣菜!
回復(fù)

使用道具 舉報(bào)

地板
ID:60370 發(fā)表于 2022-10-19 08:26 | 只看該作者
硬件完成?靠這個(gè)文字描述是不行的,沒電路圖也沒有程序別人幫不了你的
回復(fù)

使用道具 舉報(bào)

5#
ID:1001745 發(fā)表于 2022-10-19 08:48 | 只看該作者
圖片為原理圖請(qǐng)各位大師幫忙看看,謝謝!

圖片2.png (465.17 KB, 下載次數(shù): 61)

圖片2.png
回復(fù)

使用道具 舉報(bào)

6#
ID:198189 發(fā)表于 2022-10-19 09:24 | 只看該作者
你程序起碼也得有個(gè)框架出來別人才好幫你修正啊
回復(fù)

使用道具 舉報(bào)

7#
ID:123289 發(fā)表于 2022-10-19 09:51 | 只看該作者
你會(huì)畫邏輯流程嗎?試著先畫出來。不著急寫程序,先跑通流程圖。
我在編程時(shí),程序很復(fù)雜:如漢顯、數(shù)顯、溫濕度、無線通訊、有線通訊、USB、數(shù)控、紅外遙控、時(shí)間鐘、FALSH……
都是列出所有的邏輯關(guān)系,表格。再畫出程序流程圖。
最后按流程圖寫程序,出問題時(shí),按流程圖審核,哪里錯(cuò)了,改進(jìn)。
回復(fù)

使用道具 舉報(bào)

8#
ID:60370 發(fā)表于 2022-10-19 10:28 | 只看該作者
建議將ADC檢測(cè)配置做出來,主程序掃描按鍵和讀取溫度和電壓的檢測(cè)時(shí)間(比如定時(shí)每秒檢測(cè)一次溫度和BV電壓值并處理),LED顯示和ADC定時(shí)檢測(cè)使用定時(shí)器做。電路有問題,輸入電壓低時(shí)MCU檢測(cè)電壓值就不準(zhǔn)了,輸入電壓過低LED顯示也成問題,建議MCU增加一個(gè)備用電池,117供電和備用電池都使用二極管隔離
回復(fù)

使用道具 舉報(bào)

9#
ID:1001745 發(fā)表于 2022-10-19 11:01 | 只看該作者
qingshuiyu 發(fā)表于 2022-10-19 02:56
第1個(gè)表述有點(diǎn)問題,不是MCU不能正常開機(jī)而是面板不允許操作且輸出故障提示。

其實(shí)表達(dá)的就是鎖死按鍵,括號(hào)里面有備注�?赡苊枋霾粶�(zhǔn)確。
回復(fù)

使用道具 舉報(bào)

10#
ID:1001745 發(fā)表于 2022-10-19 11:02 | 只看該作者
zgrfox110 發(fā)表于 2022-10-19 07:14
編程就是數(shù)據(jù)的傳送、搬運(yùn)!首先你要知道如何搬運(yùn),其次是如何搬運(yùn),為什么搬運(yùn)?就像做菜,案板就那一個(gè) ...

感謝回復(fù),那我學(xué)著慢慢搬運(yùn)
回復(fù)

使用道具 舉報(bào)

11#
ID:1001745 發(fā)表于 2022-10-19 11:02 | 只看該作者
runmuel 發(fā)表于 2022-10-19 08:26
硬件完成?靠這個(gè)文字描述是不行的,沒電路圖也沒有程序別人幫不了你的

謝謝回復(fù),原理圖已貼
回復(fù)

使用道具 舉報(bào)

12#
ID:1001745 發(fā)表于 2022-10-19 11:03 | 只看該作者
xia20 發(fā)表于 2022-10-19 09:24
你程序起碼也得有個(gè)框架出來別人才好幫你修正啊

謝謝回復(fù),就是框架不會(huì)搭建
回復(fù)

使用道具 舉報(bào)

13#
ID:1001745 發(fā)表于 2022-10-19 11:04 | 只看該作者
yzwzfyz 發(fā)表于 2022-10-19 09:51
你會(huì)畫邏輯流程嗎?試著先畫出來。不著急寫程序,先跑通流程圖。
我在編程時(shí),程序很復(fù)雜:如漢顯、數(shù)顯、 ...

謝謝回復(fù),感謝建議。那我來試著把程序流程圖做出來然后在試試慢慢寫程序。有問題在向您討教。
回復(fù)

使用道具 舉報(bào)

14#
ID:1001745 發(fā)表于 2022-10-19 11:07 | 只看該作者
runmuel 發(fā)表于 2022-10-19 10:28
建議將ADC檢測(cè)配置做出來,主程序掃描按鍵和讀取溫度和電壓的檢測(cè)時(shí)間(比如定時(shí)每秒檢測(cè)一次溫度和BV電壓 ...

謝謝回復(fù)及建議;這個(gè)用搭配電池包用的,如果電池電壓過低電池包保護(hù)板就過放保護(hù)了。所以我理解只要B+電壓在范圍內(nèi)就不會(huì)導(dǎo)致您說的這個(gè)問題。
回復(fù)

使用道具 舉報(bào)

15#
ID:401564 發(fā)表于 2022-10-19 13:48 | 只看該作者
對(duì)誰都一樣,不是高手不高手的
一步一步來,一個(gè)功能一個(gè)功能的去實(shí)現(xiàn)
比如,你先寫LED指示燈的函數(shù):"MCU正常開機(jī)且4顆LED跑馬燈式依次全亮10秒后熄滅"
那就單單的寫這個(gè)功能,其它都什么都不要,只寫這個(gè)函數(shù)
單單這個(gè)功能應(yīng)該能寫吧,寫完之后,放在程序中,燒錄驗(yàn)證.別仿真,仿真那玩意沒有用
然后就是其它功能,再一個(gè)一個(gè)的寫,誰都是這個(gè)過程
你至少有個(gè)自己大的框架
回復(fù)

使用道具 舉報(bào)

16#
ID:1001745 發(fā)表于 2022-10-19 15:20 | 只看該作者
Y_G_G 發(fā)表于 2022-10-19 13:48
對(duì)誰都一樣,不是高手不高手的
一步一步來,一個(gè)功能一個(gè)功能的去實(shí)現(xiàn)
比如,你先寫LED指示燈的函數(shù):"MCU正 ...

謝謝回復(fù);我覺得這個(gè)太難了。尤其是要去實(shí)現(xiàn)這些功能。不過我會(huì)根據(jù)你的建議一個(gè)模塊一個(gè)模塊去寫去試。
回復(fù)

使用道具 舉報(bào)

17#
ID:401564 發(fā)表于 2022-10-19 17:58 | 只看該作者
mcuhui 發(fā)表于 2022-10-19 15:20
謝謝回復(fù);我覺得這個(gè)太難了。尤其是要去實(shí)現(xiàn)這些功能。不過我會(huì)根據(jù)你的建議一個(gè)模塊一個(gè)模塊去寫去試。

這種功能本身就是沒有什么很高深的難度,就是功能多而已
函數(shù)就像模塊一樣,一個(gè)一個(gè)的去寫,一個(gè)一個(gè)的驗(yàn)證
大體功能就是那么幾個(gè):
端口初始化
指示燈
按鍵讀取和處理
ADC,電壓檢測(cè),溫度檢測(cè),都是ADC完成的,像你這個(gè)功能對(duì)效率要求不高的,推薦ADC用中斷來進(jìn)行
每個(gè)功能要燒錄進(jìn)行驗(yàn)證,不要仿真,仿真不出來的
回復(fù)

使用道具 舉報(bào)

18#
ID:1001745 發(fā)表于 2022-10-20 14:39 | 只看該作者
Y_G_G 發(fā)表于 2022-10-19 17:58
這種功能本身就是沒有什么很高深的難度,就是功能多而已
函數(shù)就像模塊一樣,一個(gè)一個(gè)的去寫,一個(gè)一個(gè)的驗(yàn) ...

好的,謝謝指導(dǎo)。我比較菜我來試試看。我不仿真也用不來那玩意
回復(fù)

使用道具 舉報(bào)

19#
ID:1001745 發(fā)表于 2022-10-20 14:40 | 只看該作者
這是我畫的程序流程圖,各位大師幫忙看看思路對(duì)不對(duì)?
回復(fù)

使用道具 舉報(bào)

20#
ID:1001745 發(fā)表于 2022-10-20 15:11 | 只看該作者
流程圖
回復(fù)

使用道具 舉報(bào)

21#
ID:123289 發(fā)表于 2022-10-20 16:29 | 只看該作者
樓主的圖,當(dāng)是功能模塊圖。
程序的流程:一定是一個(gè)封閉的環(huán)路。因?yàn)槟愕某绦蚴且恢边\(yùn)行的,它沒有停止點(diǎn)。
也即任何一個(gè)方塊都必須【有進(jìn)有出】無輸入只有一個(gè):開機(jī)。
回復(fù)

使用道具 舉報(bào)

22#
ID:401564 發(fā)表于 2022-10-20 18:47 | 只看該作者
你的代碼肯定會(huì)有一個(gè)while(1),那就是一個(gè)閉環(huán)的死循環(huán)
那么,你對(duì)應(yīng)的流程圖也得有一個(gè)跑回去的流程才對(duì)呀
大概是:
A,開機(jī)
B,相關(guān)初始化
C,按鍵檢測(cè)
D,電壓檢測(cè)
E,溫度檢測(cè)
F,相關(guān)指示,數(shù)碼管或者LED燈之類的
G,回到C
如果有中斷,中斷就是在這個(gè)循環(huán)之外執(zhí)行的
回復(fù)

使用道具 舉報(bào)

23#
ID:1001745 發(fā)表于 2022-10-20 19:24 | 只看該作者
yzwzfyz 發(fā)表于 2022-10-20 16:29
樓主的圖,當(dāng)是功能模塊圖。
程序的流程:一定是一個(gè)封閉的環(huán)路。因?yàn)槟愕某绦蚴且恢边\(yùn)行的,它沒有停止點(diǎn) ...

謝謝指導(dǎo),也就是相當(dāng)于要執(zhí)行主程序循環(huán)這個(gè)意思是吧?
回復(fù)

使用道具 舉報(bào)

24#
ID:1001745 發(fā)表于 2022-10-20 19:24 | 只看該作者
Y_G_G 發(fā)表于 2022-10-20 18:47
你的代碼肯定會(huì)有一個(gè)while(1),那就是一個(gè)閉環(huán)的死循環(huán)
那么,你對(duì)應(yīng)的流程圖也得有一個(gè)跑回去的流程才對(duì)呀 ...

明白了,就是主程序循環(huán)執(zhí)行吧?謝謝指導(dǎo)
回復(fù)

使用道具 舉報(bào)

25#
ID:1048438 發(fā)表于 2022-10-21 10:18 | 只看該作者
電路圖還是要自己認(rèn)真去做,去完成的,沒有人能幫助你,加油,小伙子
回復(fù)

使用道具 舉報(bào)

26#
ID:1048438 發(fā)表于 2022-10-21 10:18 | 只看該作者
盡量一個(gè)功能一個(gè)功能認(rèn)真的去實(shí)現(xiàn)
回復(fù)

使用道具 舉報(bào)

27#
ID:1001745 發(fā)表于 2022-10-22 08:15 | 只看該作者
ay247 發(fā)表于 2022-10-21 10:18
電路圖還是要自己認(rèn)真去做,去完成的,沒有人能幫助你,加油,小伙子

謝謝回復(fù),電路圖已經(jīng)畫好了。其實(shí)大家都幫助了很多。謝謝鼓勵(lì)!
回復(fù)

使用道具 舉報(bào)

28#
ID:1001745 發(fā)表于 2022-10-22 08:16 | 只看該作者
ay247 發(fā)表于 2022-10-21 10:18
盡量一個(gè)功能一個(gè)功能認(rèn)真的去實(shí)現(xiàn)

謝謝回復(fù),目前正在一步一步去驗(yàn)證
回復(fù)

使用道具 舉報(bào)

29#
ID:517466 發(fā)表于 2022-10-22 09:18 | 只看該作者
涉及定時(shí)的,用得到定時(shí)器中斷處理。主程序中設(shè)置啟動(dòng)標(biāo)志,定時(shí)中斷中根據(jù)標(biāo)志控制輸出、計(jì)算時(shí)間,時(shí)間到,清除標(biāo)志和改變控制輸出。中斷處理本身也需要一個(gè)流程。剛?cè)胄�,�?jiǎn)單看下程序結(jié)構(gòu)設(shè)計(jì)、流程圖設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表