单片机例子43个,配套开发板(2)

2019-04-10 09:49

break;

case 0xdb: key=9; break;

case 0xbb: key=10; break;

case 0x7b: key=11; break; }

while(temp!=0xf0) {

temp=P3;

temp=temp&0xf0; beep=0; }

beep=1; display(key); } }

P3=0xf7; temp=P3;

temp=temp&0xf0; if(temp!=0xf0) {

delay(10); if(temp!=0xf0) {

temp=P3; switch(temp) {

case 0xe7: key=12; break;

case 0xd7: key=13; break;

case 0xb7: key=14; break;

case 0x77: key=15; break; }

while(temp!=0xf0) {

temp=P3;

temp=temp&0xf0; beep=0; }

beep=1; display(key); } } } }

16. 通过键盘采集所按下的数据,并在按下确定键(S17)后,将按下的键组合为一整数。 按键功能S6--S15 数字键0—9,S17 确定输入 #include

#define uchar unsigned char

sbit dula=P2^6; sbit wela=P2^7; sbit beep=P2^3;

uchar a=16,b=16,c=16,d=16,e=16,f=16; uchar wei,temp,key,ok; uchar s1,s2,s3,s4,s5,s6; unsigned long shu;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

void delay(uchar i) { uchar j,k; for(j=i;j>0;j--) for(k=125;k>0;k--); }

void keyscan()

{

P3=0xfe; temp=P3;

temp=temp&0xf0; if(temp!=0xf0) {

delay(10); if(temp!=0xf0) {

temp=P3; {

temp=P3; switch(temp) {

case 0xed: key=4; wei++; break;

case 0xdd: switch(temp) {

case 0xee: key=0;

wei++; break;

case 0xde: key=1;

wei++; break;

case 0xbe: key=2; wei++; break;

case 0x7e: key=3; wei++; break; }

while(temp!=0xf0) {

temp=P3;

temp=temp&0xf0; beep=0; }

beep=1; } }

P3=0xfd; temp=P3;

temp=temp&0xf0; if(temp!=0xf0) {

delay(10); if(temp!=0xf0) key=5; wei++; break; case 0xbd: key=6; wei++; break; case 0x7d: key=7; wei++; break; }

while(temp!=0xf0) {

temp=P3;

temp=temp&0xf0; beep=0; }

beep=1; } }

P3=0xfb; temp=P3;

temp=temp&0xf0; if(temp!=0xf0) {

delay(10); if(temp!=0xf0) {

temp=P3; switch(temp) {

case 0xeb: key=8; wei++; break;

case 0xdb: key=9; wei++; break; case 0x7b: ok=1; //key=11; //wei++; break; }

while(temp!=0xf0) {

temp=P3;

temp=temp&0xf0; beep=0; }

beep=1; } } }

void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) {

dula=0; P0=table[a]; dula=1; dula=0;

wela=0; P0=0xfe; wela=1; wela=0; delay(5);

P0=table[b]; dula=1; dula=0;

P0=0xfd; wela=1; wela=0; delay(5);

P0=table[c]; dula=1; dula=0;

P0=0xfb; wela=1; wela=0; delay(5);

P0=table[d]; dula=1; dula=0;

P0=0xf7; wela=1; wela=0; delay(5);

P0=table[e]; dula=1; dula=0;

P0=0xef; wela=1; wela=0; delay(5);

P0=table[f]; dula=1; dula=0;

P0=0xdf; wela=1; wela=0; delay(5); }

void main() { while(1) { keyscan(); if(wei!=0) //实时显示 { switch(wei) { case 1: a=key;s1=a; break; case 2: b=key;s2=b; break; case 3: c=key;s3=c; break;

case 4: d=key;s4=d; break; case 5: e=key;s5=e; break; case 6: f=key;s6=f; break; } } if(ok) //将采集到的单个数据转化为一个整数。 { ok=0; switch(wei) { case 1: shu=s1; break; case 2: shu=s2+s1*10; break; case 3: shu=s3+s2*10+s1*100; break; case 4: shu=s4+s3*10+s2*100+s1*1000; break; case 5: shu=s5+s4*10+s3*100+s2*1000+s1*10000; break; case 6: shu=s6+s5*10+s4*100+s3*1000+s2*10000+s1*100000; break; } wei=0; // f=16;e=16;d=16;c=16;b=16;a=16; s1=0;s2=0;s3=0;s4=0;s5=0;s6=0; } display(a,b,c,d,e,f); } }

17. 第一个数码管静态的显示数字3 #include

sbit dula=P2^6; //段选信号的锁存器控制 sbit wela=P2^7; //位选信号的锁存器控制

void main() { dula=0; wela=0; P0=0x4f; //数字“3”的代码 dula=1; dula=0; P0=0xfe; //选中第一个数码管 wela=1; wela=0;

while(1); }

18六个数码管流动地显示数字3 #include

sbit dula=P2^6; //段选信号的锁存器控制 sbit wela=P2^7; //位选信号的锁存器控制

unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //数码管各位的码表 void delay(unsigned int count) { unsigned int i,j; for(i=0;i

void main() { unsigned char num; while(1) { for(num=0;num<6;num++) { P0=table[num]; wela=1; wela=0; P0=0x4f; //数字“3”的代码 dula=1; dula=0; delay(2); } } }

19. 学习板的第一个数码管动态地显示数字0到F #include

sbit dula=P2^6; //段选信号的锁存器控制 sbit wela=P2^7; //位选信号的锁存器控制

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0-F的码表 void delay(unsigned int i) { unsigned int m,n; for(m=i;m>0;m--) for(n=90;n>0;n--); }

void main() for(k=125;k>0;k--);

}

void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) {

dula=0; P0=table[a]; dula=1; dula=0; { unsigned char num; while(1) { for(num=0;num<16;num++) { P0=table[num]; dula=1; dula=0; P0=0xfe; //选中第一个数码管 wela=1; wela=0; delay(1000); } }

}

20. 六位数码管显示任意一个百万以下的整数。程 序中的变量num就是被显示的整数(原程序中 num=87530) #include

#define uchar unsigned char unsigned long num; uchar j,k;

uchar a0,b0,c0,d0,e0,f0; sbit dula=P2^6; sbit wela=P2^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00 };

void delay(uchar i) { for(j=i;j>0;j--)

wela=0; P0=0xfe; wela=1; wela=0; delay(5);

P0=table[b]; dula=1; dula=0;

P0=0xfd; wela=1; wela=0; delay(5); P0=table[c]; dula=1; dula=0;

P0=0xfb; wela=1; wela=0; delay(5);

P0=table[d]; dula=1; dula=0;

P0=0xf7; wela=1; wela=0; delay(5);

P0=table[e]; dula=1; dula=0;


单片机例子43个,配套开发板(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:1、竣工文件编制范本

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: