A. 用89S52單片機設計一個6位顯示的電子計時系統。6位LED分別顯示時、分、秒(各兩位)。
讀書時的課程設計中的部份,當時覺得寫的還不錯,現在看起來有點誇張,有很大的發揮簡化空間,很多語句都不成熟,但是還是完成了設計要求了,這是未簡化的版本,裡面有電路圖和程序(用匯編語言寫的),現放在我的空間里,自己去下吧http://www.hsz.ik8.com//mcu.rar
裡面可設兩個鬧鍾,可以設置開和關。可以調時間還有日期也能調包括年月日小時分鍾秒.
這是我以前回答過的題,為什麼不搜索一下呢
B. 單片機秒錶設計(含按鍵,中斷,定時器等)
#include<reg52.h>
#define uint unsigned int
/*int code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x84,0x0E};*/
/*uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num=0,aa=0,,shi,ge;
void display(uint ,shi,ge);//數碼管位顯示子函數
void init(); //定時器子函數
void delay(uint z); //延時子函數
void main()
{
init();//初始化定時器
while(1)
{
if(aa==20)
{
aa=0;
num++;
if(num==100)num=0;
=num/100;
shi=num%100/10;
ge=num%10;
}
display(,shi,ge);
}
}
void display(uint ,shi,ge)
{
P1=0xfe;
P0=table[];
delay(5);
P1=0xfd;
P0=table[shi];
delay(5);
P1=0xfb;
P0=table[ge];
delay(5);
}
void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
}
void init()
{
TMOD=1;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}*/
C. 課程設計數字秒錶設計 求高手解答。
一 設計說明書
1.設計任務
(1) 進行設計方案的比較,並選定設計方案;
(2) 完成單元電路的設計和主要元器件說明;
(3) 安裝各單元電路,要求布線整齊、美觀;
(4) 寫出課程設計報告文檔。
2.設計要求
(1) 設計並製作符合要求的電子秒錶;
(2) 秒錶由6 位七段LED顯著器顯示,其中兩位顯示分,四位顯示
秒,其中顯示的分辯率為0.01 秒;
(3)計時最大值為99 分59點99秒;
(4)計時誤差不得超過0.01秒;
(5)具有自動清零、啟動計時、暫停計時及繼續計時等控制功能;
(6) 控制操作按鍵不得超過2個。
3.提高部分
3.1 安裝自己設計的電路
(1)檢查元器件
(2)對電路進行組裝:按照自己設計的電路,在麵包板上插接元器件或在通用板上焊接。焊接完畢後,應對照電路圖仔細檢查,看是否有錯接、少接、虛焊的現象。
3.2. 通電調式
(1)通電測試:對安裝完成的電路板的參數及工作狀態進行測量,以便提供調整電路的依據。
(2)通電調試:經過反復的調整和測量,使電路的性能達到要求。
3.3 書寫調試報告
課程設計說明書書寫格式
參照「課程設計說明書書寫格式」文件。
4.參考資料
1、《數字電子技術導論》西安交通大學 . 何金茂主編
2、《數字電子技術基礎》高等教育出版社. 康華光主編
3、《數字電子技術》 高等教育出版社。 楊志忠主編
二.方案論證
2.1.方案的選擇
通過對設計要求的分析,應用相關的數字電子電路方面的知識畫出原理圖,檢查無誤後,將原理圖在EWB中模擬,驗證通過無誤後,可以考慮使用何種方案來實現設計電路。我們可以通過對照原理圖在萬能板上焊接來實現所設計的電路;也可以在PROTEL中畫出原理圖並布好線通過做PCB板來實現所設計的電路;還可以通過在麵包板上插線來實現設計的電路。因在商店只買到萬能板,所以我們採用萬能板接線。
2.2電路總體功能、結構的分析
本電路的目標為設計一個數字式秒錶。如圖2.1所示,數字式秒錶電路系統由主體電路和擴展電路兩部分組成。其中主體電路完成計數功能,控制電路完成控制的擴展功能。通過所設計電路將實現具有清零、啟動、暫停、繼續等控制功能的計時數字式秒錶。
根據電路所需要達到的要求,可以將電路的總體結構框圖描述(如圖2.2):
圖2.2 多功能數字式秒錶系統的組成框圖
設計時各部分所用的器件名稱如下:
時鍾信號:由555組成的多諧振盪器。
計數器:74LS190
鎖存器:CT74LS373
解碼器:CT74LS47
顯示器:BS201
三. 555組成的多諧振盪器簡介
3.1 555與RC組成多諧振盪器
由門電路組成的多諧振盪器雖具有多種電路的形式,但它們無一例外地具有如下的共同的特點。首先,電路中含有開關器件,如門電路、電壓比較器、BJT等。這些器件主要用作產生高、低電平;其次,具有反饋網路,將輸出電壓恰當地反饋給開關器件,使之改變輸出狀態;另外,還要有延遲環節,利用RC電路的充、放電特性可實現延時,以獲得所需要的振盪頻率。在許多實用電路中,反饋網路兼有延時的作用。圖3.1.1是一種最簡型多諧振盪器。
3.2振盪周期的計算
在振盪過程中,電路狀態的轉換主要取決於電容的充、放電時間,而轉換時刻則取決於 的數值。根據以上分析所得電路在狀態轉換時 的幾個特徵值,可以計算出周期T
四 晶元簡介
4.1 74LS190
74LS190是一種較為典型的集成同步十進制加/減法計數器。圖中 ̄LD為非同步
置數控制端, ̄CT為計數控制端,D0-D3為並行數據輸入端,Q0-Q3為輸出端, ̄U/D為加減計數控制端。CO/BO為進位/借位輸出端。 ̄(RC)為行波時鍾輸出端。CT74LS190沒有專門的置0輸入端,但可以藉助於數據D3D2D1D0=0000時,實現計數器的置0功能。
74LS190的引腳圖、功能表如下圖所示。
4.1.1 74LS190的引腳圖
表4.1.1 74LS190的功能表
輸入 輸出
CP R0(1) R0(2) S9(1) S9(2) QA QB QC QD
X 1 1 0 X 0 0 0 0
1 1 X 0 0 0 0 0
X X 1 1 1 0 0 1
↓ X 0 X 0
計數
0 X 0 X
0 X X 0
X 0 0 X
(1)非同步置數功能:當 ̄LD=0時,不論有無脈沖CP和其他信號輸入,並行輸入的數
據d3-d0被置入計數器相應的觸發器中,這時Q3Q2Q1Q0=d3d2d1d0.
(2) 計數功能: 取 ̄CT=0, ̄LD=1。當 ̄U/D=0時,在CP脈沖上升沿作用下,進行
十進制加法計數。當 ̄U/D=1時,在CP脈沖上升沿作用下,進行減法計數。
(3) 保持功能:當 ̄CT= ̄LD=1時,計數器保持原來的狀態不變。
4.2 CT74373
鎖存器的原理圖如下圖
圖4.2.1鎖存器的原理圖
C是鎖存器信號的輸入端,D是數據輸入端Q和Qo是數據互補輸出端。當C=0時,G2被封鎖,輸出0,G3被封鎖輸出1。G5輸出Q=D,Qo=Do(D和Do是數據互補)。當C由0變1時,分兩種情況討論:一是當C由0變1時,Qo=1,Q=0,G2被封鎖,由於G3兩個輸入都為1,其輸出為0。G4門也被封鎖。G2門的輸出Qo=1。原來的狀態不改變。其二是當C由0變1時,Qo=0,Q=1。G2門的兩輸入均為1,則輸出Qo=0,使Q=1。D無論是0還是1也不改變原來的狀態。綜合上述分析,可看出:C=0時,Q=D,電路不鎖存數據,相當於緩沖器。當C=1時,D不影響電路狀態。C由0變1時將數據D鎖定並保持。直到C由1變回0。
圖4.2.2 CT74LS373的引腳圖
CT74LS373是一種典型的8位鎖存器,OC是三態輸出控制,低電平有效。即此端加低電平時輸入數據能達到輸出端,加高電平時8個輸出均呈高阻態,C是鎖存器的鎖存控制輸入端。C下降沿鎖存數據並低電平保持,高電不鎖存,輸入數據直達輸出端。每個鎖存器只有一個同相輸出沒有互補輸出。符號中輸出輸入端引線上所標帶的數字是該端在晶元上的引腳號。
表4.2.1 CT74373功能表:
輸入 輸出
OC C D Q
L H H H
L H L L
L L X Qo
H X X Z
表中第1、2行表示在OC為低電平、C為高電平時,Q隨D變化,第三行表示OC和C都為低電平Q保持原狀態QO不變。第四行表示OC為高電平時輸出Q為高組態Z。
4.3 74LS47
圖4.3.1 74LS47引腳
1腳:二進制的置位輸入端;2腳:使能端;
3腳:五進制置位端輸入;4腳:輸出
5腳:輸出;6腳:使能端;7腳:接地端
8腳:輸出端;9腳:輸出端;10腳:二進制時鍾信號;11腳:五進制時鍾信號;12腳:二進制復位輸入;13腳:五進制復位輸入;14腳:接電源
表4.3.1 74LS47功能表
4.4 顯示解碼器
現在的許多電器設備上都有顯示十進制字元的字元顯示器,以直觀的顯示出電器設備的運行數據。目前廣泛使用的字元顯示器是七段字元顯示器,或稱七段數碼管。常見的七段數碼管有液晶顯示數碼管和半導體數碼管兩種。
液晶顯示數碼管是利用液晶材料的透明度或者顯示的顏色受外加電場控制的特點製成的,簡稱LCD。
半導體數碼管是由七段發光二極體(Light Emitting Diode)組成,簡稱LED。圖4.4.1是LED的引腳及其等效電路。
圖4.4.1 (a)LED的引腳及其等效電路。
LED產品的種類繁多,有圖4.4.1(b)、(c)所示的共陰極電路,還有共陽極電路,常用的數碼顯示器有BS201,BS202等。
要驅動LED正常的顯示十進制數的十個字元,LED前面必須接一個顯示解碼器。
顯示解碼器可實現的邏輯功能是:將輸入的8421BCD碼轉化成驅動LED發光的高、低電平信號,驅動LED顯示出不同的十進制數字元,下面來討論顯示解碼器的組成。
因顯示解碼器可以驅動LED顯示出0~9這十個數字字元,十個數字字元對應十種高低電平的組合狀態,要描述這十種高、低電平的組合狀態必須用4位二進制數,根據LED發光的特點可得描述顯示解碼器邏輯功能的真值表如表4.4.1所示。
表4.4.1 顯示解碼器邏輯功能真值表
4.4.2七段數字顯示器發光段組
4.5 四2輸入與非門74LS00
圖4.5.1 74LS00引腳圖
上圖中1、2、3組成一個與非門,其中1、2是輸入,3為輸出。4、5、6組成一個與非門,其中4、5是輸入,6為輸出。8、9、10組成一個與非門,其中9、10是輸入,8為輸出。11、12、13組成一個與非門,其中12、13是輸入,11為輸出。
4.6 四二輸入與門74LS08
五設計原理圖
一百進制
接線時按照原理圖的腳將各個晶元連接,連接 時小心短路。
二十四進制
六.安裝工藝
6.1 安裝工具
焊烙鐵 1個,松香 1盒,焊錫 1卷,剝線鉗 1個, 尖嘴鉗 1個, 電工刀 1個, 數字萬用表 1個, 鑷子 1個。
6.2. 安裝具體步驟
⑴ 首先要弄清萬能板的結構原理,分清各插空是否是等位點;
⑵ 其次合理安排集成塊和元器件的位置,盡可能的保持在同一條直線上。
⑶ 注意導線的剖削,剖削導線絕緣層,要求剖削後的芯線長度必須適應連接需要,不應過長或過短,且不應損傷芯線。為了美觀剖削導線時不用火燒,用剝線鉗或電工刀剖削。具體操作方法如下:按連接所需要長度,用鉗頭刀口輕切絕緣層,用左手捏緊導線,右手適當用力,即可使端部的絕緣層脫離芯線,用電工刀時,刀口對導線成45度角切入塑料絕緣層。
⑷ 導線的布置,布線要注意整齊不交叉。要求導線豎的要直、橫要平,盡量減少懸線的存在。這樣便於調整與測試工作的順利進行。布線具體方法步驟如下:為了最大可能避免錯誤的出現,應按元件的排列順序依次布線,同一元件可按管腳的順序依次布線。
6.3. 安裝注意事項
(1) 安裝應接觸良好,保證被安裝元件間能穩定可靠地通過一定的電流。
(2) 應避免元器件損壞的發生。插拔元器件時候要垂直插拔以免造成不必要的機械損壞。
(3) 安裝時必須採用絕緣良好的絕緣導線,連線的時候要取好元件與元件的距離。連接的時候線和線之間的交叉盡量的少。
7.調試與測試
7.1調試前的檢測
電子安裝完畢,通常不宜急於通電,先要認真檢查一下。檢查內容包括:
(1)連線是否正確
檢測的方法通常有兩種方法:
a. 根據電路圖連線,按元件的排列順序依次檢查
這種方法的特點是,按一定順序一一檢查安裝好的線路,同一元件按管腳的順序依次檢察。由此,可比效容易查出錯線和少掉的線。
b.按照實際線路來對照原理圖電路進行查線
這是一種以元件為中心進行查線的方法。把每個元件引腳的連線一次查清,檢查每個去處在電路圖上是否存在,這種方法不但可以查出錯線和少掉的線,還容易查出多線。
為了防止出錯,對於已查過的線,應在電路圖上做出標記,最好用指針式萬用表「歐姆1」檔,或用數字萬用表的「二極體」檔的蜂鳴器來測量元器件引腳,這樣可以同時發現接觸不良的地方。
(2)元器件的安裝情況
檢查元器件引腳之間有無短路;連接處有無接觸不良;二極體的極性和集成元件的引腳是否連接有誤。
(3)電源供電,信號源連接是否正確。
(4)電源端對地是否有短路的現象。
註:在通電前,斷開一根電源線,用萬用表檢查電源端對地是否存在短路。若電路經過上述檢查,並確認無誤後,就可以轉入調試。
7.2通電觀察
把經過准確測量的電源接入電路。觀察有無異常現象,包括有無冒煙,是否有異味, 手摸器件是否發燙,電源是否有短路現象等。如果出現異常,應立即斷電源,待排除故障後才能再通電。然後測量各路總電壓和各器件的引腳的電源電壓,以保證元器件正常工作。
7.3調試中注意事項
調試結果是否正確,很大程度受測量正確與否和測量精度的影響。為了保證調試的效果,必須減小測量誤差,提高測量精度。為此,需注意以下幾點:
(1) 調試前先熟悉各種儀器的使用方法,並仔細加以檢查,以避免由於使用儀器不當,或儀器的性能達不到要求,而造成測量結果不準,以至做出錯誤的判斷。
(2) 測量儀器的地線應於被測量儀器的地線連在一起,並形成系統的參考地電位,這樣才能保證測量結果的准確性。
(3) 要正確選擇測量點和測量方法。
(4) 調試過程中自始至終要有嚴謹的科學作風,決不可急於求成。在調試過程中,不但要認真觀察測量,還要記錄並善於進行分析、判斷。切不可一遇問題,就沒有目的的亂調和亂改接線,甚至把電路拆掉重新安裝。這樣,不但不能解決問題,相反還會發生更大的故障,甚至損壞元器件及測量儀器。
7.4 故障的排除
新電路板出現故障是常見的,每個學生都必須認真對待。查找故障時,首先要有耐心,還要細心,切忌馬馬虎虎,同時還要開動腦筋, 認真進行分析、判斷。
當電路工作時,首先應關掉電源,再檢查電路是否有接錯、漏掉線、斷線,有沒有接觸不良、元器件損壞、插錯了的元器件、元器件引腳接錯等。查找時可藉助萬用表進行。
對於一個完整的系統電路,迅速而准確的排除故障,需要一定的實際工作經驗,對於初學者來說,首先應認真分析電路圖,並善於將全電路分解成幾個功能塊,明確各部分信號傳遞關系及工作原理。然後根據故障現象及有關測試數據,分析和初步確定故障可能出現的部位,再按上述步驟仔細檢查這一部分電路,就可能比較快地找到故障點及故障原因。
8. 元器件清單
(1) CT74LS191——同步十進制計數器(7片);
(2) CT74LS08——四二輸入與門(2片);
(3) CT74LS373——8位鎖存器(3片);
(4) CT74LS48——BCD七段解碼器/驅動器(6片);
(5) CT74L00——四二輸入與非門(2片);
(6) BS201——----共陽極數碼顯示管(6片);
(7) 電阻2個,電阻48KΩ2個, 電阻2 1個;
(8) 開關2個,電源VCC +5V一個;
(9) 導線若干。
(備註:有些元件買不到,因而用相似功能的晶元代替)
9.心得體會
通過幾個星期的努力,最終把這次課程設計的任務完成了。這是我們進行的第一個課程設計,讓我懂得了很多以前不知道的知識,如萬能板的內部結構、相關晶元的引腳功能等等。在設計中,遇到了很多問題,甚至有一些是以前沒有見到的。經過同學的幫助和老師的指導,最終克服了那些難題,鍛煉了我們的實踐動手能力,使我們真正做到了理論與實踐的有效結合。
製作電路時,深深體會到連接電路時一定要細仔細,一定要確保每條線路接觸性良好。實驗線路出現問題時,要耐心一步一步的去檢查。在實驗測試時,應保持冷靜,要有條理,遇問題時要聯系書本知識積極思考,同時記錄好實驗數據。
在這次課程設計過程中,我發現光有理論知識是不夠的,還必須懂一些實踐中的知識。所以在課程設計的實踐中,我們應將實驗與課堂教學結合起來,鍛煉自己的理論聯系實際的能力和實際動手能力。例如:檢查和排除故障的能力。
本次課程設計,也培養了我們小組的合作精神,所謂團結就是力量,就是一個再好不過的解釋。它不僅為我以後的課程設計打下基礎,而且還培養了我們的合作精神和分析問題的能力。
10. 參考文獻
[1] 康華光 .電子技術基礎(數字部分). 第四版 北京: 高等教育出版社,2005
[2] 閻 石 .數字電子技術基礎. 第四版 北京:高等教育出版社,1998
[2] 楊志忠 .數字電子技術. 北京:高等教育出版社,2000
[3] 張建華 .數字電子技術. 北京:機械工業出版社,1994
[4] 李亞伯 .數字電路與系統. 北京:電子工業出版社,1998
[5]陳華容 賈雅瓊.數電實驗指導書. 湖南:湖南工學院,2005
[6]謝自美 .電子線路設計-實驗-測試. 武漢:華中科技大學出版社,2005
[7]趙雅興 . 數字電路與FPGA. 北京 人民郵電出版社,2004
[8]鄧勇 鄧斌. 數字電路設計完全手冊 北京.國防工業出版社,2004
D. 要求:一 課程設計內容:設計一個單片機秒錶,該秒錶可顯示00.00到99.99秒的時間,進行相應的單片機硬體電
//Timer0
void Timer0_Init(void)
{
EA=1;
TMOD=0x01;
ET0=1;
TH0=(65535-10000)/256;
TL0=(65535-10000) %256; //賦初值,10ms中斷一次,即0.01秒
TR0=1;
}
void Timer0(void) interrupt 1
{
TH0=(65535-10000)/256;
TL0=(65535-10000) %256;
t++;
E. 單片機秒錶課程設計,急求!!!!
原理圖如下,
程序如下:
;=================================================
;寄存器分配定義
;=================================================
LED_BUF EQU 50H ;顯示數據首址
COUNTER_INT EQU 3BH ;中斷計數器
SECOND EQU 3DH ;秒單元
;=================================================
;常數定義
;=================================================
CN_COUNT_INT EQU 100 ;10ms * 100 = 1S
SET_MODEL EQU 0FFH ;完全解碼模式
SET_BRIGHT EQU 04H ;占空比為15/32;顯示亮度;
SET_LIMIT EQU 01H ;2位顯示方式;
SET_NORMAL EQU 01H ;測試模式
SET_START EQU 01H ;進入啟動工作方式?
;=================================================
;管腳分配定義
;=================================================
m7219_DIN BIT P3.0
m7219_LOAD BIT P3.1
m7219_CLK BIT P3.2
KEYSTART BIT P1.0
KEYRESET BIT P1.1
;============================================
;模擬主程序
;===========================================
org 0000h
ajmp main
ORG 000BH
LJMP Timer0Interrupt
org 0030h
main:
mov sp,#70h
lcall Init_M7219
lcall InitTimer0
; MOV SECOND,#95H ;TEST
Loop:
CALL disp
key_reset:
SETB KEYRESET
JB KEYRESET,key_start
; DELAY
NOP
NOP
NOP
JB KEYRESET,key_start
JNB KEYRESET,$
CLR TR0
MOV A,#0
MOV SECOND,A
MOV led_buf,A
MOV LED_BUF+1,A
JMP key_SCAN_END
key_start:
SETB KEYSTART
JB KEYSTART,key_SCAN_END
; DELAY
NOP
NOP
NOP
JB KEYSTART,key_SCAN_END
JNB KEYSTART,$
SETB TR0
key_SCAN_END:
JMP loop
;===========================================
InitTimer0:;10ms一次中斷
MOV TMOD,#01H
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB EA
SETB ET0
RET
;===========================================
Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#0D8H
MOV TL0,#0F0H
;========================
INC COUNTER_INT
MOV A,COUNTER_INT ;10ms 計數值加1
CJNE A,#CN_COUNT_INT,Timer0Interrupt_EXIT
MOV COUNTER_INT,#0
MOV A,SECOND
CJNE A,#99H,Timer0Int_sec
CLR TR0;關閉計時
JMP Timer0Interrupt_EXIT
Timer0Int_sec:
ADD A,#01 ;秒加1
DA A
MOV SECOND,A
SWAP A
ANL A,#0fH
MOV led_buf,A
MOV A,SECOND
ANL A,#0FH
MOV LED_BUF+1,A
;========================
Timer0Interrupt_EXIT:
POP ACC
POP DPL
POP DPH
RETI
;====================================================
; function:Init_M7219 ;初始化max719
; input: ------------
; output: ----------
; usage: a,b
;====================================================
Init_M7219: ;初始化Max7219
MOV a,#0bh ;設置掃描界限
MOV b,#set_limit ;設置位數
lcall w_7219
MOV a,#09h ;設置解碼模式
MOV b,#set_model ;00h非解碼模式;ffh為BCD解碼模式
lcall w_7219
MOV a,#0ah ;設置亮度
MOV b,#set_bright ;15/32亮度
lcall w_7219
MOV a,#0fh ;設置工作方式
MOV b,#set_normal ;正常工作方式
lcall w_7219
MOV a,#0ch ;進入啟動工作方式
MOV b,#set_start
lcall w_7219
RET
;===================================================
; function:disp ;顯示子程序
; input: r0
; output: -----------
; usage: r0,r3,r4,a,b
;===================================================
disp:
MOV r0,#led_buf
MOV r4,#01h
MOV r3,#set_limit
INC r3
disp1:
MOV a,@r0
MOV b,a
MOV a,r4
lcall w_7219
INC r0
INC r4
djnz r3,disp1
RET
;===================================================
; function:w_7219 ;顯示驅動程序;
; input: a ;傳送7219的地址
; b ;傳送7219的數據
; output:-------------
; usage: a,r2
;====================================================
w_7219:
CLR M7219_clk
CLR M7219_din
CLR M7219_load ;置load=0
lcall sd_7219 ;傳送7219的地址
MOV a,b
lcall sd_7219 ;傳送數據
setb M7219_load ;數據裝載
CLR M7219_din
RET
;=================================================
; function:sd_7219 ;向7219傳送數據或地址子程序
; input: a
; output: max7219
; usage: a, r2
;==================================================
sd_7219: ;向7219送地址或數據
MOV r2,#08h
c_sd:
CLR C
CLR M7219_clk
RLC a
MOV M7219_din,c ;准備數據
NOP
setb M7219_clk ;上升沿將數據傳入
NOP
NOP
CLR M7219_clk
djnz r2,c_sd
RET
F. 用52單片機C語言編寫程序,實現00~59計時。要求用T0,工作方式1。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6; //段選
sbit wela=P2^7; //位選
uchar shi,ge,num1,num2; //變數
uchar code table[]={0x3f,0x06,0x5b,0x4f, //共陰極字型碼
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x) //延時子程序
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
TMOD=0x01; //設置定時器0的工作方式
TH0=(65536-50000)/256; //裝初值
TL0=(65536-50000)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //啟動定時器0
}
void display() //顯示子程序
{
la=1;
P0=table[ge]; //送段選數據
la=0;
P0=0xff; //送位選數據前關閉所有顯示
wela=1;
P0=0xfe; //送位選數據
wela=0;
delay(5); //延時
la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
void main()
{
init();
while(1)
{
display();
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256; //重裝初值
TL0=(65536-50000)%256;
num1++;
if(num1==20) //到了20次,1秒時間到
{
num1=0; //清0重新計數
num2++;
if(num2==60)
num2=0;
P1=0x00;
delay(500);
P1=0xff;
shi=num2/10; //把一個2位數分離後分別送數碼管顯示
ge=num2%10; //十位和個位
}
}
試了的,可以放心,採納吧!
G. 52單片機製作秒錶問題
H. 要求:一 課程設計內容:設計一個單片機秒錶,該秒錶可顯示00.000到99.999秒的時間
#include<reg52.h>
#include<intrins.h>
void Delay1ms(); //@11.0592MHz
int ms=0;
int s=0;
void main()
{
while(1)
{
Delay1ms();//延時函數
ms++;
if(ms>=1000) //經過一千毫秒
{
ms=0; //讓一千毫秒的變數清零
s++; //秒變數加一
}//這里得到的就是數據,看你通過什麼顯示,然後將兩個數據填寫進去就行
}
}
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
剛剛給你寫的
I. 如何用單片機匯編語言設計一個秒錶
C51 http://..com/question/42921479.html?fr=qrl&cid=192&index=1
http://..com/question/29519178.html?fr=qrl&cid=192&index=2
1.基於單片機的設計
2.計時精度:百分之一秒
2.5鍵操作完成 清除 啟動 停止 設置初值 程序退出的功能
採用LED顯示時、分、秒、百分之一.PROTEL圖最好也有
用89C51,外接晶振,復位電路,二個數碼管,二個按鍵,做一個電子秒錶,具體要求為用按鍵起停電子表,可用按鍵設計倒計時時間(如10S,20S,60S),並啟動倒計時功能。能用按鍵選擇以上兩功能之一。
三、程序代碼:
A_BIT EQU 20H
B_BIT EQU 21H
TEMP EQU 22H
MOV P3,#0FFH
MOV P0,#0FFH
CLR F0
CLR F1
MOV DPTR,#NUMTAB
MOV P3,#0FFH
MOV P0,#0FFH
START:JB P3.6,START1
ACALL DELAY10
JB P3.6,START
JNB P3.6,$
LJMP GN1
START1: JB P3.7,START
ACALL DELAY10
JB P3.7,START1
JNB P3.7,$
LJMP GN2
GN1:
S1:MOV A,#0
MOV TEMP,A
GOON1: MOV R2,#2
JS1: MOV R3,#250
TIME1: MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,A
MOV A_BIT,B
LCALL DPLOP1
C1: JB P3.6,B1
ACALL DELAY10
JB P3.6,C1
JNB P3.6,$
CPL F0
ZT1: ; MOV P3,#0FFH
JB P3.6,$
ACALL DELAY10
JB P3.6,ZT1
JNB P3.6,$
LCALL DPLOP1
B1: JB P3.7,LOOP1
ACALL DELAY10
JB P3.7,B1
JNB P3.7,$
AJMP OVER
LOOP1: DJNZ R3,TIME1
DJNZ R2,JS1
INC TEMP
MOV A,TEMP
CLR C
SUBB A,#60
JNZ GOON1
ACALL OVER
RET
GN2: MOV A,#14H
MOV TEMP,A
MOV P3,#0FFH
MOV P0,#14H
GOON2: MOV R2,#2
JS2: MOV R3,#250
TIME2: MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,A
MOV A_BIT,B
MOV DPTR,#NUMTAB
DPLOP2: MOV A,A_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
ACALL DELY1
SETB P2.5
MOV A,B_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6
ACALL DELY1
SETB P2.6
C2: JB P3.6,B2
ACALL DELAY10
JB P3.6,C2
JNB P3.6,$
ZT2: MOV P3,#0FFH
JB P3.6,$
ACALL DELAY10
JB P3.6,ZT2
JNB P3.6,$
B2: JB P3.7,LOOP2
ACALL DELAY10
JB P3.7,B1
JNB P3.7,$
AJMP OVER
LOOP2: DJNZ R3,TIME2
DJNZ R2,JS2
DEC TEMP
MOV A,TEMP
JNZ GOON2
ACALL OVER
RET
OVER: AJMP START
DELY1: MOV R4,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET
DELAY10: MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
NUMTAB: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
DPLOP1: MOV A,A_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
ACALL DELY1
SETB P2.5
MOV A,B_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6
ACALL DELY1
SETB P2.6
RET
END
J. 求80c52單片機設計的倒計時器,快要交了!!
你是要用數碼顯示嘛?
不同的數碼現實程序有所不同的!給點分可以幫你寫個的