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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10790|回復: 20
收起左側

幫我做一個秒表的程序!

[復制鏈接]
ID:123241 發表于 2016-6-2 12:38 | 顯示全部樓層 |閱讀模式
1、AT89C51 單片機
2、獨立式按鍵 (用到key0和key1 兩個按鍵)
3、7段六位共陰極數碼管(7seg-mpx6-cc)

秒表程序要求(C語言)
1、顯示時間為 00.00~99.99s,每0.01s自動加1.
2、上電時 顯示 00.00。
3、設置功能鍵 K1,當按下該功能鍵,依次實現秒表的 啟動→暫停→復位→啟動→·······
4、設置功能鍵 K2,在復位狀態下按下該鍵,能循環顯示最近三次的計時值。(比如 K1暫停的值是00.20,按下K2則顯示00.20,延時1s后,顯示00.19,再延時1s后,顯示00.18)

要一個C語言程序(最好有解釋)和一個protues仿真圖,原理圖。

評分

參與人數 1黑幣 +4 收起 理由
1274257385 + 4 贊一個!

查看全部評分

回復

使用道具 舉報

ID:124702 發表于 2016-6-2 15:57 | 顯示全部樓層
哥們,這個太簡單,你自己花點時間寫下啊,不要太懶,學習也是種樂趣,祝你成功
回復

使用道具 舉報

ID:123241 發表于 2016-6-2 16:49 | 顯示全部樓層
張三豐 發表于 2016-6-2 15:57
哥們,這個太簡單,你自己花點時間寫下啊,不要太懶,學習也是種樂趣,祝你成功

我寫了,但是k2功能實現不了,不知道怎么弄。還有仿真圖不會,沒學過
回復

使用道具 舉報

ID:111634 發表于 2016-6-2 17:32 | 顯示全部樓層
本帖最后由 zl2168 于 2016-6-2 17:37 編輯

實例93    99.9秒秒表

Proteus仿真一下,盼挑刺、盼質疑、盼比較。


實例95 99.9秒秒表.rar (38.86 KB, 下載次數: 91)
回復

使用道具 舉報

ID:111634 發表于 2016-6-2 17:40 | 顯示全部樓層
以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版
回復

使用道具 舉報

ID:111634 發表于 2016-6-2 17:46 | 顯示全部樓層
本帖最后由 zl2168 于 2016-6-2 17:48 編輯

⒈ 99.9秒秒表電路設計

99.9秒秒表電路.jpg




設計99.9秒秒表電路如8-15所示,該電路與上例相似,刪除3位顯示、2個校正按鍵和4個秒閃爍發光二極管,就組成了99.9秒秒表電路。
80C51 RXD與控制秒十位輸出顯示的74HC595 DS端連接,595串行輸出端QS與下一595串行輸入端DS端連接,595并行輸出端Q0Q7與數碼管筆段agDp端連接,依次輸出3秒數據;小數點固定在第2位,通過電阻接地;TXD3595 CLK端連接,串行輸出時鐘脈沖,控制595串行移位;P1.73595 RCK端連接,控制輸出觸發595片內緩沖寄存器中數據進入輸出寄存器的正脈沖;K0連接,按下K0,觸發中斷,控制秒表快速響應,立即計時
回復

使用道具 舉報

ID:111634 發表于 2016-6-2 17:50 | 顯示全部樓層
本帖最后由 zl2168 于 2016-6-2 17:57 編輯

99.9秒秒表程序設計



fosc=6MHz,按8-15電路,要求一鍵三用:按第一次,秒表運行計時,最大計時99.9s,超過復0按第二次,秒表停運行,但保持最后顯示秒數。按第三次,秒表清0


T0定時器方式2定時500ms,計數200,即為0.1s,作為秒表最小計時單位。


T0初值=28 -500ms/2ms=256–250=6。因此,TH0 =TL0 = 06H

99.9秒秒表程序1.jpg

99.9秒秒表程序2.jpg



99.9秒秒表程序1.jpg
回復

使用道具 舉報

ID:111634 發表于 2016-6-2 18:07 | 顯示全部樓層
若需99.99秒,硬件電路增加一位595。軟件程序增加0.01s(10ms)計數器,并修改相應計數顯示程序。
回復

使用道具 舉報

ID:111634 發表于 2016-6-3 12:42 | 顯示全部樓層
請問慌張:“.....................”是什么意思?
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 22:37 | 顯示全部樓層
1,數碼管 一個段的電流在3-20mA,通常取10mA,8個段全亮時,共同極上有80mA.
2,AT89C51的引腳的IO低電平時可以吸收24mA,而高電平卻不能提供超過4mA的電流(更精確請查手冊)
3,所以建議:采用共陽的LED,這個可以直接驅動!用P1.0-P1.7接LED的A,B,C,D,E,F,G,H(第1、3、4的H【小數點】段不用,第2個用)的8個段,并串接8個電阻(每腳一個)。
4,多個LED可以用掃描顯示的方式進行顯示,即每個時刻只顯示一個LED,其它的LED不顯示,快速的切換各個LED(通過對陽極的供電與否),由于人眼有視覺殘留,所以看不出來是逐個顯示的。所以將每個LED的A與A,B與B……G與G并在一齊。第二個LED的H單獨占用一個IO口。
5、共陽極必須分別驅動,又因為最大驅動電流是80mA,所以需要加三極管放大電流,這里可以用NPN的三極管:如5551,9013等等。采用射極跟隨器的接法:三極管的B接IO口,如P3.x(P3.0-P3.3共4個);E接LED的陽極,C可以直接接電源5V.
4個LED用4個端口,4個三極管。
注意:P0口是OC輸出,無驅動能力,不能直接用。如果必須用P0口,需要加上拉電阻。
6、電阻的計算:設LED的紅色,其管壓降為1.4V(綠色為1.7V,建議查手冊),IO口低電平電壓取0.3V,小計壓損為1.4+0.3=1.7V。共陽的擴流三極管基極壓降0.7V,IO輸出高電平取4.5V。這樣加在電阻上的電壓為:
4.5-0.7-1.7=2.1V。所以R=2.1V/10mA=210歐(串在P1口上的8個電阻)。如果LED的段的合成的(多個串)請自行修正。
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 22:45 | 顯示全部樓層
顯示軟件部分:
1、取4個RAM單元(編號X0至X3)對應存放4個LED的顯示內容(這里是0亮1滅,共陽LED)。
2、取一個單元做計數器K,從0至3循環計數,分別對應顯示4個LED。
3、做一個時間中斷(如5ms中斷一次),每次將K+1,同時做如下動作:(注:當K=4時清K=0。)
4、當K=0時讓第1個LED的陽極為1;其余LED的陽極為0,并將X0中的數據送入P1口,即顯示第0個LED。以此類推:當K=3時讓第4個LED的陽極為1;其余LED的陽極為0,并將X3中的數據送入P1口,即顯示第4個LED。注意:一定要先關所有的陽極,再開某一個陽極,否則會有切換閃動。
如此每次中斷間隔5ms會切換一個LED顯示,人眼是看不出來的。
5、再取2個RAM單元(編號S、m)對應存秒、毫秒時間,再做一個10毫秒標記T(=0或1),每次中斷將T求反(0與1互變),當T=1時,將m+1,m=100時:將m清0,S+1,當S=100時將S清0。當T=0時,不做時間處理(S,m不變)。由于是5ms中斷一個,所以每次T=1時是0.01秒。如果中斷改為10ms則可以不要T,但顯示會有閃爍感!經驗:4位LED掃描,小于6ms就有閃爍感。
S,m最好用十進制,即每次ADD A,#1;時再做DAA調整,然后再將A送入S或m,當時間有變動時,需將S高四位,低四位,m的高四位,低四位進行LED譯碼,分別送入X0-X3。
6、譯碼方法:做一個表(從某個單元起放10個LED的顯示碼,分別顯示:0,1,2......9的LED段碼),例如:取S高四位,=幾,就取表中的第幾個數送入X0。
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 23:22 | 顯示全部樓層
啟動→暫停→復位→啟動→·······
有三個狀態循環,所以要增加的個計數器J,J=0,1,2。
起始J=0。【完成上電時 顯示 00.00】
每按一次K1,J+1。(這時有防彈動問題,由于0.01秒的計時【4位LED】,編程有技巧,這里不述。)
當J=3時清J=0。
當J=2時禁止對S、m計時;【完成暫停】
當J=1時允許對S、m計時;【完成啟動】
當J=0時禁止對S、m計時并清S=0、m=0。【完成復位】
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 23:42 | 顯示全部樓層
能循環顯示最近三次的計時值
需要有三個記錄時間的地方:增開6個單元:
S1、m1(存最近一次的時間記錄),
S2、m2(存再上一次的時間記錄),
S3、m3(存再再上一次的時間記錄)。
每次J=2時【暫停】時:
將S2、m2存入S3、m3;
將S1、m1存入S2、m2;
將S、m存入S1、m1;
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 23:54 | 顯示全部樓層
在復位狀態下按下K2:
這里需要增設一個一秒計時器P,P=0-199。
當J=0時【復位狀態】時,每中斷一次(5ms中斷一次),P+1,當P+1=200時,即1秒到,清P=0,并做下列事件:
將S1、m1存入S、m;
將S2、m2存入S1、m1;
將S3、m3存入S2、m2;
將S、m存入S3、m3;
因為中斷程序一直是在掃描顯示S、m的,所以每秒切換顯示被實現。
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 23:59 | 顯示全部樓層
如果中斷時間改為10ms則T可以不要,但LED顯示會有閃爍感。
經驗:4位LED在掃描時間小于6ms時,會有閃爍感,因人而異。
回復

使用道具 舉報

ID:123289 發表于 2016-6-4 00:04 | 顯示全部樓層
硬件上:LED數碼管不加電阻直接驅動,是不安全的,LED是非線性二極管特性,會產生大電流。
輕則發熱,重則由于電流增大,影響系統或燒壞IC或LED。
回復

使用道具 舉報

ID:123289 發表于 2016-6-4 00:12 | 顯示全部樓層
樓上參考圖:
會多用4顆驅動IC(每個LED一個),不經濟,也占線路板面積。
如果各段再增加限流電阻的話,會再多用3*7個電阻。

回復

使用道具 舉報

ID:160673 發表于 2017-1-7 22:58 | 顯示全部樓層
zl2168 發表于 2016-6-2 17:32
實例93    99.9秒秒表

先Proteus仿真一下,盼挑刺、盼質疑、盼比較。

請問一下c程序有嗎
回復

使用道具 舉報

ID:85726 發表于 2017-1-8 10:39 | 顯示全部樓層
大神們的資料夠多的了!至于K2循環顯示最近三次的計時值這一塊,程序里可以這樣編寫:K1實現三個功能,也就是要設定一個變量,比如keynum,啟動=1,暫停=2.復位=3,那么keynum=2可以每次暫停的時候把計時值賦給一個數組!等到你K2按下時再調用數組的值即可!(個人理解)
回復

使用道具 舉報

ID:111634 發表于 2017-1-8 13:29 | 顯示全部樓層
賢者 發表于 2017-1-7 22:58
請問一下c程序有嗎

仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。
回復

使用道具 舉報

ID:782295 發表于 2020-6-17 22:22 | 顯示全部樓層
哥,我想問一下你這本書的電子版在哪找的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品福利在线视频 | 91精品国产日韩91久久久久久 | 一区二区三区国产 | 久久伦理电影 | 午夜激情在线视频 | 日韩精品在线免费 | 久久国产精品久久国产精品 | 欧美激情精品久久久久久 | 2020国产在线 | 成人在线视频免费观看 | 四虎影院在线观看av | 91精品入口蜜桃 | 你懂的在线视频播放 | 国产一区二区三区四区 | 国产精品一区二区在线播放 | 国内精品伊人久久久久网站 | 国产精品高潮呻吟久久av黑人 | 一区二区三区在线 | 亚洲一区二区三区视频免费观看 | 国产精品一二区 | 日韩中文一区二区 | 日韩综合在线 | 中文字幕亚洲精品在线观看 | 黄色片在线看 | 操操日| 欧美日韩亚洲系列 | 狠狠入ady亚洲精品经典电影 | av在线播放不卡 | 91亚洲国产成人精品一区二三 | 一a一片一级一片啪啪 | 精品欧美乱码久久久久久 | 91精品久久久久久久久中文字幕 | 91xh98hx 在线 国产 | 欧美精品在线播放 | 欧美中文在线 | 国产精品久久久久久久久久久久久 | 欧美视频在线观看 | 青娱乐一区二区 | 国产一区二区在线观看视频 | 成年免费在线观看 | 日韩中文字幕在线播放 |