51单片机基本程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1第一位隔一秒闪烁一次

#include<>

#define uint unsigned int

sbit led1=P1^0;

uint i;

uint j;

void main()

{

while(1)

{

%

led1=0;

for(i=1000;i>0;i--)

for(j=110;j>0;j--);

led1=1;

for(i=1000;i>0;i--)

for(j=110;j>0;j--);

}

}

2复杂广告灯

#include<>

#define uint unsigned int

#define uchar unsigned char

uchar discode[]={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,sbit k2=P3^5; sbit k3=P3^6;

sbit k4=P3^7;

sbit d=P1^2;

sbit c=P1^3;

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

void delayms(uint);

uchar numt0,num;

void display(uchar numdis) //显示59s的常用方式

!

{ uchar shi,ge;

shi=numdis/10;

ge=numdis%10;

P1=0xff; //控制十位数字

P1=0xfd;

P0=table[shi];

delayms(10);

P1=0x00;

P1=0xff; //控制个位数字

P1=0xfe;

P0=table[ge];

delayms(10);

P1=0x00;

}

void delayms(uint xms) //简单的延时程序/

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void init() //初始化函数

{

TMOD=0x01;

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

EA=1;

ET0=1;

}

void keyscan() //控制键盘的程序{

if(k1==0)

{

delayms(10); //去抖动延时

\

if(k1==0)

{

num++;

if(num==60)

num=0;

while(!k1); //等待按键释放}

}

\

if(k2==0)

{

delayms(10);

if(k2==0)

{

if(num==0)

num=60;

num--;

while(!k2);

]

}

}

if(k3==0)

{

delayms(10);

if(k3==0)

{

num=0;

~

while(!k3);

}

}

if(k4==0)

{

delayms(10);

if(k4==0)

{

while(!k4);

TR0=~TR0;

}

}

}

void main() //主函数

{

init(); //1,先初始化数据init()

while(1)

{

keyscan(); //键盘选择

display(num); //显示两位数字函数

}

}

void T0_time()interrupt 1 //中断服务程序{

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

numt0++;

if(numt0==20) //1s的判断

{

numt0=0;

num++;

if(num==60)

num=0;

}

}

-

矩阵键盘使用

#include<>

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

>

0xc6,0xa1,0x86,0x8e};

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void display(uchar num)

{

P0=table[num];

·

P1=0xf0;

}

void jianpan()

{

uchar temp,key;

P3=0xfe;

temp=P3;

temp=temp&0xf0;

if(temp!=0xfe) //11111高位没有零,(没有键按下){

delayms(10);

temp=P3; //随时可能有键按下

temp=temp&0xf0;

if(temp!=0xfe)

{

temp=P3;

switch(temp)

{

case 0xee:

key=0;

|

break;

case 0xde:

key=1;

break;

case 0xbe:

key=2;

break;

case 0x7e:

key=3;

break;

相关文档
最新文档