色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)定時(shí)器與數(shù)碼管靜態(tài)顯示

MCU開(kāi)發(fā)加油站 ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-07-05 16:09 ? 次閱讀

很多新手在單片機(jī)上走的第一步是點(diǎn)亮第一個(gè)LED燈,實(shí)際上因?yàn)殚_(kāi)發(fā)板的不同,所編寫(xiě)的代碼也不同,關(guān)鍵是你要去了解你用的開(kāi)發(fā)板的電路布局。對(duì)于電路方面的知識(shí)我這里也不詳講,我要做的是無(wú)論你用哪一種開(kāi)發(fā)板我的文章都能幫助你。

P0 = 0xFE;

這句代碼大家不陌生。

void main(){

unsigned char count = 0;

while(1){

P0 = ~(0x01 << count);

Delay();//單獨(dú)實(shí)現(xiàn)一個(gè)延時(shí)函數(shù)

count++;

if(count > =8){

count = 0;

}

}

}

以上就是實(shí)現(xiàn)流水燈的基本代碼,這里沒(méi)有電路供你分析,但是無(wú)論什么開(kāi)發(fā)板,核心代碼可以用以上代碼實(shí)現(xiàn)。

我相信你能看到這里也是有點(diǎn)基礎(chǔ)的,這里的延時(shí)函數(shù)Delay,接下來(lái)要講的是定時(shí)器,定時(shí)器就是可以替代延時(shí)函數(shù)的。

定時(shí)器

標(biāo)準(zhǔn)的51單片機(jī)內(nèi)部有T0和T1兩個(gè)定時(shí)器,實(shí)際上就是TCON特殊功能的寄存器來(lái)控制這兩個(gè)定時(shí)器的。

除此之外,定時(shí)值存儲(chǔ)寄存器有TH和TL,給TL賦值后,TL會(huì)自動(dòng)加1,加到255后TH加1,有趣的TH也可以提前賦值,但這只是定時(shí)器工作的一種模式,定時(shí)器有四種模式,這里我不祥講,而且我們幾乎用的模式就是這種,后面涉及到會(huì)詳細(xì)講解。這里只需要知道TCON(地址0x88)位分配,以后會(huì)經(jīng)常用到。

還有一個(gè)TMOC就是定時(shí)器作用的模式,位分配如下圖:

代碼:

void main()

{TH0 = 0xB8; //給TH0賦值,后面的0代表是給定時(shí)器T0的TH賦值

TL0 = 0x00;

TR0 = 1;//啟動(dòng)T0定時(shí)器

if(TF0 == 1) //判斷T0是否溢出,TF是個(gè)標(biāo)志位

{ //重置

TH0 = 0xB8;

TL0 = 0x00;}}

以上就是定時(shí)器,時(shí)間多少呢?

我們以晶振位11.0592為例,時(shí)鐘周期是1/11059200,機(jī)器周期(1ms)12/11059200,如果我們定時(shí)20ms,那個(gè)要執(zhí)行20*(12/110592)次,算出來(lái)是18432次,換成十六進(jìn)制是B800,所以對(duì)TH0賦值B8,對(duì)TL0賦值00;

數(shù)碼管

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main() {

ADDR2 = 1;

ADDR1 = 0;

ADDR0 = 1;

ADDR3 = 1;

ENLED = 0;

P0 = 0XF8;

while(1);}

上面代碼是用位STC-51開(kāi)發(fā)板寫(xiě)的,在最后一個(gè)數(shù)碼管上顯示數(shù)字7,數(shù)碼管難度簡(jiǎn)單,只需要針對(duì)數(shù)碼管等的排布編程即可。

下面我們用關(guān)鍵字code定義數(shù)碼管所能夠顯示所有字符的數(shù)組,這里再結(jié)合定時(shí)器一起。

#include sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;

//數(shù)組

unsigned char code led[] =

{ 0xC0, 0xF9, 0xA4,

0xB0, 0x99, 0x92,

0x82, 0xF8, 0x80,

0x90, 0x88, 0x83,

0xC6, 0xA1, 0x86,0x8E};

void main() { unsigned char count = 0;

//記錄T0中斷次數(shù)

unsigned char secnt = 0;

//記錄經(jīng)過(guò)的秒數(shù)

ADDR2 = 1;

ADDR1 = 0;

ADDR0 = 0;

ADDR3 = 1;

ENLED = 0;

//設(shè)置T0模式

TMOD = 0x01;

//為T0的TH0,TL0初始化

TH0 = 0xB8;

TL0 = 0x00;

//啟動(dòng)T0 TR0 = 1;

while(1){

if(TF0 ==1)

{ TH0 = 0xB8;

TL0 = 0x00;

count++;

TF0 = 0; }

if(count >=50)

{ count = 0;

P0 = led[secnt];

secnt++;

if(secnt>=16)

{ secnt = 0; } } }}

這里代碼比較緊湊,不過(guò)不影響。上面的代碼我相信你也能懂,但是你能發(fā)現(xiàn)定時(shí)器在這里起到了一個(gè)定時(shí)中斷的作用。

這里講一下中斷。

中斷

下面是中斷IE寄存器位分配圖:

直接上代碼:

#include

//數(shù)碼管顯示字符真值數(shù)組

unsigned char code ledchar[]=

{0xC0, 0xF9, 0xA4, 0xB0, 0x99,

0x92, 0x82, 0xF8, 0x80, 0x90,

0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };

//數(shù)碼管顯示區(qū)數(shù)組

unsigned char ledbuff[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };

sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;

unsigned char i = 0;

//動(dòng)態(tài)掃描索引

unsigned int c = 0;

//記錄中斷次數(shù)

void main() {

unsigned long s = 0;

//記錄秒數(shù)

//使能U3

ADDR3 = 1;

ENLED = 0;

//設(shè)置T0模式

TMOD = 0x01;

//初始化TH0,TL0

TH0 = 0xFC; TL0 = 0x66;

//啟動(dòng)TR0

TR0 = 1;

//使能總中斷

EA = 1;

//使能T0中斷

ET0 = 1;

//主循環(huán)

while(1) { //1s中斷 if(c>=1000) { s++; c=0; //為數(shù)碼管顯示區(qū)賦值 ledbuff[0] = ledchar[s%10]; ledbuff[1] = ledchar[s/10%10]; ledbuff[2] = ledchar[s/100%10]; ledbuff[3] = ledchar[s/1000%10]; ledbuff[4] = ledchar[s/10000%10]; ledbuff[5] = ledchar[s/100000%10]; } }}

//定時(shí)器T0中斷服務(wù)void InterruptTimer0() interrupt 1{ //重新賦值 TH0 = 0xFC; TL0 = 0x66; c++; //顯示消隱 P0 = 0xFE; //完成數(shù)碼管動(dòng)態(tài)掃描 switch(i) { case 0: ADDR2 = 1;ADDR1 = 0; ADDR0 = 1; i++; P0 = ledbuff[0]; break;

case 1: ADDR2 = 1;ADDR1 = 0; ADDR0 = 0;i++; P0 = ledbuff[1]; break;

case 2: ADDR2 = 0;ADDR1 = 1; ADDR0 = 1;i++; P0 = ledbuff[2]; break;

case 3: ADDR2 = 0;ADDR1 = 1; ADDR0 = 0; i++; P0 = ledbuff[3]; break;

case 4: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1;i++; P0 = ledbuff[4]; break;

case 5: ADDR2 = 0;ADDR1 = 0; ADDR0 = 0;i=0; P0 = ledbuff[5]; break; default:break;

}

}

這組代碼能夠按照我們計(jì)算好的時(shí)間為單位顯示秒數(shù)。

我們能夠提出中斷核心代碼

EA = 1//中斷總開(kāi)關(guān)

ET0 = 1//確認(rèn)使用T0定時(shí)器中斷開(kāi)關(guān)

TR0 = 1//肯定要啟動(dòng)T0定時(shí)器

void InterruptTimer0() interrupt 1//定時(shí)器T0中斷服務(wù),中斷代碼寫(xiě)在這里面,至于interrupt 1是因?yàn)閕nterrupt會(huì)去尋找地址' 1 ',而T0定時(shí)器中斷的地址就是1,所以我們可以直接在此函數(shù)中寫(xiě)中斷期間的代碼。至于各種中斷的地址我也不再這里多寫(xiě)了。值得一談的是IP——中斷優(yōu)先級(jí)寄存器位分配

各級(jí)中斷都差不多,中斷發(fā)生的也很多,當(dāng)同時(shí)有許多中斷發(fā)生時(shí),可以通過(guò)置上面的值為1升級(jí)成優(yōu)先級(jí)中斷。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1882

    瀏覽量

    91255
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3251

    瀏覽量

    115024

原文標(biāo)題:?jiǎn)纹瑱C(jī)定時(shí)器與數(shù)碼管靜態(tài)顯示

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開(kāi)發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)定時(shí)器怎么實(shí)現(xiàn)數(shù)碼管顯示從0到F靜態(tài)

    單片機(jī)定時(shí)器怎么實(shí)現(xiàn)數(shù)碼管顯示從0到F靜態(tài)?
    發(fā)表于 11-03 07:36

    單片機(jī)教程二十二:LED數(shù)碼管靜態(tài)顯示接口與編程

    單片機(jī)教程二十二:LED數(shù)碼管靜態(tài)顯示接口與編程 在單片機(jī)系統(tǒng)中,常常用LED數(shù)碼數(shù)碼管
    發(fā)表于 05-15 23:17 ?3790次閱讀
    <b class='flag-5'>單片機(jī)</b>教程二十二:LED<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>靜態(tài)</b><b class='flag-5'>顯示</b>接口與編程

    基于單片機(jī)的綜合應(yīng)用程序數(shù)碼管【C語(yǔ)言】定時(shí)器控制數(shù)碼管

    基于單片機(jī)的綜合應(yīng)用程序數(shù)碼管【C語(yǔ)言】定時(shí)器控制數(shù)碼管
    發(fā)表于 01-06 13:44 ?27次下載

    LESSON3_數(shù)碼管靜態(tài)顯示定時(shí)器和中斷應(yīng)用

    LESSON3_數(shù)碼管靜態(tài)顯示定時(shí)器和中斷應(yīng)用
    發(fā)表于 02-18 18:21 ?0次下載

    LESSON3_數(shù)碼管靜態(tài)顯示定時(shí)器和中斷應(yīng)用

    數(shù)碼管靜態(tài)顯示定時(shí)器和中斷應(yīng)用 可以給初學(xué)者學(xué)習(xí)使用 如果有需要可以下載。
    發(fā)表于 03-14 10:40 ?1次下載

    LESSON3_數(shù)碼管靜態(tài)顯示定時(shí)器和中斷應(yīng)用

    LESSON3_數(shù)碼管靜態(tài)顯示定時(shí)器和中斷應(yīng)用。
    發(fā)表于 04-29 16:50 ?5次下載

    LESSON3_數(shù)碼管靜態(tài)顯示定時(shí)器和中斷應(yīng)用

    數(shù)碼管是如何顯示出字符的 數(shù)碼管靜態(tài)顯示與動(dòng)態(tài)顯示原理 中斷概念
    發(fā)表于 07-01 17:17 ?1次下載

    數(shù)碼管顯示的原理靜態(tài)顯示及中斷概念單片機(jī)定時(shí)器應(yīng)用視頻教程

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)碼管顯示的原理靜態(tài)顯示及中斷概念單片機(jī)定時(shí)器應(yīng)用視頻教程包括了:
    發(fā)表于 03-26 14:35 ?15次下載
    <b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>的原理<b class='flag-5'>靜態(tài)</b><b class='flag-5'>顯示</b>及中斷概念<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>定時(shí)器</b>應(yīng)用視頻教程

    基于51單片機(jī)定時(shí),數(shù)碼管顯示時(shí)間

    基于單片機(jī)定時(shí),數(shù)碼管顯示時(shí)間
    發(fā)表于 11-11 15:36 ?29次下載
    基于51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)</b>,<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>時(shí)間

    51單片機(jī)數(shù)碼管顯示60秒倒計(jì)時(shí)(C語(yǔ)言)

    51單片機(jī)數(shù)碼管顯示60秒倒計(jì)時(shí)基于普中51單片機(jī)開(kāi)發(fā)板,運(yùn)用定時(shí)器/計(jì)數(shù)0和1,實(shí)現(xiàn)60秒的
    發(fā)表于 11-21 17:21 ?71次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>60秒倒計(jì)時(shí)(C語(yǔ)言)

    51單片機(jī)仿真——定時(shí)器控制單只數(shù)碼管顯示0—9

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)仿真——定時(shí)器控制單只數(shù)碼管顯示0—9.pdf》資料免費(fèi)下載
    發(fā)表于 11-23 16:23 ?9次下載
    51<b class='flag-5'>單片機(jī)</b>仿真——<b class='flag-5'>定時(shí)器</b>控制單只<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>0—9

    單片機(jī)定時(shí)器數(shù)碼管靜態(tài)顯示

    很多新手在單片機(jī)上走的第一步是點(diǎn)亮第一個(gè)LED燈,實(shí)際上因?yàn)殚_(kāi)發(fā)板的不同,所編寫(xiě)的代碼也不同,關(guān)鍵是你要去了解你用的開(kāi)發(fā)板的電路布局。對(duì)于電路方面的知識(shí)我這里也不祥講,我要做的是無(wú)論你用哪一種開(kāi)發(fā)板
    發(fā)表于 02-11 15:34 ?1次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>與<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>靜態(tài)</b><b class='flag-5'>顯示</b>

    單片機(jī)數(shù)碼管顯示

    單片機(jī)數(shù)碼管顯示
    發(fā)表于 09-19 17:36 ?5次下載

    基于89C51單片機(jī)定時(shí)器掃描數(shù)碼管(不閃爍)源程序

    基于89C51單片機(jī)定時(shí)器掃描數(shù)碼管(不閃爍)源程序
    發(fā)表于 05-12 17:16 ?2次下載

    基于89C51單片機(jī)的共陽(yáng)數(shù)碼管靜態(tài)顯示源程序

    基于89C51單片機(jī)的共陽(yáng)數(shù)碼管靜態(tài)顯示源程序
    發(fā)表于 05-15 11:10 ?3次下載
    主站蜘蛛池模板: 午夜婷婷一夜七次郎| 超大BBWWW| 印度老妇女bbbxxx| 97综合久久| 国产爱豆剧果冻传媒在线 | 99热这里只有精品| 国产激情视频在线观看| 久久久久久久久a免费| 日本久久久久亚洲中字幕| 亚洲国产精品嫩草影院永久| 91九色麻豆| 国产人妻人伦精品98| 秘密教学93话恩爱久等了免费 | 久久这里有精品| 手机移动oa| 97人妻精品全国免费视频| 国产精品无码亚洲精品| 男人把女人桶到爽免费看视频| 先锋影音av无码第1页| 99久久免费只有精品| 黑人干日本美女| 日韩亚洲人成在线| 中文字幕无线观看不卡网站| 国产精品成人免费观看| 男人桶女人j的视频在线观看| 亚洲高清视频免费| 波多结衣一区二区三区| 久久久久综合| 性欧美video| 爆操日本美女| 口工漫画r18全彩啪啪| 性派对xxxhd| 成年视频xxxxxx在线| 旧里番YY6080在线播放| 亚洲福利网站| 国产成人mv 在线播放| 女人一级毛片免费观看| 樱花草在线影视WWW日本动漫| 国产精品人妻一区免费看8C0M| 欧美一区二区VA毛片视频| 玉林天天论坛|