《单片机简单程序》由会员分享,可在线阅读,更多相关《单片机简单程序(16页珍藏版)》请在金锄头文库上搜索。
1、* 数码管动态显示 * #include #define uint unsigned int #define uchar unsigned char sbit dula=P37; uchar code table1=0,1,2,3,4,5,6,7; uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; void delay(uint z); void main() uchar i=0; uchar num=0; while(1) P0=table
2、num; P2=table1i; delay(2); num+; i+; if(i=8) num=0;i=0 ; void delay(uint z) uint x,y; for(x=100;x0;x-) for(y=z;y0;y-); * 数码管静态显示 * #include #define uint unsigned int #define uchar unsigned charsbit dula=P37; sbit wela=P2; void delay(uint z); void main() wela=1; P2=0xf8; wela=0; dula=1; P0=0x71; dula
3、=0; while(1); void delay(uint z) uint x,y; for(x=100;x0;x-) for(y=z;y0;y-); * 流水灯 * #include #include #define uint unsigned int #define uchar unsigned char uchar a; uint i,j; void delay(uint); void main() a=0xfe; P0=a; while(1) a=_crol_(a,1); delay(600); P0=a; delay(600); void delay(uint z) uint x,y
4、; for(x=10;x0;x-) for(y=z;y0;y-); * 跑马灯 *#include #define LED P0 void delay() unsigned int i; for(i=0;i #define uint unsigned int #define uchar unsigned char #define wela P2 sbit dula=P37; sbit led=P00; uchar code table1=0,1,2,3,4,5,6,7; uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x
5、7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void main() wela=1; P2=0xff; wela=1; dula=1; P0=0x71; dula=0; while(1); /*uchar i,num; while(1) wela=table1i; for(i=0;i #define uint unsigned int #define uchar unsigned char #define wela P2 sbit dula=P37; sbit led=P12; uchar i,num; uchar code table1=0xff,0xfe,0
6、xfd,0xfc,0xfb,0xfa,0xf9,0xf8; uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; void delay(uint); void main() EA=1; EX0=1; IT0=1; while(1) wela=table1i; dula=1; P0=tablenum; delay(6000); dula=0; num+; i+; if(i=8) i=0; if(num=16) num=0; void delay(u
7、int z) uint x,y; for(x=10;x0;x-) for(y=z;y0;y-); void exter0() interrupt 0 led=0; * 定时器 * #include #define uint unsigned int #define uchar unsigned char #define wela P2sbit dula=P37; sbit led=P12; uchar i,num,tt; uchar code table1=0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8; uchar code table= 0x3f,0x06,
8、0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; void delay(uint); void main() 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=table1i; dula=1; P0=tablenum; dula=0; num+; i+; if(i=8) i=0;
9、 if(num=16) num=0; void delay(uint z) uint x,y; for(x=10;x0;x-) for(y=z;y0;y-); void exter0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt+; * 矩阵键盘 * #include #define uint unsigned int #define uchar unsigned char sbit dula=P37; uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x
10、07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0; uchar num,temp,num1; uchar keyscan(); void delay(uint z) uint x,y; for(x=100;x0;x-) for(y=z;y0;y-); void main() num=17; P2=0xff; dula=1; P0=0; dula=0; P0=0xff;while(1) num1=keyscan(); dula=1; P0=tablenum1-1; dula=0; uchar keyscan() P1=0xfe; temp=P1; te
11、mp=temp while(temp!=0xf0) delay(5); temp=P1; temp=temp while(temp!=0xf0) switch(temp) case 0xe0:num=1;break; case 0xd0:num=2;break; case 0xb0:num=3;break; case 0x70:num=4;break; while(temp!=0xf0) temp=P1; temp=temp P1=0xfd; temp=P1; temp=temp while(temp!=0xf0) delay(5);temp=P1; temp=temp while(temp!
12、=0xf0) switch(temp) case 0xe0:num=5;break; case 0xd0:num=6;break; case 0xb0:num=7;break; case 0x70:num=8;break; while(temp!=0xf0) temp=P1; temp=temp P1=0xfb; temp=P1; temp=temp while(temp!=0xf0) delay(5); temp=P1; temp=temp while(temp!=0xf0) switch(temp) case 0xe0:num=9;break; case 0xd0:num=10;break
13、; case 0xb0:num=11;break; case 0x70:num=12;break; while(temp!=0xf0) temp=P1; temp=temp P1=0xf7; temp=P1; temp=temp while(temp!=0xf0) delay(5); temp=P1; temp=temp while(temp!=0xf0) switch(temp) case 0xe0:num=13;break; case 0xd0:num=14;break; case 0xb0:num=15;break; case 0x70:num=16;break; while(temp!
14、=0xf0) temp=P1; temp=temp return num; * 串行通信 * #include unsigned char flag,a; void main() 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; void ser() interrupt 4 RI=0; P0=SBUF; a=SBUF; fla