這是我上個月做的單片機秒表課程設計,這個課程設計是實現00到99秒的一個秒表,
并且有開始和復位功能,
用了一個星期的時間,
附件里面包含秒表的單片機源程序,proteus仿真電路圖和課設文檔,
都是自己做的,請大家多多指教。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
秒表的設計與仿真
一、設計要求
設計一個2位的LED數碼顯示的“秒表”:顯示時間為00—99秒,每秒自動加1,另設計一個“開始”鍵和一個“復位”鍵。
二、方案論證
方案一:
用數字電路來實現秒表的設計。由NE555定時器組成的多諧振蕩器通過開關控制,把脈沖送到計數器,通過計數器計數,在送入譯碼器進行譯碼,最后送入數碼管進行顯示。框圖如下:
(見附件)
優點:用到了之前學習的數電的相關知識,用NE555等一系列芯片就可以實現秒表的數字電路,顯示直觀,讀取方便,精度高,不需要軟件編程。
缺點:使用的硬件非常多,使用的空間非常大,電路十分復雜,從經濟上也不是很劃算。
方案二:
用單片機控制秒表來實現,采用AT89C51單片機為中心器件,利用其定時器/計數器定時和記數的原理,結合硬件電路如電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等來設計計時器,將軟件和硬件結合起來。其中軟件部分采用的是C語言編寫程序,包含了顯示程序,中斷,延時程序等等,硬件用的Proteus軟件來連接的秒表電路,主要使用了AT80C51芯片,晶振,電容等基本器件。框圖如下:(見附件)
優點:利用了單片機的定時功能,只需要少量的連線再加上軟件編程控制,就可以實現秒表的設計電路,節省了花費,提高了技術的精度,更加容易修改。
缺點:除了連接硬件電路,增加了軟件的編程,需要額外掌握軟件的編程技術,還要考慮到硬件的連接來進行編程。
通過上面兩種方案的比較,可以發現單片機使用的硬件更加少,計時的精度也很高,節省了很大的空間,修改時只需要修改部分程序和部分接線就可以改變計數方式和技術范圍,所以這次的秒表的設計應該選擇單片機設計的方案二。
三、理論設計
硬件部分
1.按鍵電路:
1.1 當按下K1鍵時給P1.6接口一個低電平,單片機工作,數碼管開始顯示,進行開始功能。
1.2 當按下K2鍵時給P1.7接口一個低電平,單片機工作,數碼管清零,進行復位功能。
2.復位電路:
2.1按鍵按下給單片機的RST接口一個高電平,讓單片機系統復位。
3.晶振電路:
3.1晶振電路為單片機合格的時鐘信號流,給整個電路的時序提供一個基本時鐘,這里晶振頻率為11.0592MHz。
4.顯示電路:
4.1采用兩個共陽LED數碼管,通過單片機的P0接口和P3接口來驅動顯示出秒數的個位和十位。
軟件部分
軟件流程圖如下:
(見附件)
四、電路仿真及仿真結果分析
仿真結果:將Keil生成的。hex文件添加到AT80C51中后,運行仿真電路如圖所示,會顯示出00到99s的秒表功能,系統可以正常工作。
五、心得體會
通過這次課程設計,認識到自己有很多不足之處,需要根據課程的設計要求找到合適的方案,設計好程序流程圖,以此來寫出相應的程序,還地添加一些額外程序來試系統變得更加穩定,程序應該由各種子程序組成,并加上注釋,這樣程序出錯時或者仿真運行顯示不出正確的結果時,可以更加方便的找到出錯的地方。這次的秒表設計,仿真硬件電路不是很麻煩,主要都是需要寫出適合的正確的程序來進行驅動,通過這次的課程設計,更加系統的鍛煉了自己。
單片機源程序:
#include typedef unsigned char uint8; typedef unsigned int uint16; /*七段共陰管顯示定義*/ uint8 code dispcode[ ]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; /*定義并初始化變量*/ uint8 seconde=0;// second 調整定義 uint16 mstcnt=0;//minite調整定義 sbit key1=P1^6; //定義P1.6端口為按鍵1 sbit key2=P1^7;//定義p1.7端口為按鍵2 /*函數聲明*/ void delay(uint8 k ); //延時子程序 void time_pro( ); //時間處理子程序 void display( ); //顯示子程序 void keyscan( ); //鍵盤掃描子程序 /*延時子程序*/ void delay (uint8 k) { uint8 j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } /*時間處理子程序*/ void time_pro(void) { if(seconde==99)//秒鐘設為99進制 { seconde=0; } } /* 顯示子程序*/ void display(void) { P0=dispcode[seconde/10]; //顯示秒的十位 delay(4); P3=dispcode[seconde%10]; //顯示秒的個位 delay(4); } /*鍵盤掃描子程序*/ void keyscan (void) { if(key1==0) //按鍵1為開始鍵 { delay(60); if(key1==0) EA=1; delay(60); seconde++; } if(seconde==99) {seconde=0; } if(key2==0) //按鍵2為復位鍵 { delay(60); if(key2==0) { delay(60); seconde=0; delay(60); EA=0; } } } /*1s定時子程序 */ void timer0(void) interrupt 1 using 0 { TH0=0xff; TL0=0x19; TMOD = 0x01;//定時器0方式1,250us中斷一次 mstcnt++; if(mstcnt==4000) { seconde++; mstcnt=0; //對計數單元的清零 } } /*主函數*/ void main(void) { P0=0xff; //初始化p0口,全設為1使數碼管 TMOD = 0x01; //time0為定時器,方式1 TH0=0xff; //預置計數初值 TL0=0x19; EA=0; ET0=1; TR0=1; while (1) { keyscan( ); //按鍵掃描 time_pro( ); //時間處理 display( ); //顯示時間 } }
上一篇:51單片機控制LCD12864顯示漢字
下一篇:基于單片機的ADC0809數字電壓表設計報告(匯編語言)
推薦閱讀
史海拾趣
Eby Electro Inc公司的創始人李明,是一位對電子技術充滿熱情的工程師。在20世紀90年代初,他看到了電子行業的巨大潛力和未來發展趨勢,于是決定創立自己的公司。起初,公司只有幾名員工,主要業務是設計和制造電子零部件。李明憑借其過硬的技術能力和對市場的敏銳洞察,帶領公司逐步打開了市場。他堅持質量第一的原則,贏得了客戶的信任。隨著業務的拓展,Eby Electro Inc逐漸在電子行業中嶄露頭角。
大毅科技于1989年成立,是臺灣的一家新興企業。在公司成立的初期,大毅科技就專注于晶片電阻的研發與生產,這在當時是一個相對新興且競爭激烈的領域。創始人憑借對技術的深刻理解和敏銳的市場洞察力,帶領公司逐步在市場中站穩腳跟。通過不斷的技術創新和產品優化,大毅科技逐漸獲得了客戶的認可,并在行業中樹立了自己的品牌。
作為一家專注于顯示芯片設計的企業,集創北方始終將技術創新作為核心競爭力。從早期的LED驅動芯片到后來的AMOLED驅動芯片,再到國內率先推出的TDDI芯片ICNL9920,集創北方不斷推出具有競爭力的產品,滿足了市場對于高質量顯示芯片的需求。
隨著全球對可持續發展的關注度不斷提高,AVG也積極響應這一趨勢,將可持續發展理念融入公司的戰略和運營中。公司注重環保和節能減排,采用環保材料和生產工藝,減少對環境的影響;同時,AVG還積極參與社會公益事業,為社會做出貢獻。這些舉措不僅提升了AVG的社會形象,也為公司的長遠發展奠定了堅實的基礎。
這些故事只是AVG Semiconductors(HITEK)在電子行業發展中眾多精彩瞬間的一部分。通過技術創新、市場擴張、合作伙伴關系的建立以及應對挑戰和危機的能力,AVG不斷壯大自身實力,為電子行業的發展做出了重要貢獻。未來,AVG將繼續秉持創新精神和社會責任感,在電子行業中書寫更加輝煌的篇章。
隨著市場經濟的高速發展,中國IT業步入了一個人才稀缺的時代。作為最被看好的熱門專業,其迅猛發展有目共睹,從而導致IT人才的培養速度無法跟上IT行業的發展,每年的人才缺口就達數百萬人。為了在激烈的就業競爭中占領一席之地,減小就業壓力, ...… 查看全部問答∨ |
wince下串口問題,平時數據傳輸正常,但鼠標反復點擊移動有時就會使串口數據錯誤,或者是界面切換時。我感覺是系統忙了有時會影響串口讀取。波特率的57600,不算很高吧?緩沖區我也設置的很大了。數據沒有丟失,只是出現錯誤。例如我發送端發的全是 ...… 查看全部問答∨ |
我在編譯、鏈接EVC程序時出現如下錯誤,不知如何解決,請高手指點,謝謝! (1)error C2011: \'_CPs_FileInfo\' : \'struct\' type redefinition (2)error C2440: \'=\' : cannot convert from \'void (__cdecl *)(struct _CPs_CoDecModule *) ...… 查看全部問答∨ |
usb驅動,應用程序能夠打開設備,但是發送數據的時候堵在了SubmitUrb 是什么原因使得發送數據阻塞啊? PURB pUrb = m_Endpoint2OUT.BuildBulkTransfer( &nbs ...… 查看全部問答∨ |
前些天有朋友和我討論,"感覺TI的M3在網上討論的不多",下面是我的一些看法: 原來luminary平臺比較小,所以當年zlg想把它推廣起來,難度肯定是相當大的,這里面不只是技術問題,還涉及到渠道、產能、服務、信任、品牌等諸多因素,而在這方面l ...… 查看全部問答∨ |
|
Can\'t Run Target CPU: Can\'t write to data memory 0x950, check memory config [-2184] Can\'t Run Target CPU: Can\'t write to data memory 0x951, check memory config [-2184] … 查看全部問答∨ |
請問STM32F10X_MD和STM32F10X_MD_VL區別 請問STM32F10X_MD_VL和STM32F10X_MD有什么區別啊,網上查了查,有如下說明 cl:互聯型產品,stm32f105/107系列vl:超值型產品,stm32f100系列xl:超高密度產品,stm32f101/103系列ld:低密度產品,FLASH小于64Kmd:中等密度產品,FLASH=64 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 有獎直播 | 德州儀器基于 Arm 的 AM62 處理器簡介
- 最后一周:免費獲取Pasternack《RF產品選型指南》2018 印刷版!
- 有獎直播|如何借助Mentor Xpedition AMS對汽車CAN總線進行仿真優化分析?
- 如何用3個關鍵步驟,來確保下一代設計安全性,深入解讀嵌入式設備DeepCover加密控制器,看視頻答題贏好禮!
- 好書共讀:《硬件設計指南:從器件認知到手機基帶設計》
- 【預約有禮】全球測量圈大咖直播:驗證5G核心網,確保最佳性能
- 中秋“國宴“ :拍攝板卡上的國產元器件,抽開心小禮品
- Keysight教你如何提高測試精度,答對問題還有禮品相送,速速參與!
- TI 培訓推薦有禮活動
- 【分享成長,10月有獎】EEWORLD優秀主題/回復第15期活動開始啦!!!