導航:首頁 > 操作系統 > 單片機數碼管動態顯示程序

單片機數碼管動態顯示程序

發布時間:2022-04-26 14:28:58

『壹』 【單片機程序】能讓數碼管動態顯示「0123」一秒後再顯示「4567」以此循環

#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
void display(u8 x);//聲明顯示子函數
u8 t0n; //定時器中斷次數
void main()//主程序
{
u8 n;
TMOD=0x01;
TH0 =0x3C;//晶振12M,定時50ms
TL0 =0xB0;
IE =0x82;
TR0 =1;
while(1)
{
display(n);
if(t0n>=20)//1秒到
{
t0n=0;
if(n==0)n=4;
else n=0;
}
}
}
//定時器T0中斷服務程序
void T0_isr() interrupt 1
{
TH0 =0x3C;
TL0 =0xB0;
t0n++;
}

『貳』 如何利用單片機讓4位數碼管顯示

程序如下(用的是STC89C52晶元):

#include<reg52.h>//52系列單片機頭文件

#defineucharunsignedchar

#defineuintunsignedint

uintx,y;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//共陰極數碼管編碼

voiddisplay(uchar,uchar,uchar,uchar);//聲明子函數

voiddelay(int);//聲明子函數

voidmain()

{

while(1)

{

display(1,2,3,4);//主程序始終調用數碼管顯示子程序

}

}

voiddisplay(uchara,ucharb,ucharc,uchard)

{

P2=0xef;

P0=table[a];//給第一個數碼管送"a"

delay(1);//延時1ms

P2=0xdf;

P0=table[b];//給第二個數碼管送"b"

delay(1);//延時1ms

P2=0xbf;

P0=table[c];//給第三個數碼管送"c"

delay(1);//延時1ms

P2=0x7f;

P0=table[d];//給第三個數碼管送"d"

delay(1);//延時1ms

}

voiddelay(uintz)//延時子函數

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

(2)單片機數碼管動態顯示程序擴展閱讀

led數碼管是由多個發光二極體封裝在一起組成「8」字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。led數碼管常用段數一般為7段有的另加一個小數點,還有一種是類似於3位「+1」型。

位數有半位,1,2,3,4,5,6,8,10位等等,led數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管,除了它們的硬體電路有差異外,編程方法也是不同的。

『叄』 單片機動態顯示的程序

動態顯示的數碼和你的數碼管的數據線接法有直接的聯系的,顯示代碼是不一樣的,你可以通過如下方法自行測試,做一個簡單的循環,循環代碼為,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,分別找出每個數據對應顯示的數碼管的,a,b,c,d,e,f,g,dp的哪一位,然後整理一下就可以得出0-9的數字顯示碼了.

『肆』 單片機動態數碼管程序怎麼寫

從靜態顯示和動態顯示的區別說起,把動態顯示佔用IO少,利用視覺殘留的方法說清楚就可以啊.
附上電路圖和程序供你參考,別忘記給分哦.

#include "STC12C5A.h" //包含頭文件

/***數字編碼表 0~9***/
unsigned char const seg[10] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; //段選
unsigned char const position[]={1,2,4,8}; //位選
sbit HC595_SCK = P0^4;
sbit HC595_RCK = P0^5;
sbit HC595_RST = P0^6;
sbit HC595_DAT = P0^7;

//us延時
void delay_us(unsigned int t)
{
while(t--);
}

//延時函數(24M 晶振下延時 1ms)
void delay_ms(unsigned int time)
{
unsigned int t;
for(;time>0;time--)
{
t = 1500;
while(t--);
}
}

//向 HC595 發送一個位元組
void HC595_send_byte(unsigned char byte)
{
unsigned char i,temp;
for(i=0;i<=7;i++)
{
temp = byte&1<<i;
if(temp)
{
HC595_DAT = 1; //數據線
}
else
{
HC595_DAT=0;
}
//下面是寫時序
HC595_SCK=1; //SCK(11 腳)
delay_us(1);
HC595_SCK=0;
delay_us(1);
}
HC595_RCK=0; //RCK(12 腳)
delay_us(1);
HC595_RCK=1;
}

//顯示一個數 num
void SMG_ShowNum(unsigned char num)
{
HC595_send_byte(seg[num]);
}

void SMG_Display(unsigned int dat)
{
SMG_ShowNum(dat/1000);
P0 = (P0&0xf0)|position[0];
delay_ms(2);

SMG_ShowNum((dat%1000)/100);
P0 = (P0&0xf0)|position[1];
delay_ms(2);

SMG_ShowNum(dat%100/10);
P0 = (P0&0xf0)|position[2];
delay_ms(2);

SMG_ShowNum(dat%10);
P0 = (P0&0xf0)|position[3];
delay_ms(2);
}

//主函數
void main()
{
unsigned int num=0;
unsigned char time=0;
P0=0X00; //初始化低四位為高電平,使能四位數碼管
HC595_RST=0; //HC595 的復位端,不能讓他復位
while(1)
{
num = (num+1)%10000; //動態顯示 0~9999
time = 100;
while(time--)
SMG_Display(num);
}
}

『伍』 使用單片機實現四位八段的數碼管顯示,顯示出852.6如何實現,請寫出實現流程

有兩種方式,一種是動態掃描,假設你數碼管有COM1,COM2,COM3,COM4,然後有8個段,常見的是7個控制數碼管段還有一個小數點一共8個段

那麼這里就描述單片機一次掃描4位的過程,首先,如果你的數碼管是共陽,那麼顯示第一位就將COM1引腳拉到高電平,然後8個引腳接到單片機IO口上,你說你要顯示852.6,那麼第一位是8,7個段全亮,所以7個IO全部拉低電平就行,隨後延遲差不多1ms左右
接下來就是顯示第二個數碼管,和之前一樣,COM2拉高,然後你要顯示5的話有兩個段是不亮的,所以哪兩個腳你不想讓他亮,你直接把對應的IO拉高就行,你要讓剩下哪5個段亮直接拉高電平即可,隨後再延時1ms左右
接下來兩位和上面一樣,對應位的COM口拉高電平,對應的欄位IO你要讓哪個段亮就把哪個拉低電平,哪個段不想亮就拉高電平,最後延時1ms就行
最後程序外面套個while(1)就可以實現無限循環了
還有一種方式就是用74HC595和4個數碼管連接起來,74HC595是一個串列鎖存寄存器,只需要4個74HC595和4個數碼管就行,最少只佔用單片機2個IO
這里就說明一下74HC595的控制方式
首先74HC595應該有個EN口,拉低,然後時鍾拉高,循環8次,再把時鍾信號拉低,用一個AND運算,如你要傳輸一個0XAA,那麼就是
void InputData(0XAA)
{
for(int i=0;i<8;i++)
{
if(dat&0x01==1)
{
digitalWrite(SCK,LOW);
digitalWrite(DAT,HIGH);
delayMicroseconds(10);
}
else
{
digitalWrite(SCK,LOW);
digitalWrite(DAT,LOW);
delayMicroseconds(10);
}
dat=dat>>1;
digitalWrite(SCK,HIGH);
}
}
這里我是直接復制我以前寫的一個arino驅動74HC595的程序,SCK是時鍾,DAT是數據
建議你把單片機和你數碼管的電路圖發出來,你說如何實現我不知道你是怎麼接的數碼管

『陸』 C語言單片機代碼 數碼管動態顯示

這里的16個元素代表的是從十六進制數0~9、A、B、C、D、E、F的段碼,根據什麼來填這些數組元素?那就要看你設計程序時定義數組的作用才能確定.table[1]對應的元素為0x06,是十六進制數,轉換成二進制數是00000110B,分別對應於數碼管的Dp、g、f、e、d、c、b、a
腳,所以在共陰數碼管上點亮b、c兩段,顯示的是數字1,其它同理。

『柒』 51單片機數碼管動態顯示從右往左

這是四位數碼管從右從左流動顯示,像滾動字幕一樣的。用不著矩陣按鍵哪。

其實程序很簡單,沒那麼復雜。程序如下

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共陰段碼碼,0x00為滅

void delay()//延時子程序

{

uint y;

for(y=400;y>0;y--);

}

void main()

{

uchar n,x;

while(1)

{

n++;

if(n>50)//n為顯示一屏顯示次數,n大小可調節流動速度

{

n=0;

x++;//從下一個位置開始顯示

if(x>8)x=0;

}

}

}

模擬結果

『捌』 單片機動態數碼管顯示程序

你想要做單片機有關的動態數碼顯示程序的話,你可以先下一個proce的破解版,你在上面可以做一個有關數碼顯示屏程序的一個相關的圖。

『玖』 運用51單片機實現4位8段LED數碼管的動態數字顯示,寫出C語言程序

動態顯示的是有固定格式的,賦值,開顯示,延時,關顯示,假設p0口接數據顯示位,p2口低4位接片選,
p2=tab[1];
//賦值
p3_0=0;
//開第一位顯示
for(i=0;i<200:i++);//延時
p3_0=1;
//關第一位顯示
p2=tab[2];
p3_1=0;
//開第二位顯示
for(i=0;i<200:i++);
p3_1=1;
這個程序就是讓兩個數碼管分別顯示1和2,注意程序開頭包含頭文件regx52.h,如果是包含reg52.h編譯不了的

閱讀全文

與單片機數碼管動態顯示程序相關的資料

熱點內容
查看ipdns命令 瀏覽:260
命令與征服3凱恩之怒漢化 瀏覽:865
linuxc一站式編程 瀏覽:96
比心app男的識別女的怎麼樣 瀏覽:637
線切割pdf 瀏覽:638
命令與征服3泰伯利亞戰爭109修改器 瀏覽:521
看著很解壓的景色 瀏覽:896
sqlite在Android中應用 瀏覽:77
pdf虛擬列印機ofmac 瀏覽:354
九江php招聘 瀏覽:376
怎麼在ubuntu編程 瀏覽:256
思科保存的命令是什麼意思 瀏覽:958
主力控制副圖源碼及套利選股公式 瀏覽:813
兄弟php培訓怎麼樣 瀏覽:678
金炯泰編譯器 瀏覽:860
涼山參加青少年編程培訓班報名 瀏覽:598
程序員開發者模式 瀏覽:199
電腦有圖標的文件夾是什麼 瀏覽:350
app停運了怎麼恢復 瀏覽:188
u盤加密密碼怎麼刪除 瀏覽:90