閆麗娟
(山西水利職業(yè)技術(shù)學(xué)院信息工程系,山西 運(yùn)城 044004)
自1970年單片機(jī)出現(xiàn)后,直到現(xiàn)在已經(jīng)在工業(yè)、儀器儀表、機(jī)電一體化、家用電器及國(guó)防等領(lǐng)域普遍使用[1],其中,很多數(shù)據(jù)都需要直觀地顯示出來(lái),而通過(guò)單片機(jī)與數(shù)碼管相結(jié)合,再加上程序很容易實(shí)現(xiàn)。
單片機(jī)最小系統(tǒng)是單片機(jī)達(dá)到可以工作的程度所必須搭配的元器件再加上單片機(jī)本身所構(gòu)成的系統(tǒng)。對(duì)于MCS-51系列單片機(jī),以AT89S51為例,其最小系統(tǒng)主要包括:電源、晶振、復(fù)位,必要時(shí)還需要給P0口配上上拉電阻,本文中用電阻排來(lái)實(shí)現(xiàn)。
接下來(lái)依次對(duì)這幾個(gè)要素來(lái)分析。
電源:所有的電子元器件都是需要供電才能工作的,單片機(jī)也不例外。現(xiàn)選用的AT89S51需要配以5 V的電源。第40個(gè)引腳Vcc接+5 V,第20個(gè)引腳Vss接地。
晶振:?jiǎn)纹瑱C(jī)及其外圍基準(zhǔn)部件要有一個(gè)時(shí)間基準(zhǔn),才能確保有序工作。這個(gè)時(shí)間基準(zhǔn)可以通過(guò)內(nèi)部和外部?jī)煞N時(shí)鐘方式來(lái)獲取,外部時(shí)鐘方式是使用現(xiàn)有的外部振蕩器產(chǎn)生的時(shí)鐘信號(hào),內(nèi)部時(shí)鐘方式通常是用兩個(gè)30pF電容和一個(gè)12 MHz或11.059 2 MHz石英晶體構(gòu)成的電路組成。
復(fù)位:可以分為上電復(fù)位、手動(dòng)復(fù)位和程序自動(dòng)復(fù)位三種。程序自動(dòng)復(fù)位是用軟件實(shí)現(xiàn),上電復(fù)位是單片機(jī)通電后本身內(nèi)部的初始化過(guò)程,手動(dòng)復(fù)位是按圖1中的按鈕即可實(shí)現(xiàn)復(fù)位。
圖1 單片機(jī)的最小系統(tǒng)
要實(shí)現(xiàn)數(shù)字0-99的循環(huán)顯示,只需要在上述單片機(jī)最小系統(tǒng)的基礎(chǔ)上,將兩個(gè)數(shù)碼管接到單片機(jī)的I/O口上即可。
圖2 硬件電路圖
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define out P0
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voiddelayms(uint);
void main (void)//主程序
{
uchar hum;//定義一個(gè)要顯示的數(shù)字
while(1)
{
P0=seg[hum/10];//分離出要顯示數(shù)字的十位
P3=seg[hum%10];//分離出要顯示數(shù)字的個(gè)位
delayms(100);
hum++;
if(hum==100)hum=0;//清零
}
}
void delayms(uint j)//延時(shí)子程序
{
uchari;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
將上面的程序在Keil中編譯運(yùn)行可得到一個(gè)hex文件,然后在proteus中將它加載到單片機(jī)上進(jìn)行仿真,能夠很直觀的看到數(shù)字0-99循環(huán)顯示[2]。
這是一種靜態(tài)顯示的方法,用這樣的方式比較簡(jiǎn)單,但是每個(gè)數(shù)碼管都要占用一個(gè)I/O口,使得I/O口的利用率大幅降低[1]。但是對(duì)于單片機(jī)的學(xué)習(xí)來(lái)說(shuō),這種方法有助于理解。在實(shí)際應(yīng)用中,一般會(huì)采用動(dòng)態(tài)顯示的方式,節(jié)約I/O口資源。
[1] 張毅剛.單片機(jī)原理與應(yīng)用設(shè)計(jì)(C51編程+Proteus仿真)[M].北京:電子工業(yè)出版社,2016.
[2] 胡鵬.王飛.基于AT89C52的數(shù)字電壓表仿真設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2012(2):22-24.