導航:首頁 > 操作系統 > 單片機中三位數碼管原件

單片機中三位數碼管原件

發布時間:2024-11-28 09:18:17

❶ 用51單片機程序顯示3位7段數碼管,求具體程序

假設為共陰極數碼管,驅動輸入端接單片機P1口,共陰極接P2口的0.1.2.腳。我的程序如下,當前顯示數字123
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef long int uint32;
code uint8 number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(uint16 x)//1ms延時
{
uint8 i = 121;
while(x > 0)
{
i = 121;
while(i > 0)
i --;
x --;
}
}
void xianshi(uint16 x)
{
uint8 i=0;
for(i=0;i<=2;i++)
{
P2=~(1<<i);
switch(i)
{
case 0:P1=number[(x/1)%10];break;
case 1:P1=number[(x/10)%10];break;
case 2:P1=number[(x/100)%10];break;
default:break;
}
delay_ms(10);
}
}
main()
{
while(1)
{
xianshi(123);
}
}

❷ 3位數碼管引腳圖,與單片機的接法!如何區分共陰共陽!

如果有電路圖,你可以參考電路圖。至於是共陰或共陽,你可以用代碼來測試一下,讓連接數碼管的IO輸出高電平或低電平。大部分單片機的數碼管都是共陽極的,因為單片機IO默認輸出是高電平。共陰或共陽關鍵在「共」字上,只要用萬用表測量數碼管的8個引腳中那一個引腳是接電源的負極或是正極,只要找出這一個引腳就知道是共陰或是共陽了,因為只有一個引腳和其他的7個引腳是不同的。

❸ 用51單片機設計3位led數碼顯示管作秒錶00.0-99.0求設計電路與c語言程序

#include "STC12C54.H"
#define uchar unsigned char
#define uint unsigned int
#define dataport P1//P1直接驅動數碼管的8個陽極
sbit wei1=P3^3;//再有三個管腳接3個三極體驅動數碼管的陰極
sbit wei2=P3^4;

sbit wei3=P3^5;
uint a=0;//中斷次數計數,一次50ms,20次為1 秒
//共陰數碼管七段碼
uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//延時子程序
void delay1ms(uint t)
{

uint i,j,k;
for(i=t;i>0;i--)
for(j=15;j>0;j--)
for(k=27;k>0;k--);
}
//顯示子程序
void display(uint n)
{
uchar a1,a2,a3;
a1=n/100%10;
a2=n/10%10;
a3=n%10;
wei1=1;
dataport=TABLE[a1];
delay1ms(1);
wei1=0;
dataport=0x80|TABLE[a2];//這里多個小數點
delay1ms(1);

wei3=1;
dataport=TABLE[a3];

delay1ms(1);
wei3=0;
}
void init(void)
{
TMOD=0X01;
TH0=(655536-50000)/256;//定時50ms
TL0=(655536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1M0=0;
P1M1=0xff;//P1口設為推挽輸出,驅動能力強
P3M0=0;
P3M1=0x38;//P3.3P3.4 P3.5口設為推挽輸出
}
void main(void)//主程序
{
init();//初始狀態設定
while(1)
{
display(a/2);//顯示計數值,以十分之一秒為單位
}
}
void timer0(void)interrupt 1//中斷子程序
{
TH0=(655536-50000)/256;
TL0=(655536-50000)%256;
a++;
if(a==1980)a=0;//1980次是99秒
}

❹ 利用51單片機和3位數碼管實現10分鍾內的簡易計時器

修改如下:
#include<reg51.h>
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbitkey1=P2^7;
sbitkey2=P2^6;
sbitweiH=P3^0;
sbitweiM=P3^1;
sbitweiL=P3^2;
uintnum=0,ge=0,shi=0,fen=0,k;//num用來計數,ge為各位顯示,shi為十位顯示,fen為分鍾顯示

voiddelayms(uintxms)
{
uinti,j;
for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
for(j=110;j>0;j--);
}

ucharkey1scan(void)
{if(key1==0)
{delayms(10);
if(key1==0)
{while(!key1);
return1;
}
return0;
}

ucharkey2scan(void)
{if(key2==0)
{delayms(10);
if(key2==0)
{while(!key2);
return1;
}
}
return0;
}

voidshowtime()interrupt1//時間顯示
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
num%=3;
switch(num)
{
case0:
weiL=1;//顯示秒的個位
P1=0xff;
P1=table[ge];
delayms(5);
weiL=0;
break;
case1:
weiM=1;//顯示秒的十位
P1=0xff;
P1=table[shi];
delayms(5);
weiM=0;
break;
case2:
weiH=1;//顯示分鍾,只顯示0-9
P1=0xff;
P1=table[fen];
delayms(5);
weiH=0;
break;
}

voidmain()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
num=0;
while(1)
{
if((key1scan()==1)&&(key2scan()!=1))break;//按鍵1按下,按鍵2未按下開始計時
}
while(1)
{
delay(1000);
ge++;
if(ge>9)
{
ge=0;
shi++
if(shi>5)
{
fen++;
if(fen>9)fen=0;
}
}
showtime();
}
}

閱讀全文

與單片機中三位數碼管原件相關的資料

熱點內容
userid加密字元串設置 瀏覽:695
如何解析寶塔伺服器域名 瀏覽:645
android日誌串口 瀏覽:327
app和app如何轉化 瀏覽:729
java實現文件的拷貝 瀏覽:7
如何把appstore移動到桌面 瀏覽:904
租用伺服器延遲有什麼解決方案 瀏覽:52
2004cad命令快捷 瀏覽:244
手動歸檔命令 瀏覽:895
文件夾信息跑到上面怎麼恢復 瀏覽:629
plc的基本指令及編程 瀏覽:433
為什麼用壓縮空氣洗車 瀏覽:463
php鍵值重復 瀏覽:53
mbp運行python 瀏覽:49
郵箱伺服器源碼 瀏覽:437
長沙java程序員待遇 瀏覽:397
怎麼車載U盤分文件夾播放 瀏覽:340
華為健康使用命令 瀏覽:351
誇克解壓後的文件在哪 瀏覽:926
秀直播系統源碼php下載 瀏覽:294