❶ AVR單片機數碼管顯示00-99
這個和你的硬體環境有關,共陰共陽,使用串列還是並行顯示。還有avr單片機種類很多的,我用過8位的用過32位的。寫這類驅動軟體一定要了解硬體環境的。
一定要使用匯編么,C同樣可以完成,免費的AVR C編譯器可以使用 GCC。
❷ 用單片機控制兩個led數碼管採用靜態連接方式要求兩個數碼管顯示00-99,
程序是剛做的,沒測試過,你試試,能用再給分吧。P0口是位選,P2口段選。#includeunsignedintbittime=0;unsignedcharbitdisplay=0;unsignedcharmg=0,ms=0;unsignedcharTab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00};voidtimer0(void)interrupt1{TH0=0xF0;TL0=0x60;switch(bitdisplay){case0:P2=Tab[mg];P0=0xFE;break;case1:P2=Tab[ms];P0=0xFD;break;}bitdisplay++;bittime++;if(bitdisplay>=2)bitdisplay=0;if(bittime>=500){bittime=0;mg++;if(mg>9){mg=0;ms++;}if(ms>9)ms=0;}}voidmain(void){TMOD=0x01;TH0=0xF0;TL0=0x60;TR0=1;EA=1;while(1);}
❸ 求單片機採用外部中斷0和1控制數碼管進行00到99的計數c語言程序
程序是剛做的,沒測試過,你試試,能用再給分吧。P0口是位選,P2口段選。
#include<reg52.h>
unsigned
int
bittime=0;
unsigned
char
bitdisplay
=
0;
unsigned
char
mg=0,ms=0;
unsigned
char
Tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,
0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00};
void
timer0(void)
interrupt
1
{
TH0=0xF0;
TL0=0x60;
switch(bitdisplay)
{
case
0:P2=Tab[mg];P0=0xFE;break;
case
1:P2=Tab[ms];P0=0xFD;break;
}
bitdisplay++;
bittime++;
if(bitdisplay>=2)
bitdisplay=0;
if(bittime>=500)
{
bittime=0;
mg++;
if(mg>9)
{mg=0;ms++;}
if(ms>9)
ms=0;
}
}
void
main(void)
{
TMOD=0x01;
TH0=0xF0;
TL0=0x60;
TR0=1;
EA=1;
while(1);
}
❹ 單片機控制四位數碼管顯示0000-9999
首先告訴你,AT89C51已基本上沒人用了,代替它的是AT89S51。
共陽數碼管,OK,單片機設計多數使用共陽數碼管。
單片機控制四位數碼管顯示0000-9999
我給你提供一個每秒自動加1的四位數碼管循環顯示0000~9999的程序。
D0 equ 0c0h ; 11000000B
D1 equ 0F9h ; 11111001B
D2 equ 0A4h ; 10100100B
D3 equ 0B0h ; 10110000B
D4 equ 99h ; 10011001B
D5 equ 92h ; 10010010B
D6 equ 82h ; 10000010B
D7 equ 0F8h ; 11111000B
D8 equ 80h ; 10000000B
D9 equ 90h ; 10010000B
org 0000h
jmp start
org 0030h
start:
mov dptr,#data0
mov r2,#0
mov r3,#0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
next: call display
inc r2
cjne r2,#100,next
mov r2,#0
inc r3
cjne r3,#100,next
mov r3,#0
jmp next
display:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov r4,#250
lpr4: mov p2,#0ffh
mov a,r3
mov b,#10
div ab
movc a,@a+dptr
mov p0,a
clr p2.0
call t1ms
mov p2,#0ffh
mov a,b
movc a,@a+dptr
mov p0,a
clr p2.1
call t1ms
mov p2,#0ffh
mov a,r2
mov b,#10
div ab
movc a,@a+dptr
mov p0,a
clr p2.2
call t1ms
mov p2,#0ffh
mov a,b
movc a,@a+dptr
mov p0,a
clr p2.3
call t1ms
djnz r4,lpr4
ret
data0: db d0,d1,d2,d3,d4,d5,d6,d7,d8,d9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
t1ms:
mov r7,#250
djnz r7,$
mov r7,#250
djnz r7,$
ret
jmp $
end
❺ 單片機用匯編寫兩個數碼管顯示0到99循環的程序
1、新建項目,做好准備。
❻ 單片機數碼管顯示0到9
#include<reg51.h>
sbitk1=P1^0;
#define uint16 unsigned int
#define uchar unsigned char
uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(){
uint16 i=1000;
while(i--);}
void main()
{
uchar n ;
P2=0xfe;
P1=0xff;
while(1)
{
if(k1==0){
if(n>=9) n=0;
else n++;
P0=shuzu[n];
while(!k1);
delay();
while(!k1);
}
}
}
(6)單片機使數碼管顯示0099擴展閱讀:
51單片機的功能特性
1,可以模擬63K程序空間,接近64K 的16位地址空間;
2,可以模擬64Kxdata 空間,全部64K 的16位地址空間;
3,可以真實模擬全部32 條IO腳;
4,完全兼容keilC51 UV2 調試環境,可以通過UV2 環境進行單步,斷點, 全速等操作;
5,可以使用C51語言或者ASM匯編語言進行調試 ;
6,可以非常方便地進行所有變數觀察,包括滑鼠取值觀察,即滑鼠放在某 變數上就會立即顯示出它此的值;
7,可選 使用用戶晶振,支持0-40MHZ晶振頻率;
8,片上帶有768位元組的xdata,您可以在模擬時選 使用他們,進行xdata 的模擬;
9,可以模擬雙DPTR 指針;
10,可以模擬去除ALE 信號輸出. ;
11,自適應300-38400bps 的所有波特率通訊;
12,體積非常細小,非常方便插入到用戶板中.插入時緊貼用戶板,沒有連接電纜,這樣可以有效地減少運行中的干擾,避免模擬時出現莫名其妙的故障;
13,模擬插針採用優質鍍金插針,可以有效地防止日久生銹,選擇優質園腳IC插座,保護模擬插針,同時不會損壞目標板上的插座. ;
14,模擬時監控和用戶代碼分離,不可能產生不能模擬的軟故障;
15,RS-232介面不計成本採用MAX202集成電路,串列通訊穩定可靠,絕非一般三極體的簡易電路可比。
❼ 單片機 數碼管動態顯示 0-99
你說的總是先亮第一個,是哪一個??有個位,還是十位?還有你說的一秒是指數字增一,延遲一秒?如果是,那你在MAIN WHILE中加個delayms延遲。具體是延遲多少,就要看你的晶振了。
❽ 51單片機數碼管顯示0-99的問題
那個lalala有什麼用?看程序是在P0口接一個共陽數碼管。那同樣在P2口再接一個數碼管。這樣,P0口的數碼管顯示十位數,P2口的數碼管顯示個位數。或在P2,P3口各接一個數碼管。見下圖。
這種接法屬於靜態顯示電路。這個學會後,再練習動態顯示電路。
❾ 求用單片機驅動數碼二級管的C語言程序,要求二級管顯示00~99
兩位數碼管顯示00~99,無需採用數碼管掃描,通常採用靜態顯示。
給你提供一個兩位數碼管00~99循環加法計數的CC語言程序。
程序中,採用了軟體延時的方法,每半秒自動加1。
#include<reg52.h>
unsignedcharcount=0;
unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段碼
voiddelay500ms(); //延時子程序聲明
voiddisplay(unsignedcharX); //顯示子程序聲明
voidmain()
{
while(1)
{
delay500ms();
count++;
if(count>=100)count=0;
display(count);
}
}
voiddelay500ms()
{
unsignedchari,j,k;
for(i=5;i>0;i--)
for(j=200;j>0;j--)
for(k=248;k>0;k--);
}
voiddisplay(unsignedcharX)
{
P0=table[X/10];
P2=table[X%10];
}