單片機數碼管c語言程序
『壹』 單片機數碼管顯示0到999c語言程序怎麼編
#include<reg51.h>
unsigned char xs_d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int time=0,s,sz;delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<125;j++);
}INT_0()interrupt 0
{ delay(10);
if(INT0==0){sz++;<br> if(sz>2){sz=0;}
}
}
void T0_int()interrupt 1
{
TH0=(65535-50000)/256;//設置初值
TL0=(65535-50000)%256;
s++;
if(s>20){s=0;<br> if(sz==1)time++;<br> if(time>999){time=0;}
if(sz==0){time=0;//清零<br> }
(1)單片機數碼管c語言程序擴展閱讀:
運算器由運算部件——算術邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存器等幾部分組成。
ALU的作用是把傳來的數據進行算術或邏輯運算,輸入來源為兩個8位數據,分別來自累加器和數據寄存器。ALU能完成對這兩個數據進行加、減、與、或、比較大小等操作,最後將結果存入累加器。
運算器有兩個功能:
(1) 執行各種算術運算。
(2) 執行各種邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。
運算器所執行全部操作都是由控制器發出的控制信號來指揮的,並且,一個算術操作產生一個運算結果,一個邏輯操作產生一個判決。
『貳』 單片機8位數碼管依次顯示0到7,要求用c語言實現
假設8個數碼管公共端均接地,同時顯示0-7
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};
void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}
void main()
{
uchar i=0;
P0=0x00;
while(1)
{
P0=~DSY_CODE[i];
i=(i+1)%10;/*顯示0-9*/
DelayMS(200);
}
}
下面程序從左到右顯示
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=200;i>0;i--);
}
}
void main()
{
uchar i,k=0x80;
while(1)
{
for(i=8;i>0;i--)
{
P2=0xff;
k=_crol_(k,1);
P0=DSY_CODE[8-i];
P2=k;
DelayMS(3);
}
}
}
『叄』 誰能告訴我51單片機簡單的led數碼管時鍾程序 24小時制的(c語言版的)
#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar shi,fen,miao;
uchar time;
void delay(uint x)
{
uint y;
for(;x>0;x--)
{
for(y=0;y<124;y++);
}
}
void display(uchar shi,uchar fen,uchar miao)
{
P2=0; //位碼
P0=(tab[shi/10]); //段碼
delay(2);
P2=1;
P0=(tab[shi%10]);
delay(2);
P2=2; //位碼
P0=0x40; //段碼
delay(2);
P2=3; //位碼
P0=(tab[fen/10]); //段碼
delay(2);
P2=4;
P0=(tab[fen%10]);
delay(2);
P2=5; //位碼
P0=0x40; //段碼
delay(2);
P2=6; //位碼
P0=(tab[miao/10]); //段碼
delay(2);
P2=7;
P0=(tab[miao%10]);
delay(2);
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(time==20)
{
time=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
}
display(shi,fen,miao);
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
}
/*還有什麼不明白繼續追加*/
『肆』 80C51單片機數碼管的顯示 C語言
用10個8段數碼管動態掃描顯示的:
#include
unsigned
char
const
dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
顯示段碼值0123456789
unsigned
char
code
seg[]={0,1,2,3,4,5,6,7,8,9};//分別對應相應的數碼管點亮,即位碼
/*------------------------------------------------
延時子程序
------------------------------------------------*/
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函數
------------------------------------------------*/
main()
{
unsigned
char
i;
while(1)
{
P0=dofly[i];//取顯示數據,段碼
P2=seg[i];
//取位碼
delay(20000);
//掃描間隙延時,時間太長會閃爍,太短會造成重影,自己調試
i++;
if(10==i)
//檢測10位掃描完全?
i=0;
}
}
『伍』 求C語言實現一個51單片機的數碼管程序!!!(看似簡單實際不好整!你測測!)
你這個太簡單了。。不過前提是你2個單片機驅動的數碼管是同樣規格的和同樣的接法,比如P1.0接LED的a P1.1接LED的b。。。。
先吧一個單片機A編寫好數碼管的顯示代碼,另一個只是讀取就是了比如你這個圖說實在的看不清。。。我就按左邊這組是P0,右邊從上往下分別是P1,P2,P3口吧。
B單片機的P1口始終讀取A單片機P1口的顯示段碼數據。讀過來就直接傳送給P0,你讀位碼的那2個應該是PX.2和PX.3(我是按上句說的從上往下排他應該是P3.2,P3.3)這樣同時把位碼讀取過來其實直接賦值給你的B單片機顯示位控制也可以好像是P2.0~P2.3不過你說的就2位,那麼就按P2.0,P2.1就可以了
用你說的中斷方式也行,直接輪詢也行 按中斷說吧:先開外部中斷設定成低電平觸發,打開2個外部中斷,中斷0里代碼為
{
P2^0=1;
P2^1=1;
P0=P1;
P2^0=0;
}
中斷1和0基本一樣
{
P2^0=1;
P2^1=1;
P0=P1;
P2^1=0;
}
主程序里寫好初始化,即開外部中斷,把各IO全初始化為1,即P0=0XFF;P1=0XFF;....
『陸』 51單片機 讓數碼管自動顯示0至9的C程序。有沒有比這個更簡單的
可以通過代碼優化的方式來簡化代碼。
一、設置延時函數
延時函數在單片機中有著讓現實延時的能力,本程序中可以通過採用for循環方式進行延時,具體代碼如下:
void delay()
{
uinti,j;
for(i=100;i>0;i--)
for(j=1000;j>0;j--);
}
二、設置數碼管顯示數組
數組定義簡單,而且訪問很方便。所有元素類型相同,在數碼管顯示程序中可以讓程序代碼減少。數組代碼如下:
chara[10]={0xff,0x3,0x9f,0x25,0xd,0x99,0x49,0x41,0x1f,0x1,0x9};
三、設置數碼管顯示循環
數碼管顯示循環可以不用編寫一次又一次的數碼管顯示代碼,既方便又簡潔。具體代碼如下:
for(inti=0;i<10;i++)
{
P0=a[i];
delay();
}
(6)單片機數碼管c語言程序擴展閱讀
單片機程序進行簡化可以查看是否有反復出現的代碼序列,整合成循環進行更改。同一類型且用法相同的變數可以整合成數組,方便對各個內容進行訪問。有特定功能的代碼段可以定義一個函數進行訪問。
注意:用C51語言編輯的單片機程序與普通C語言不同,C51語言中的數據類型和標准c中的數據類型不同。