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

?

單片機(jī)定時(shí)器動(dòng)態(tài)掃描驅(qū)動(dòng)8位LED數(shù)碼管的方法

2014-05-28 22:08劉曉鳳
新課程·中旬 2014年3期
關(guān)鍵詞:單片機(jī)

劉曉鳳

摘 要:采用動(dòng)態(tài)掃描方式驅(qū)動(dòng)數(shù)碼管一般外圍硬件較少,但是對(duì)單片機(jī)資源耗用巨大。介紹了單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管時(shí)利用定時(shí)器中斷解決動(dòng)態(tài)掃描工作方式下對(duì)單片機(jī)時(shí)間資源占用的問(wèn)題。

關(guān)鍵詞:?jiǎn)纹瑱C(jī);定時(shí)器中斷;數(shù)碼管驅(qū)動(dòng)

數(shù)碼管的顯示方式可以分為動(dòng)態(tài)和靜態(tài)兩種。動(dòng)態(tài)掃描方式,是利用發(fā)光二極管的余輝效應(yīng)和人眼的視覺(jué)暫留效應(yīng)來(lái)實(shí)現(xiàn)的,只要在一定時(shí)間內(nèi)數(shù)碼管的筆段亮的頻率夠快,人眼就看不出閃爍,一般外圍硬件較少,但是對(duì)單片機(jī)資源耗用巨大。靜態(tài)的也較鎖存方式,單片機(jī)送出數(shù)據(jù)后控制外圍鎖存器件鎖存數(shù)據(jù),這樣數(shù)碼管筆段里的電流不變,數(shù)碼管穩(wěn)定顯示,這樣單片機(jī)可以干別的活不用管數(shù)碼管了。這種方案的優(yōu)點(diǎn)是對(duì)單片機(jī)的P口資源和時(shí)間耗用很少,但是數(shù)碼管的外圍輔助電路復(fù)雜。

多位數(shù)碼管的常用驅(qū)動(dòng)方法有:

1.不需要芯片的驅(qū)動(dòng)方式,掃描顯示

這種方式a~g和DP一共8根線分別占用單片機(jī)8個(gè)端口線,一般是一整個(gè)P口,然后有幾位數(shù)碼管就另外需要幾個(gè)控制線作為片選。對(duì)于MCU的時(shí)間占用幾乎是全時(shí)的,如果沒(méi)有其他的任務(wù)或者其他的任務(wù)耗用時(shí)間很少可以考慮這種顯示方式,比如時(shí)鐘、溫度計(jì)等等。

2.74LS164、74HC595等通用移位寄存器驅(qū)動(dòng)

這是一種帶鎖存的串入并出芯片,需要占用單片機(jī)的2或3根線,如果需要多位驅(qū)動(dòng),一般使用譯碼器進(jìn)行快速線選,或者使用權(quán)移位寄存器級(jí)聯(lián)的方式實(shí)現(xiàn),這種驅(qū)動(dòng)方式采用掃描顯示,對(duì)單片機(jī)端口的耗用比較少,但是因?yàn)槭菕呙璺绞剿詫?duì)單片機(jī)時(shí)間耗用還是全時(shí)的。

3.MAX7219、HD7279、BC7281、ZLG7289、ZLG7290、WH8280、CH451、CH452等專用LED數(shù)碼管驅(qū)動(dòng)芯片驅(qū)動(dòng)

這是驅(qū)動(dòng)LED數(shù)碼管最理想的芯片,從典型應(yīng)用電路上看外圍元件極少,直接驅(qū)動(dòng),最吸引人的是使用了串行接口,只要三根線就可以驅(qū)動(dòng)多達(dá)8位的數(shù)碼管,而且在送完數(shù)據(jù)后就不用管了,自己消零消隱,有些芯片還帶有8*8的鍵盤(pán)接口(鍵盤(pán)輸入的時(shí)候,從串口輸出鍵盤(pán)編碼供單片機(jī)讀?。?,但這種驅(qū)動(dòng)方法往往價(jià)格比較昂貴。

本文重點(diǎn)介紹單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管時(shí)利用定時(shí)器中斷解決動(dòng)態(tài)掃描工作方式下對(duì)單片機(jī)時(shí)間資源占用的問(wèn)題。單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管的電路如右圖所示,電路中數(shù)碼管的a~h共8根線分別占用單片機(jī)8個(gè)端口線,連接到P0口,8位數(shù)碼管的公共端(公共陽(yáng)極)連接到單片機(jī)的P2口,作為數(shù)碼管動(dòng)態(tài)掃描時(shí)的片選,該端口通過(guò)上拉電阻與電源相連,以提高驅(qū)動(dòng)能力,電路實(shí)際制作時(shí),若驅(qū)動(dòng)能力不夠,應(yīng)考慮使用三極管驅(qū)動(dòng)電路或驅(qū)動(dòng)芯片。

在程序設(shè)計(jì)中,本人將數(shù)碼管的驅(qū)動(dòng)程序放在定時(shí)器T0的中斷服務(wù)子程序中,定時(shí)器每申請(qǐng)一次中斷,點(diǎn)亮一位數(shù)碼管,在下一次中斷時(shí),再點(diǎn)亮下一位數(shù)碼管,中斷八次后,八位數(shù)碼管依次點(diǎn)亮了一遍,重新回到第一位數(shù)碼管,再依次點(diǎn)亮。

程序如下:

#include“reg51.h”

#define DB P0

#define AB P2

unsigned char w=5,buffer[8]={10,10,10,10,10,10,10,10};

unsigned char h=8,m=30,s=0;

unsigned int time;

unsigned char code dsW[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char code dsB[ ]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,

0xbf};

void T0_int( ) interrupt 1

{TH0=(65536-1843)/256;TL0=(65536-1843)%256;//定時(shí)器T0重置初值DB=0xff;//清屏

AB=~dsW[w];//送數(shù)碼管片選代碼

DB=dsB[buffer[w];//送相應(yīng)數(shù)碼管的段代碼

w++;if(w>7)w=0;//準(zhǔn)備點(diǎn)亮下一位數(shù)碼管

/*********以下為數(shù)字鐘程序********/

time++;

if(time>=250){buffer[2]=buffer[5]=10;}

if(time>=500) {buffer[2]=buffer[5]=11;s++;time=0;}

if(s>59) {s=0;m++;}

if(m>59) {m=0;h++;}

if(h>23) h=0;

buffer[0]=h/10;buffer[1]=h%10;

buffer[3]=m/10;buffer[4]=m%10;

buffer[6]=s/10;buffer[7]=s%10;

/*********以上為數(shù)字鐘程序********/

}

main()

{TH0=(65536-1843)/256;TL0=(65536-1843)%256;

TMOD=0x01;EA=1;ET0=1;TR0=1;

while(1);

}

程序中,由于數(shù)碼管的驅(qū)動(dòng)放在定時(shí)器T0的中斷服務(wù)子程序中,只在響應(yīng)T0中斷服務(wù)子程序時(shí)執(zhí)行并占用MCU時(shí)間,其余MCU時(shí)間空閑,很好地解決了動(dòng)態(tài)掃描時(shí)單片機(jī)被全時(shí)占用的問(wèn)題。為避免數(shù)碼管抖動(dòng),定時(shí)器中斷間隔不宜過(guò)長(zhǎng),本文中定時(shí)器中斷間隔時(shí)間為2ms。

(作者單位 江蘇省溧水中等專業(yè)學(xué)校)

?誗編輯 薛直艷

摘 要:采用動(dòng)態(tài)掃描方式驅(qū)動(dòng)數(shù)碼管一般外圍硬件較少,但是對(duì)單片機(jī)資源耗用巨大。介紹了單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管時(shí)利用定時(shí)器中斷解決動(dòng)態(tài)掃描工作方式下對(duì)單片機(jī)時(shí)間資源占用的問(wèn)題。

關(guān)鍵詞:?jiǎn)纹瑱C(jī);定時(shí)器中斷;數(shù)碼管驅(qū)動(dòng)

數(shù)碼管的顯示方式可以分為動(dòng)態(tài)和靜態(tài)兩種。動(dòng)態(tài)掃描方式,是利用發(fā)光二極管的余輝效應(yīng)和人眼的視覺(jué)暫留效應(yīng)來(lái)實(shí)現(xiàn)的,只要在一定時(shí)間內(nèi)數(shù)碼管的筆段亮的頻率夠快,人眼就看不出閃爍,一般外圍硬件較少,但是對(duì)單片機(jī)資源耗用巨大。靜態(tài)的也較鎖存方式,單片機(jī)送出數(shù)據(jù)后控制外圍鎖存器件鎖存數(shù)據(jù),這樣數(shù)碼管筆段里的電流不變,數(shù)碼管穩(wěn)定顯示,這樣單片機(jī)可以干別的活不用管數(shù)碼管了。這種方案的優(yōu)點(diǎn)是對(duì)單片機(jī)的P口資源和時(shí)間耗用很少,但是數(shù)碼管的外圍輔助電路復(fù)雜。

多位數(shù)碼管的常用驅(qū)動(dòng)方法有:

1.不需要芯片的驅(qū)動(dòng)方式,掃描顯示

這種方式a~g和DP一共8根線分別占用單片機(jī)8個(gè)端口線,一般是一整個(gè)P口,然后有幾位數(shù)碼管就另外需要幾個(gè)控制線作為片選。對(duì)于MCU的時(shí)間占用幾乎是全時(shí)的,如果沒(méi)有其他的任務(wù)或者其他的任務(wù)耗用時(shí)間很少可以考慮這種顯示方式,比如時(shí)鐘、溫度計(jì)等等。

2.74LS164、74HC595等通用移位寄存器驅(qū)動(dòng)

這是一種帶鎖存的串入并出芯片,需要占用單片機(jī)的2或3根線,如果需要多位驅(qū)動(dòng),一般使用譯碼器進(jìn)行快速線選,或者使用權(quán)移位寄存器級(jí)聯(lián)的方式實(shí)現(xiàn),這種驅(qū)動(dòng)方式采用掃描顯示,對(duì)單片機(jī)端口的耗用比較少,但是因?yàn)槭菕呙璺绞剿詫?duì)單片機(jī)時(shí)間耗用還是全時(shí)的。

3.MAX7219、HD7279、BC7281、ZLG7289、ZLG7290、WH8280、CH451、CH452等專用LED數(shù)碼管驅(qū)動(dòng)芯片驅(qū)動(dòng)

這是驅(qū)動(dòng)LED數(shù)碼管最理想的芯片,從典型應(yīng)用電路上看外圍元件極少,直接驅(qū)動(dòng),最吸引人的是使用了串行接口,只要三根線就可以驅(qū)動(dòng)多達(dá)8位的數(shù)碼管,而且在送完數(shù)據(jù)后就不用管了,自己消零消隱,有些芯片還帶有8*8的鍵盤(pán)接口(鍵盤(pán)輸入的時(shí)候,從串口輸出鍵盤(pán)編碼供單片機(jī)讀?。@種驅(qū)動(dòng)方法往往價(jià)格比較昂貴。

本文重點(diǎn)介紹單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管時(shí)利用定時(shí)器中斷解決動(dòng)態(tài)掃描工作方式下對(duì)單片機(jī)時(shí)間資源占用的問(wèn)題。單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管的電路如右圖所示,電路中數(shù)碼管的a~h共8根線分別占用單片機(jī)8個(gè)端口線,連接到P0口,8位數(shù)碼管的公共端(公共陽(yáng)極)連接到單片機(jī)的P2口,作為數(shù)碼管動(dòng)態(tài)掃描時(shí)的片選,該端口通過(guò)上拉電阻與電源相連,以提高驅(qū)動(dòng)能力,電路實(shí)際制作時(shí),若驅(qū)動(dòng)能力不夠,應(yīng)考慮使用三極管驅(qū)動(dòng)電路或驅(qū)動(dòng)芯片。

在程序設(shè)計(jì)中,本人將數(shù)碼管的驅(qū)動(dòng)程序放在定時(shí)器T0的中斷服務(wù)子程序中,定時(shí)器每申請(qǐng)一次中斷,點(diǎn)亮一位數(shù)碼管,在下一次中斷時(shí),再點(diǎn)亮下一位數(shù)碼管,中斷八次后,八位數(shù)碼管依次點(diǎn)亮了一遍,重新回到第一位數(shù)碼管,再依次點(diǎn)亮。

程序如下:

#include“reg51.h”

#define DB P0

#define AB P2

unsigned char w=5,buffer[8]={10,10,10,10,10,10,10,10};

unsigned char h=8,m=30,s=0;

unsigned int time;

unsigned char code dsW[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char code dsB[ ]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,

0xbf};

void T0_int( ) interrupt 1

{TH0=(65536-1843)/256;TL0=(65536-1843)%256;//定時(shí)器T0重置初值DB=0xff;//清屏

AB=~dsW[w];//送數(shù)碼管片選代碼

DB=dsB[buffer[w];//送相應(yīng)數(shù)碼管的段代碼

w++;if(w>7)w=0;//準(zhǔn)備點(diǎn)亮下一位數(shù)碼管

/*********以下為數(shù)字鐘程序********/

time++;

if(time>=250){buffer[2]=buffer[5]=10;}

if(time>=500) {buffer[2]=buffer[5]=11;s++;time=0;}

if(s>59) {s=0;m++;}

if(m>59) {m=0;h++;}

if(h>23) h=0;

buffer[0]=h/10;buffer[1]=h%10;

buffer[3]=m/10;buffer[4]=m%10;

buffer[6]=s/10;buffer[7]=s%10;

/*********以上為數(shù)字鐘程序********/

}

main()

{TH0=(65536-1843)/256;TL0=(65536-1843)%256;

TMOD=0x01;EA=1;ET0=1;TR0=1;

while(1);

}

程序中,由于數(shù)碼管的驅(qū)動(dòng)放在定時(shí)器T0的中斷服務(wù)子程序中,只在響應(yīng)T0中斷服務(wù)子程序時(shí)執(zhí)行并占用MCU時(shí)間,其余MCU時(shí)間空閑,很好地解決了動(dòng)態(tài)掃描時(shí)單片機(jī)被全時(shí)占用的問(wèn)題。為避免數(shù)碼管抖動(dòng),定時(shí)器中斷間隔不宜過(guò)長(zhǎng),本文中定時(shí)器中斷間隔時(shí)間為2ms。

(作者單位 江蘇省溧水中等專業(yè)學(xué)校)

?誗編輯 薛直艷

摘 要:采用動(dòng)態(tài)掃描方式驅(qū)動(dòng)數(shù)碼管一般外圍硬件較少,但是對(duì)單片機(jī)資源耗用巨大。介紹了單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管時(shí)利用定時(shí)器中斷解決動(dòng)態(tài)掃描工作方式下對(duì)單片機(jī)時(shí)間資源占用的問(wèn)題。

關(guān)鍵詞:?jiǎn)纹瑱C(jī);定時(shí)器中斷;數(shù)碼管驅(qū)動(dòng)

數(shù)碼管的顯示方式可以分為動(dòng)態(tài)和靜態(tài)兩種。動(dòng)態(tài)掃描方式,是利用發(fā)光二極管的余輝效應(yīng)和人眼的視覺(jué)暫留效應(yīng)來(lái)實(shí)現(xiàn)的,只要在一定時(shí)間內(nèi)數(shù)碼管的筆段亮的頻率夠快,人眼就看不出閃爍,一般外圍硬件較少,但是對(duì)單片機(jī)資源耗用巨大。靜態(tài)的也較鎖存方式,單片機(jī)送出數(shù)據(jù)后控制外圍鎖存器件鎖存數(shù)據(jù),這樣數(shù)碼管筆段里的電流不變,數(shù)碼管穩(wěn)定顯示,這樣單片機(jī)可以干別的活不用管數(shù)碼管了。這種方案的優(yōu)點(diǎn)是對(duì)單片機(jī)的P口資源和時(shí)間耗用很少,但是數(shù)碼管的外圍輔助電路復(fù)雜。

多位數(shù)碼管的常用驅(qū)動(dòng)方法有:

1.不需要芯片的驅(qū)動(dòng)方式,掃描顯示

這種方式a~g和DP一共8根線分別占用單片機(jī)8個(gè)端口線,一般是一整個(gè)P口,然后有幾位數(shù)碼管就另外需要幾個(gè)控制線作為片選。對(duì)于MCU的時(shí)間占用幾乎是全時(shí)的,如果沒(méi)有其他的任務(wù)或者其他的任務(wù)耗用時(shí)間很少可以考慮這種顯示方式,比如時(shí)鐘、溫度計(jì)等等。

2.74LS164、74HC595等通用移位寄存器驅(qū)動(dòng)

這是一種帶鎖存的串入并出芯片,需要占用單片機(jī)的2或3根線,如果需要多位驅(qū)動(dòng),一般使用譯碼器進(jìn)行快速線選,或者使用權(quán)移位寄存器級(jí)聯(lián)的方式實(shí)現(xiàn),這種驅(qū)動(dòng)方式采用掃描顯示,對(duì)單片機(jī)端口的耗用比較少,但是因?yàn)槭菕呙璺绞剿詫?duì)單片機(jī)時(shí)間耗用還是全時(shí)的。

3.MAX7219、HD7279、BC7281、ZLG7289、ZLG7290、WH8280、CH451、CH452等專用LED數(shù)碼管驅(qū)動(dòng)芯片驅(qū)動(dòng)

這是驅(qū)動(dòng)LED數(shù)碼管最理想的芯片,從典型應(yīng)用電路上看外圍元件極少,直接驅(qū)動(dòng),最吸引人的是使用了串行接口,只要三根線就可以驅(qū)動(dòng)多達(dá)8位的數(shù)碼管,而且在送完數(shù)據(jù)后就不用管了,自己消零消隱,有些芯片還帶有8*8的鍵盤(pán)接口(鍵盤(pán)輸入的時(shí)候,從串口輸出鍵盤(pán)編碼供單片機(jī)讀?。?,但這種驅(qū)動(dòng)方法往往價(jià)格比較昂貴。

本文重點(diǎn)介紹單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管時(shí)利用定時(shí)器中斷解決動(dòng)態(tài)掃描工作方式下對(duì)單片機(jī)時(shí)間資源占用的問(wèn)題。單片機(jī)直接驅(qū)動(dòng)8位數(shù)碼管的電路如右圖所示,電路中數(shù)碼管的a~h共8根線分別占用單片機(jī)8個(gè)端口線,連接到P0口,8位數(shù)碼管的公共端(公共陽(yáng)極)連接到單片機(jī)的P2口,作為數(shù)碼管動(dòng)態(tài)掃描時(shí)的片選,該端口通過(guò)上拉電阻與電源相連,以提高驅(qū)動(dòng)能力,電路實(shí)際制作時(shí),若驅(qū)動(dòng)能力不夠,應(yīng)考慮使用三極管驅(qū)動(dòng)電路或驅(qū)動(dòng)芯片。

在程序設(shè)計(jì)中,本人將數(shù)碼管的驅(qū)動(dòng)程序放在定時(shí)器T0的中斷服務(wù)子程序中,定時(shí)器每申請(qǐng)一次中斷,點(diǎn)亮一位數(shù)碼管,在下一次中斷時(shí),再點(diǎn)亮下一位數(shù)碼管,中斷八次后,八位數(shù)碼管依次點(diǎn)亮了一遍,重新回到第一位數(shù)碼管,再依次點(diǎn)亮。

程序如下:

#include“reg51.h”

#define DB P0

#define AB P2

unsigned char w=5,buffer[8]={10,10,10,10,10,10,10,10};

unsigned char h=8,m=30,s=0;

unsigned int time;

unsigned char code dsW[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char code dsB[ ]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,

0xbf};

void T0_int( ) interrupt 1

{TH0=(65536-1843)/256;TL0=(65536-1843)%256;//定時(shí)器T0重置初值DB=0xff;//清屏

AB=~dsW[w];//送數(shù)碼管片選代碼

DB=dsB[buffer[w];//送相應(yīng)數(shù)碼管的段代碼

w++;if(w>7)w=0;//準(zhǔn)備點(diǎn)亮下一位數(shù)碼管

/*********以下為數(shù)字鐘程序********/

time++;

if(time>=250){buffer[2]=buffer[5]=10;}

if(time>=500) {buffer[2]=buffer[5]=11;s++;time=0;}

if(s>59) {s=0;m++;}

if(m>59) {m=0;h++;}

if(h>23) h=0;

buffer[0]=h/10;buffer[1]=h%10;

buffer[3]=m/10;buffer[4]=m%10;

buffer[6]=s/10;buffer[7]=s%10;

/*********以上為數(shù)字鐘程序********/

}

main()

{TH0=(65536-1843)/256;TL0=(65536-1843)%256;

TMOD=0x01;EA=1;ET0=1;TR0=1;

while(1);

}

程序中,由于數(shù)碼管的驅(qū)動(dòng)放在定時(shí)器T0的中斷服務(wù)子程序中,只在響應(yīng)T0中斷服務(wù)子程序時(shí)執(zhí)行并占用MCU時(shí)間,其余MCU時(shí)間空閑,很好地解決了動(dòng)態(tài)掃描時(shí)單片機(jī)被全時(shí)占用的問(wèn)題。為避免數(shù)碼管抖動(dòng),定時(shí)器中斷間隔不宜過(guò)長(zhǎng),本文中定時(shí)器中斷間隔時(shí)間為2ms。

(作者單位 江蘇省溧水中等專業(yè)學(xué)校)

?誗編輯 薛直艷

猜你喜歡
單片機(jī)
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
基于單片機(jī)的層次漸變暖燈的研究
基于單片機(jī)的多功能智能插排
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
MSP430單片機(jī)在仿真中要注意的幾點(diǎn)問(wèn)題
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
基于單片機(jī)的三維LED點(diǎn)陣設(shè)計(jì)
Microchip推出兩個(gè)全新PIC單片機(jī)系列
基于Proteus的單片機(jī)控制系統(tǒng)的仿真設(shè)計(jì)
河北省| 舞钢市| 岑巩县| 丹巴县| 鹰潭市| 墨江| 郑州市| 当雄县| 新巴尔虎左旗| 黄骅市| 永新县| 喀什市| 天祝| 浮山县| 盐城市| 余江县| 新建县| 淄博市| 万安县| 辽阳县| 文水县| 都兰县| 孝昌县| 沧州市| 道孚县| 诸城市| 五家渠市| 武邑县| 桂平市| 禄劝| 上饶县| 个旧市| 广德县| 凤翔县| 安平县| 凤台县| 彝良县| 和田县| 渭南市| 安多县| 九龙坡区|