新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 串口擴(kuò)展并口驅(qū)動數(shù)據(jù)管顯示

串口擴(kuò)展并口驅(qū)動數(shù)據(jù)管顯示

作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
A:利用串口工作方式0(同步移位寄存器方式)注意::將串行口工作方式設(shè)為方式0,將要顯示的數(shù)據(jù)寫入SBUF,單片機(jī)會自動啟動數(shù)據(jù)發(fā)送過程,將要發(fā)送的數(shù)據(jù)按從低位到高位的順序發(fā)送到Q7~Q0,先發(fā)送低位的,發(fā)送結(jié)束后,Q7中是發(fā)送的數(shù)據(jù)的最低位,Q0是發(fā)送的數(shù)據(jù)的最高位。

#include
#include
typedef unsigned char uchar;
void intx();
uchar code led_table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay(void) //誤差 0us
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}

本文引用地址:http://m.butianyuan.cn/article/201611/317455.htm

void main()
{

IT1=1;
EA=1;
EX1=1;
//ES=1;
SCON=0;
P1=0;
while(1);
}

void intx() interrupt 2
{
uchar i;
P1=0;
for(i=0;i<16;i++)
{

SBUF=led_table[i];
while(!TI);
TI=0;
delay();
}
}

》》》》》》》》》》》》》》位操作《〈〈〈〈〈〈〈〈〈〈〈〈〈〈〈

#include
#include
typedef unsigned char uchar;
void sendleddata(uchar);
uchar bdata dat;
sbit ab=P3^0;
sbit clk=P3^1;
sbit dat0=dat^0;
uchar code ledtable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay(void) //誤差 0us
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}

void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
sendleddata(i);
delay();
}
}
}

void sendleddata(uchar k)
{
uchar i;
dat=ledtable[k];
for(i=0;i<8;i++)
{
ab=dat0;
clk=0;
_nop_();
clk=1;
_nop_();
dat>>=1;
}
}



評論


技術(shù)專區(qū)

關(guān)閉