单片机.docx
《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(11页珍藏版)》请在冰豆网上搜索。
单片机
1、164实现静态锁存式LED显示
#include
unsignedcharxianshi[8];
unsignedcharleddata[]={
0xC0,//"0"
0xF9,//"1"
0xA4,//"2"
0xB0,//"3"
0x99,//"4"
0x92,//"5"
0x82,//"6"
0xF8,//"7"
0x80,//"8"
0x90,//"9"
};
voiddisplay()
{
unsignedchari;
for(i=0;i<8;i++)
{
SBUF=xianshi[i];
while(TI==0);
TI=0;
}
}
voidmain()
{
SCON=0x00;
xianshi[7]=leddata[2];
xianshi[6]=leddata[0];
xianshi[5]=leddata[1];//如果是共阴极,应该是+
xianshi[4]=leddata[1]&0x7f;
xianshi[3]=leddata[1];
xianshi[2]=leddata[0]&0x7f;
xianshi[1]=leddata[0];
xianshi[0]=leddata[1];
display();
while
(1);
}
2、改进的动态扫描
#include
unsignedcharpos;
unsignedcharxianshi[8];//待显示值
unsignedcharleddata[]=
{
0xC0,//"0"
0xF9,//"1"
0xA4,//"2"
0xB0,//"3"
0x99,//"4"
0x92,//"5"
0x82,//"6"
0xF8,//"7"
0x80,//"8"
0x90,//"9"
};
unsignedcharposdata[]=//数码管刷新顺序显示内容2011.10.01,改变数组值可将显示内容移位
{
0x01,//0x02
0x02,//0x01
0x04,
0x08,
0x10,
0x20,
0x40,
0x80
};
voidtimer0()interrupt1
{
TL0=0x18;
TH0=0xfc;
if(pos==8)
{
pos=0;
}
P2=posdata[pos];
P0=xianshi[pos];
pos++;
}
voidmain()
{
pos=0;
TMOD=0x01;//16位
TL0=0x18;//1MS
TH0=0xfc;
ET0=1;
TR0=1;
EA=1;
xianshi[0]=leddata[2];
xianshi[1]=leddata[0];
xianshi[2]=leddata[1];
xianshi[3]=leddata[1]&0x7f;//如果是共阴极,应该是+
xianshi[4]=leddata[1];
xianshi[5]=leddata[0]&0x7f;
xianshi[6]=leddata[0];
xianshi[7]=leddata[1];
while
(1);
}
3、0809地址访问\0809正确方式
#include
sbitEOC=P3^2;
voidmain()
{
unsignedcharxdata*p;
while
(1)
{
//p=0x0007;//通道0
//p=0x0001;
//p=0x0007;
p=0x0000;
*p=0x00;//启动AD转换
while(EOC==0);//等待转换结束
P1=*p;
}
}
4、0809地址访问\地址驱动中断方式1
#include
sbitEOC=P3^2;
unsignedcharxdata*p;
voidint0()interrupt0
{
P1=*p;
}
voidmain()
{
IT0=1;
EX0=1;
EA=1;
while
(1)
{
p=0x0000;//通道0
*p=0x00;//启动AD转换
}
}
5、0809地址访问\地址驱动中断方式2
#include
sbitEOC=P3^2;
unsignedcharxdata*p;
voidint0()interrupt0
{
P1=*p;
}
voiddelay()
{
unsignedchari,j,k;
for(i=0;i<14;i++)
{
for(j=0;j<1;j++);
}
}
voidmain()
{
IT0=1;
EX0=1;
EA=1;
while
(1)
{
p=0x0000;//通道0
*p=0x00;//启动AD转换
delay();
}
}
6、0809地址访问\基本
#include
sbitEOC=P3^2;
voidmain()
{
unsignedcharxdata*p;
SCON=0x00;
while
(1)
{
p=0x0007;//通道0
//p=0x0001;
*p=0x00;//启动AD转换
while(EOC==0);//等待转换结束
P1=*p;
}
}
7、DAC0832地址访问
#include
//sbitP21=P2^1;
voiddelay()
{
unsignedchari,j,k;
for(i=0;i<255;i++)
{
for(j=0;j<10;j++)
{
for(k=0;k<0;k++);
}
}
}
voidmain()
{
unsignedcharxdata*p;
unsignedchari;
while
(1)
{
//p=0x0000;//开二次缓冲
p=0x0200;//关二次缓冲
for(i=0;i<255;i++)
{
*p=i;
delay();
}
*p=255;
delay();
}
}
8、\DAC0832地址访问
(2)
#include
//sbitP21=P2^1;
voiddelay()
{
unsignedchari,j,k;
for(i=0;i<255;i++)
{
for(j=0;j<10;j++)
{
for(k=0;k<0;k++);
}
}
}
voidmain()
{
unsignedcharxdata*p;
unsignedchari;
while
(1)
{
p=0x0001;
//p=0x0200;
for(i=0;i<255;i++)
{
*p=i;
delay();
}
*p=255;
delay();
}
}