单片机简单程序.docx
- 文档编号:11117448
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:25
- 大小:16.82KB
单片机简单程序.docx
《单片机简单程序.docx》由会员分享,可在线阅读,更多相关《单片机简单程序.docx(25页珍藏版)》请在冰点文库上搜索。
单片机简单程序
*************************
数码管动态显示
*************************
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdula=P3^7;
ucharcodetable1[]={0,1,2,3,4,5,6,7};
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelay(uintz);
voidmain()
{
uchari=0;
ucharnum=0;
while
(1)
{
P0=table[num];
P2=table1[i];
delay
(2);
num++;
i++;
if(i==8)
{
num=0;i=0;
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
****************************************
数码管静态显示
****************************************
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdula=P3^7;
sbitwela=P2;
voiddelay(uintz);
voidmain()
{
wela=1;
P2=0xf8;
wela=0;
dula=1;
P0=0x71;
dula=0;
while
(1);
}
voiddelay(uintz)
{
uintx,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
*****************************************
流水灯
*****************************************
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
uchara;
uinti,j;
voiddelay(uint);
voidmain()
{
a=0xfe;
P0=a;
while
(1)
{
a=_crol_(a,1);
delay(600);
P0=a;
delay(600);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=10;x>0;x--)
for(y=z;y>0;y--);
}
****************************************
跑马灯
****************************************
#include
#defineLEDP0
voiddelay()
{
unsignedinti;
for(i=0;i<10000;i++);
}
voidmain()
{
unsignedchari,k;
for(;;)
{
k=0xfe;
for(i=0;i<8;i++)
{
LED=k;
delay();
k=k<<1;
}
}
}
********************************
#include
#defineuintunsignedint
#defineucharunsignedchar
#definewelaP2
sbitdula=P3^7;
sbitled=P0^0;
ucharcodetable1[]={0,1,2,3,4,5,6,7};
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voidmain()
{
wela=1;
P2=0xff;
wela=1;
dula=1;
P0=0x71;
dula=0;
while
(1);
/*uchari,num;
while
(1)
{
wela=table1[i];
for(i=0;i<8;i++)
{
dula=1;
P0=table[num];
dula=0;
num++;
}
i++;
}*/
}
************************************
中断
*************************************
#include
#defineuintunsignedint
#defineucharunsignedchar
#definewelaP2
sbitdula=P3^7;
sbitled=P1^2;
uchari,num;
ucharcodetable1[]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8};
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelay(uint);
voidmain()
{
EA=1;
EX0=1;
IT0=1;
while
(1)
{
wela=table1[i];
dula=1;
P0=table[num];
delay(6000);
dula=0;
num++;
i++;
if(i==8)
{
i=0;
}
if(num==16)
{
num=0;
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=10;x>0;x--)
for(y=z;y>0;y--);
}
voidexter0()interrupt0
{
led=0;
}
**********************************
定时器
*********************************
#include
#defineuintunsignedint
#defineucharunsignedchar
#definewelaP2
sbitdula=P3^7;
sbitled=P1^2;
uchari,num,tt;
ucharcodetable1[]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8};
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelay(uint);
voidmain()
{
tt=0;
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;//开定时器0中断
TR0=1;
while
(1)
{
if(tt==4)
{
tt=0;
wela=table1[i];
dula=1;
P0=table[num];
dula=0;
num++;
i++;
}
if(i==8)
{
i=0;
}
if(num==16)
{
num=0;
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=10;x>0;x--)
for(y=z;y>0;y--);
}
voidexter0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
**************************************
矩阵键盘
****************************************
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdula=P3^7;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
ucharnum,temp,num1;
ucharkeyscan();
voiddelay(uintz)
{
uintx,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
voidmain()
{
num=17;
P2=0xff;
dula=1;
P0=0;
dula=0;
P0=0xff;
while
(1)
{
num1=keyscan();
dula=1;
P0=table[num1-1];
dula=0;
}
}
ucharkeyscan()
{
P1=0xfe;
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
switch(temp)
{
case0xe0:
num=1;break;
case0xd0:
num=2;break;
case0xb0:
num=3;break;
case0x70:
num=4;break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfd;
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
switch(temp)
{
case0xe0:
num=5;break;
case0xd0:
num=6;break;
case0xb0:
num=7;break;
case0x70:
num=8;break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfb;
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
switch(temp)
{
case0xe0:
num=9;break;
case0xd0:
num=10;break;
case0xb0:
num=11;break;
case0x70:
num=12;break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xf7;
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
switch(temp)
{
case0xe0:
num=13;break;
case0xd0:
num=14;break;
case0xb0:
num=15;break;
case0x70:
num=16;break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
returnnum;
}
************************************
串行通信
***************************************
#include
unsignedcharflag,a;
voidmain()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while
(1)
{
/*if(RI==1)
{
RI=0;
P0=SBUF;
}*/
if(flag==1)
{
ES=0;
flag=0;
SBUF=a;
while(!
TI);
TI=0;
ES=1;
}
}
}
voidser()interrupt4
{
RI=0;
P0=SBUF;
a=SBUF;
flag=1;
}
************************************
E2p
************************************
#include
#defineucharunsignedchar
sbitsda=P3^6;
sbitscl=P1^5;
uchara;
voiddelay()
{;;}
voiddelay1(ucharx)
{
uchara,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
voidstart()//开始信号
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
voidstop()//停止信号
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
voidrespons()//应答信号
{
chari;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
}
voidinit()
{
sda=1;
scl=1;
}
voidwrite_byte(uchardate)
{
uchari,temp;
temp=date;
scl=0;
delay();
for(i=0;i<8;i++)
{
temp=temp<<1;
sda=CY;
delay();
scl=1;
delay();
scl=0;
delay();
}
sda=1;
delay();
}
ucharread_byte()
{
uchari,j,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
j=sda;
k=(k<<1)|j;
scl=0;
delay();
}
returnk;
}
voidwrite_add(ucharaddress,uchardate)
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
ucharread_add(ucharaddress)
{
uchardate;
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
returndate;
}
voidmain()
{
init();
write_add(23,0xaa);
delay1(100);
P0=read_add(23);
while
(1);
}
**********************************
计数
***********************************
#include
#defineuintunsignedint
#defineucharunsignedchar
#definewelaP2
sbitdula=P3^7;
ucharge,shi,bai,num,temp,aa,numdu;
ucharcodetable1[]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8};
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelay(uint);
voiddisplay(ucharbai,ucharshi,ucharge);
voidinit();
voidmain()
{
init();//初始化子程序
while
(1)
{
if(aa==2)
{
aa=0;
temp++;
if(temp==100)
{
temp=0;
}
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
}
display(bai,shi,ge);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
voiddisplay(ucharbai,ucharshi,ucharge)
{
P2=0xff;
dula=1;
P0=table[ge];
dula=0;
delay(3);
P2=0xfe;
dula=1;
P0=table[shi];
dula=0;
delay(3);
P2=0xfd;
dula=1;
P0=table[bai];
dula=0;
delay(3);
}
voidinit()
{
temp=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
voidtimer0()interrupt1
{
aa++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 简单 程序