⑴ 用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();
}
}
(1)單片機數碼管的代碼擴展閱讀:
51單片機的介面作用
P0口:可以被定義為桐坦數據/地址的低八位,能夠用於外部程序/數據存儲器。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:標准輸入輸出I/O,P1口管腳寫入1後,被內部上拉為高,可用作輸入。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:既困棗可用於標准輸入輸出I/O,也可用於外部程序存儲器或數據存儲器訪問時的高八位地址。
P3口:既可以做標准輸入輸出I/O,也可作為AT89C51的一些特殊功能口。
⑵ 單片機控制74LS164控制數碼管顯示怎麼編程(匯編語言)
74LS164是串入並出轉換晶元,可以藉助串口來實現,也可以用普通IO口模擬實現。舉例如下:
#include<reg51.h>
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit keyup=P3^6;
sbit keydn=P3^7;
void delay()
{
int i=1000;
while(i--);
}
main()
{
uchar i;
i=0;
SCON=0x00;
TI=1;
while(1)
{
SBUF=table[i];
while(TI==0);
TI=0;
delay();
if(keyup==0)
{
i++;
while(keyup==0);
}
if(keydn==0)
{
if(i>0)i--;
while(keydn==0);
}
i%=10;
}
}
⑶ 如何利用單片機讓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--);
}
(3)單片機數碼管的代碼擴展閱讀
led數碼管是由多個發光二極體封裝在一起組成「8」字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。led數碼管常用段數一般為7段有的另加一個小數點,還有一種是類似於3位「+1」型。
位數有半位,1,2,3,4,5,6,8,10位等等,led數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管,除了它們的硬體電路有差異外,編程方法也是不同的。