1. 51單片機如何利用4個七段數碼管採用動態顯示顯示4位數字,如2035
不停地利用人的視覺暫留,在一個合適的速度下依次顯示1個2,1個0,1個3,1個5.
當顯示一個「2」的時候,其他三位都是空的,以此類推。
但人眼是看不到短時間內這些變化的,假如這個行為不斷循環,那麼人看到的就是「2035」,而不是單個的數字。
比如說吧:
...
P1=num[2];//假設num[2]是0x5b,即"2"
P20=1;//假設使能端是高有效,按實際情況來。
delay();//延長50ms應該可以把,不能太長(過0.1秒就能看出來了),最好也不要太短
P1=num[0];
P21=1;
delay();
...
2. 用89c51單片機寫一個數碼管顯示HELLO的程序,是在一個七段數碼管上依次出現幾個字母
在數碼管依次排列好這一句話,首先取模,然後寫顯示函數,寫完函數放置while(1)中無限循環下去
代碼如下:
#include; //用的是單獨操作,沒有用匯流排
sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit led6 = P1^5;
sbit led7 = P1^6; //看清楚自己的管腳,不一定對應,這里採用P0對應段選
code unsigned char led_paly[5] = {0x76,0x79,0x38,0x38,0x5c};// H E L L O
void delay(unsigned int um)//延時函數
{
int i,j;
for(i = 0;i < um;i++)
{
for(j = 0;j < 200;j++);
}
}
void display()
{
P0 = led_paly[0];//顯示局尺桐H
led2 = 0;
delay(50);
led2 = 1;
P0 = led_paly[1];//顯示E
led3 = 0;
delay(50);
led3 = 1;
P0 = led_paly[2];//顯示L
led4 = 0;
delay(50);
led4 = 1;
P0 = led_paly[3];//顯示E
led5 = 0;
delay(50);
led5 = 1;
P0 = led_paly[4];//顯示O
led6 = 0;
delay(50);
led6 = 1;
}
void main(void)
{
while(1)
{
display();
}
}
(2)單片機7段數碼管顯示擴展閱讀:
51單片機的介面作用
P0口:可以被定義為桐坦數據/地址的低八位,能夠用於外部程序/數據存儲器。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:標准輸入輸出I/O,P1口管腳寫入1後,被內部上拉為高,可用作輸入。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:既困棗可用於標准輸入輸出I/O,也可用於外部程序存儲器或數據存儲器訪問時的高八位地址。
P3口:既可以做標准輸入輸出I/O,也可作為AT89C51的一些特殊功能口。