⑴ c51單片機 怎樣實現靜態數碼管動態顯示的數字等於點亮LED燈的個數
c51單片機,靜態數碼管顯示數字等於點亮LED燈的個數,這個很容易實野檔鄭現的。在P3口接8個LED燈,且負極接P3口,亮1個燈時,蠢滲P3=0xFE,再依次向左移位一次,從低位向左增加一個0,則亮燈數加一,同時,用一個變數計頌頌數,並送數碼管顯示就行了,一位共陽數碼管接在P0口。模擬圖如下。
⑵ 51單片機加74hc595驅動多個數碼管靜態顯示的程序設計
1、首先數碼管分為1位,4位,8位,4位和8位的又分為共陰和共陽數碼管。
⑶ 51鍗曠墖鏈轟箣鏁扮爜綆¢潤鎬佹樉紺猴紝閿佸瓨鍣ㄧ殑浣跨敤
鍏孌墊暟鐮佺$敱8棰桳ED緇勬垚錛屾牴鎹甃ED鐨勬帴娉曪紝鏁扮爜綆″彲鍒嗕負 鍏遍槾鏋 鍜 鍏遍槼鏋
鍏遍槾鏋 鏄鎸囨瘡涓棰桳ED鐨勯槾鏋侀兘鎺ュ湪浣庣數騫0V涓
鍏遍槼鏋 鏄鎸囨瘡涓棰桳ED鐨勯槼鏋侀兘鎺ュ湪楂樼數騫5V涓
瀵逛簬 鍏遍槾鏋 鏁扮爜綆★紝鍗曠墖鏈衡滄帶鍒垛滾ED鐨勯槼鏋併傛兂瑕佽皨棰桳ED浜錛屽崟鐗囨満灝卞簲璇ョ粰瀵瑰簲LED鐨勬敮璺閫侀珮鐢靛鉤銆
瀵逛簬 鍏遍槼鏋 鏁扮爜綆★紝鍗曠墖鏈衡滄帶鍒垛滾ED鐨勯槾鏋併傛兂瑕佽皨棰桳ED浜錛屽崟鐗囨満灝卞簲璇ョ粰瀵瑰簲LED鐨勬敮璺閫佷綆鐢靛鉤銆
涓轟粈涔堣佺敤閿佸瓨鍣錛熶綘鎯籌紝涓涓鏁扮爜綆″氨瀵瑰簲8涓狪O鍙c備絾鏄濡傛灉瑕佺敤濂藉氫釜鏁扮爜綆″憿錛熷崟鐗囨満鐨勫紩鑴氭牴鏈涓嶅熺敤銆
鍏堟斁涓婂師鐞嗗浘(鐩稿悓鐨勬爣鍙蜂唬琛ㄦ槸榪炲湪涓璧風殑錛屽嵆 鐢典綅鐩稿悓 銆傚傜孩鑹插湀涓鐨凞0鐢典綅閮芥槸鐩稿悓鐨)
P27楂樼數浣嶏紝閿佸瓨鍣ㄧ殑鈥滈攣鈥濇墦寮錛屾柊鏁版嵁浼犺繘鍘
P27浣庣數浣嶏紝閿佸瓨鍣ㄧ殑鈥滈攣鈥濋攣浣忥紝鏂版暟鎹浼犱笉榪涘幓錛屼緷鐒惰緭鍑烘棫鐨勬暟鎹
姣斿傝佺涓変釜鏁扮爜綆$殑a孌典寒璧鋒潵
浣嶉塛E3=0錛屾甸堿=1錛屽氨鑳藉艦鎴愬傚浘鍥炶礬
濡傛灉浣嶉塛E3=1錛學E4=0錛屾甸堿=1錛屽氨鑳藉艦鎴愬傚浘鍥炶礬
⑷ 51單片機靜態顯示可以實現6位數碼管123456的顯示嗎
多位數碼管無法實現靜態顯示,物理上正備它們就存在沖突。除非每一位顯示的內容都相同……
如果執著於用靜態顯示,行卜可以用6個1位數碼管,缺點是需要大量的舉帶毀管腳來控制(可以用串擴並方案或地址映射擴展方案,成本上得不償失)。
⑸ 51單片機 三極體數碼管靜態顯示怎麼實現位選
你的代碼中
sbit 1=P2^0;
sbit 2=P2^1;
sbit 3=P2^2;
sbit 4=P2^3;
就是在定義位選信號,1是對應最左邊數碼管,則4是對應最右邊數碼管;
為低電平則對應數碼管會被點亮;
因為有4個數碼管,而你沒有指出要怎麼個顯示,那麼;
void main(){
while(1)
{ for(i=0;i<9;i++)
{ P2=0;P0=TAB[i] ; delay(20) ; } //4個數碼管都顯示相同的內容
}
}
⑹ 51單片機led數碼管顯示0-99靜態程序
假設P0 P2口接數碼管 程序如下
include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0;
//共陰數碼管七段碼
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延時程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void main(void )//主程序
{
while(1)
{
delay_ms(1000);
num++;
if(num==100)num=0;
P0=table[num/10];
P2=table[num%10];
⑺ 51單片機共陰數碼管利用靜態顯示,讓六個數碼管顯示1~6,程序怎麼寫
代碼如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define data P0 //P0口宏定義
/* ***************************************************** */
// 數碼管位選數組定義
/* ***************************************************** */
uchar code leddata[] =
{ 0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
0x76, //"H"
0x38, //"L"
0x37, //"n"
0x3E, //"u"
0x73, //"P"
0x5C, //"o"
0x40, //"-"
0x00, //熄滅
0x00 //自定義};
};
/* ***************************************************** */
// 位定義
/* ***************************************************** */
sbit = P1^7; //段選定義
sbit we = P1^6; //位選定義
/* ***************************************************** */
// 函數名稱:DelayMS()
// 函數功能:毫秒延時
// 入口參數:延時毫秒數(ValMS)
// 出口參數:無
/* ***************************************************** */
void delay(uint z)
{
uint x,y;
for(x = 0; x < z; x++)
for(y = 0; y < 113; y++);
}
/* ***************************************************** */
// 函數名稱:main()
// 函數功能:數碼管靜態顯示
// 入口參數:無
// 出口參數:無
/* ***************************************************** */
void main(void)
{
uchar i;
we = 1;//位選開
data = 0x00;//送入位選數據
we = 0;//位選關
while(1)
{
for(i = 0;i < 16 ; i++)
{
= 1; //段選開
data = leddata[i]; //送入段選數據
= 0; //段選關
delay(500); //延時
}
}
}
(7)51單片機靜態數碼管擴展閱讀
對於74HC573,形象一點,我們只需要將其理解為一扇大門,只不過這扇大門是單向的,其中11引腳(LE)控制著門的開、關狀態,高電平為大門打開,低電平為大門關閉。
D0-D7為輸入,Q0-Q7為輸出,在LE = 1,即輸入高電平時,輸入端=輸出端,輸入是什麼,輸出也就原封不動的輸出;在LE = 0 ,即輸入高電平時,大門關閉,實現鎖存,不再輸出。了解之後,我們按照電路圖,來進行編程,代碼實現。
在實現數碼管的靜態顯示中,用到了兩個鎖存器,兩個I/O口,P1.6和P1.7,分別是位選和段選。
首先定義了個數碼管位選數組,也就是十六進制代碼,這便是後來數碼管顯示數字的核心,接著,用 sbit 定義了位選和段選埠,分別是 P1.6 和 P1.7 ,定義了一個延時函數,其實這一串代碼很有意思,開關開關思想,貫穿始終。
首先把位選打開,送入位選數據後,關閉鎖存器,實現鎖存,進入循環,隨之打開段選鎖存器,送入段選數據後,再次關閉段選。
接下來,這個延時操作對於實際看到數碼管的顯示效果特別重要,因為程序在段選後之後,會馬上消隱,顯示的時間之後幾個微秒,這顯然不太合理,需要在關閉段選後加上延時,這樣一來,才會讓每位數碼管亮度保持均勻。
⑻ 採用靜態連接方法,8051單片機最多可以控制幾個數碼管
不考慮供電的話,用51單片機可以接24個,8個口斷選,24個口位選。
數碼管在生活中經常見到,它是重要的顯示用電子元件,也經常用單片機控制其顯示,需要在掌握其功能原理、結構特點的基礎上掌握其控制方法。