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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10852|回復: 20
打印 上一主題 下一主題
收起左側

幫我做一個秒表的程序!

[復制鏈接]
跳轉到指定樓層
樓主
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 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
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)





回復

使用道具 舉報

5#
ID:111634 發表于 2016-6-2 17:40 | 只看該作者
以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版
回復

使用道具 舉報

6#
ID:111634 發表于 2016-6-2 17:46 | 只看該作者
本帖最后由 zl2168 于 2016-6-2 17:48 編輯

⒈ 99.9秒秒表電路設計






設計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,觸發中斷,控制秒表快速響應,立即計時
回復

使用道具 舉報

7#
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 (307.81 KB, 下載次數: 113)

99.9秒秒表程序1.jpg
回復

使用道具 舉報

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

使用道具 舉報

9#
ID:111634 發表于 2016-6-3 12:42 | 只看該作者
請問慌張:“.....................”是什么意思?
回復

使用道具 舉報

10#
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的段的合成的(多個串)請自行修正。
回復

使用道具 舉報

11#
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。
回復

使用道具 舉報

12#
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。【完成復位】
回復

使用道具 舉報

13#
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;
回復

使用道具 舉報

14#
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的,所以每秒切換顯示被實現。
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

回復

使用道具 舉報

18#
ID:160673 發表于 2017-1-7 22:58 | 只看該作者
zl2168 發表于 2016-6-2 17:32
實例93    99.9秒秒表

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

請問一下c程序有嗎
回復

使用道具 舉報

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

使用道具 舉報

20#
ID:111634 發表于 2017-1-8 13:29 | 只看該作者
賢者 發表于 2017-1-7 22:58
請問一下c程序有嗎

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

使用道具 舉報

21#
ID:782295 發表于 2020-6-17 22:22 | 只看該作者
哥,我想問一下你這本書的電子版在哪找的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一道本视频 | 一区二区视频 | 日日噜 | 美女视频一区二区三区 | 日韩一区二区三区av | 中文字幕日韩在线观看 | 日本在线一二 | 男女免费网站 | 伊人最新网址 | av色站| 99久久婷婷国产综合精品首页 | 国产欧美精品区一区二区三区 | 国产大学生情侣呻吟视频 | 欧美激情一区 | 久久一区 | 中文字幕亚洲视频 | 日韩欧美一级 | 特级黄一级播放 | 国产激情在线 | 国产精品久久久久久吹潮 | 精品久久九九 | 亚洲成人午夜电影 | 午夜精品导航 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 国产成人精品高清久久 | 日韩成人在线电影 | 色视频网站 | 中文字幕电影在线观看 | 亚洲区一区二 | 亚洲欧美日韩中文字幕一区二区三区 | 国产精品一二三区在线观看 | 欧美精品黄 | 国产乱人伦精品一区二区 | 日本成人中文字幕在线观看 | 天天操夜夜拍 | 97av视频| 精品国产一区二区三区久久久四川 | 久久精品小短片 | 91精品国产乱码久久久久久 | 超碰av人人| 午夜久久久久久久久久一区二区 |