串行輸出數據(查詢方式)
該例采用查詢方式向74LS164送兩位串行數據(0 ~9數字),并顯示在74LS164上連接的共陽數碼管上。
該例中:
n是循環變量,同時也是向74LS164發送的數據。
k是延時循環變量。
P3_0連接到74LS164的時鐘端CLK。
P3_1連接到74LS164的數據輸入A和B端。
程序中table[]是共陽數碼管的0~9數字的段碼編碼。
#include "AT89X51.h"
unsigned int code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共陽數碼管數據
該例采用查詢方式向74LS164送兩位串行數據(0 ~9數字),并顯示在74LS164上連接的共陽數碼管上。
該例中:
n是循環變量,同時也是向74LS164發送的數據。
k是延時循環變量。
P3_0連接到74LS164的時鐘端CLK。
P3_1連接到74LS164的數據輸入A和B端。
程序中table[]是共陽數碼管的0~9數字的段碼編碼。
#include "AT89X51.h"
unsigned int code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共陽數碼管數據
//此例出自51hei單片機http://www.zg4o1577.cn
void main ()
{unsigned int n,k;
SCON=0; //設置串行口,工作在方式0
EA=0; //禁止中斷,采用查詢方式發送,
while(1)
{for(n=0;n<2;n++) //發送兩位數據
{
TI=0; //清發送完畢標志位
SBUF=table[n]; //發送n的七段譯碼
while(!TI); //等待發送完畢
for(k=0;k<20000;k++); //延時后再次發送下一個數
}
for(k=0;k<50000;k++); //延時后,下一次發送
}}
void main ()
{unsigned int n,k;
SCON=0; //設置串行口,工作在方式0
EA=0; //禁止中斷,采用查詢方式發送,
while(1)
{for(n=0;n<2;n++) //發送兩位數據
{
TI=0; //清發送完畢標志位
SBUF=table[n]; //發送n的七段譯碼
while(!TI); //等待發送完畢
for(k=0;k<20000;k++); //延時后再次發送下一個數
}
for(k=0;k<50000;k++); //延時后,下一次發送
}}