国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于AT89C51單片機控制的數(shù)字秒表的設(shè)計

2021-03-31 15:16蘇州健雄職業(yè)技術(shù)學院趙素玲
河北農(nóng)機 2021年3期
關(guān)鍵詞:秒表數(shù)碼管電路圖

蘇州健雄職業(yè)技術(shù)學院 趙素玲

1 控制要求

使用AT89C51單片機控制一個2片的七段數(shù)碼管,循環(huán)從00~99進行自動顯示。在此時間是可以根據(jù)要求進行調(diào)整的,并不一定是間隔時間為1秒。程序中延時子函數(shù)的延時時間的改變很容易就能進行時間長短的調(diào)整。該程序還很容易實現(xiàn)從99~00的倒計時,這種功能可以通過按鈕開關(guān)的選擇來實現(xiàn),但是加上了按鈕程序,程序就變得更復雜、更長。由于篇幅限制在本文中沒有使用按鈕程序,所以倒計時的程序是單獨給出的。系統(tǒng)的具體要求有以下四點:(1)以AT89C51芯片為核心控制器,加上外圍輔助電路,設(shè)計出系統(tǒng)仿真電路圖;(2)根據(jù)要求用Keil軟件編寫出C語言程序代碼;(3)用一個2位的七段數(shù)碼管自動的從00~99正計時循環(huán)顯示;(4)用一個2位的七段數(shù)碼管自動的從99~00倒計時循環(huán)顯示。

2 系統(tǒng)硬件電路設(shè)計

2.1 系統(tǒng)仿真電路圖設(shè)計

圖1 電路仿真圖

系統(tǒng)仿真電路圖主要由AT89C51單片機芯片、電源、地、石英晶體振蕩電路、復位電路、兩片七段共陰極數(shù)碼管組成。兩個電容C2、C3(30PF)與X1(石英晶體)組成了石英晶體振蕩電路。電阻R1(1K)、電容C1(22UF)構(gòu)成復位電路。P1口控制2位七段數(shù)碼管,P1口輸出字形碼,由于P1口作為輸出口必須接上拉電阻。若是選用其他的三個口作為輸出口則不需要接上拉電阻,這是由AT89C51單片機自身的特點決定的。P2口是片選端,控制兩片數(shù)碼管進行輪流工作。P2口的輸入信號在1111 1110和1111 1101之間快速進行變化,這個變化的速度一定要夠快,若是慢了看起來就不是兩個數(shù)碼管在同時工作了,而是輪流工作。這里用到的是動態(tài)掃描的原理,所謂的動態(tài)掃描就是通過輪流控制兩個數(shù)碼管的片選端,使十位和個位數(shù)碼管輪流工作顯示相應的數(shù)字,這就是動態(tài)掃描。仿真電路中選的是共陰極的七段數(shù)碼管,需要給工作的數(shù)碼管輸入低電平“0”,給不工作的數(shù)碼管輸入高電平“1”。在電路中我選的是AT89C51作為核心控制器,設(shè)計的仿真電路圖如下圖1所示。

2.2 系統(tǒng)元器件清單

系統(tǒng)仿真電路元器件清單列表如表1所示。

表1 元器件清單列表

3 系統(tǒng)軟件設(shè)計

系統(tǒng)C語言程序代碼,以下為00~99正計數(shù)的秒表程序:

以下為99~00倒計數(shù)的秒表程序,在此倒計時的程序不是以圖片的形式給出的,而是源程序代碼。雙斜線后面的是程序注釋部分,程序在運行的時候是不運行這部分的,注釋是為了更清楚地表達每一條程序含義。#include//包括一個51標準內(nèi)核的頭文件。#define uchar unsigned char。#define uint unsigned int//為了方便對關(guān)鍵詞進行簡單的定義。uchar,code,smg1【10】={0x3f,0x06,0x5b,0x4f,0x660x6d,0x7d,0x07,0x7f,0x6f};//共陰極數(shù)碼管字形碼,在此只給出0到9的字形碼,ABCDEF的字形碼在這個 程 序 中 用 不 到 所 以 沒 有 給 出uchar,code,smg2[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極數(shù)碼管字形碼,相同在此只給出0到9的字形碼。

delay1ms(uint z)//帶有形參的延時1毫秒延時子函數(shù),可以通過改變Z的值來調(diào)節(jié)延時時間,Z值越大延時時間越長。

uchar x,y;for(x=z;x>0;x++);for(y=100;y>0;y--);void main()//主函數(shù);uchar i,j;//設(shè)變量;while(1)//大循環(huán);for(i=10;i>0;i--)for(j=10;j>0;j--);P2=0xfd;//P2=1111 1101顯示個位。P0=smg1[j-1];//P0口輸出個位字形碼。delay1ms(30);//調(diào)用延時子函數(shù),這里面的Z值不能太大。P2=0xfe;//P2=1111 1110顯示十位。P0=smg1[i-1];//P0口輸出十位位字形碼。delay1ms(30);//調(diào)用延時子函數(shù),這里面的Z值不能太大。

在程序設(shè)計的時候,我們需要先對用到的變量進行初始化設(shè)置,這樣做是為了保證程序可以有效的運行。在程序編寫的時候,為了程序書寫方便,我們通常會把常用到的功能塊編成子函數(shù)的形式。在這個系統(tǒng)的程序中我們用到一個延時子函數(shù),延時時間為1毫秒左右。在調(diào)用這個延時子函數(shù)時,Z值越大延時的時間就越長。共陰極數(shù)碼管的字形碼以一維數(shù)組smg1的形式給出,共陽極數(shù)碼管的字形碼以一維數(shù)組smg2的形式給出。本仿真圖采用的是共陰極數(shù)碼管,所以程序中用的是數(shù)組smg1。若是采用的共陽極數(shù)碼管,程序中用的則是數(shù)組smg2。這部分程序需要在熟悉兩片數(shù)碼管的工作原理、AT89C51的管腳分配及各個管腳的功能、二進制、十六進制計數(shù)的原理和規(guī)則,期中在C語言中)0X表示十六進制的意思,需要掌握一定的數(shù)字電路和C語言的基礎(chǔ)上才能寫出來。

4 Protuse仿真

通過仿真可以看出程序完全能實現(xiàn)預期設(shè)想,當然在仿真的過程中也不是一帆風順的,重點在延時函數(shù)Z值的設(shè)定上。Z值太大則容易出現(xiàn)眼睛看起來兩片數(shù)碼管是輪流工作的現(xiàn)象,Z的值太小則會出現(xiàn)秒表跳動太快的現(xiàn)象。所以這個時間若想試的合適需要反復修改,直到看起來比較舒服為止。在此截圖“00”開始狀態(tài)和“99”結(jié)束狀態(tài),由于跳動比較快,正好截下來這兩個點并不容易,另外還截了一個中間的任意狀態(tài)“46”狀態(tài)。仿真圖如下圖2圖3圖4所示。

圖2 “00”起始狀態(tài)仿真截圖

5 結(jié)語

對于這個系統(tǒng)的程序代碼計的是兩位的數(shù)字秒表的自動顯示,其基本原理就是利用動態(tài)掃描的原理。其實對于這樣的系統(tǒng)很容易擴展到更多位的秒表,比如三個數(shù)碼管可以顯示000~999,四位數(shù)碼管則可以顯示0000~9999。文中同時給出了正計和倒計時的程序,程序設(shè)計思路簡單清晰,同時給出了必要的注釋。作為一個實用的秒表程序應該設(shè)計起動、停止按鈕,正、倒計時選擇開關(guān),清零按鈕,多次重復計數(shù)的功能。若是這些功能全加上則程序就變得復雜得多,故在此不在多述。

猜你喜歡
秒表數(shù)碼管電路圖
物理項目教學設(shè)計,用單片機控制四位數(shù)碼管顯示
“且”的真與假
藍橋杯樹莓派模擬題解析三:“電子測距儀”
Arduino編程
寶馬ISTA軟件中電路圖的識讀
比亞迪E6純電動汽車系統(tǒng)結(jié)構(gòu)原理(四)
MC9S08FL16單片機數(shù)碼管靜態(tài)顯示分析
2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
漫話秒表的使用
學會使用秒表