单片机C语言简单编程文档格式.docx

上传人:b****5 文档编号:20901181 上传时间:2023-01-26 格式:DOCX 页数:19 大小:17.99KB
下载 相关 举报
单片机C语言简单编程文档格式.docx_第1页
第1页 / 共19页
单片机C语言简单编程文档格式.docx_第2页
第2页 / 共19页
单片机C语言简单编程文档格式.docx_第3页
第3页 / 共19页
单片机C语言简单编程文档格式.docx_第4页
第4页 / 共19页
单片机C语言简单编程文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机C语言简单编程文档格式.docx

《单片机C语言简单编程文档格式.docx》由会员分享,可在线阅读,更多相关《单片机C语言简单编程文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

单片机C语言简单编程文档格式.docx

{

for(i=0;

i<

10;

i++)

{

P1=b[i];

P2=a[i];

Delay();

}

}

3、开关K1控制加,开关K2控制减,开关K3控制复位。

当减到小于0的时候再从99开始减,当加到99的时候又从0开始加。

sbitBIT1=P3^0;

sbitBIT2=P3^1;

sbitButton1=P3^7;

sbitButton2=P3^6;

sbitButton3=P3^5;

unsignedchara[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voidDelay(unsignedintt)

unsignedinti,j;

for(i=0;

t;

i++)

for(j=0;

j<

252;

j++)

{;

}//时间延迟函数的定义

chardat=0;

//有符号数

//跑马灯显示的段码

unsignedcharz;

while

(1)

for(z=0;

z<

z++)

BIT1=0;

BIT2=1;

P2=a[dat/10];

Delay(20);

P2=0xff;

//消隐,防止个位的数在十位显示,导致显示乱码

BIT1=1;

BIT2=0;

P2=a[dat%10];

//消隐

P1=b[z];

Delay(20);

//跑马灯显示

if(Button1==0)

{

dat++;

if(dat>

=99)

dat=0;

while(Button1==0);

}//按键1是控制加的,当加到大于等于99时又从0开始加

if(Button2==0)

dat--;

if(dat<

=0)

dat=99;

while(Button2==0);

}//按键2是控制减的,当减到小于等于0时再从99开始减

if(Button3==0)

dat=0;

while(Button3==0);

}

}//按键3是控制复位的,任何时候按下就归0

4、开始1、2、3、4闪烁,按一下K1,5、6、7、8闪烁,再按一下K1全部闪烁。

(课堂作业)

sbitK1=P3^0;

unsignedcharstate=0;

for(j=0;

{;

if(state==0)

P1=0xf0;

P1=0xff;

elseif(state==1)

P1=0x0f;

elseif(state==2)

P1=0x00;

if(K1==0)

state++;

if(state>

=3)

state=0;

while(K1==0);

5、先是1、2、3、4灯闪8下,再5、6、7、8灯闪8下。

循环闪烁。

(实验一2)

j=50000;

while(j--);

chari=0;

16;

if(i<

8)

P2=0Xf0;

Delay();

P2=0xff;

}

elseif(i<

16)

P2=0X0f;

6、逐个点亮8个发光二极管(第一次亮一个。

最后全亮,然后再重新开始)(实验一1)

}//时间按延时函数

inta[8]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};

8;

P2=a[i];

Delay();

7、用中断函数控制加减用数码管显示数字。

八盏发光二极管可以根据加减控制左右移。

intrins.h>

unsignedchara[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};

unsignedcharx=0xfe;

ss=0;

IT0=1;

EX0=1;

IT1=1;

EX1=1;

EA=1;

P1=x;

P2=a[ss];

if(ss>

9)

ss=0;

if(ss<

0)

ss=9;

voiddat1()interrupt0

ss++;

x=_crol_(x,1);

voiddat2()interrupt2

ss--;

x=_cror_(x,1);

8、按开关K1点亮1、2、3、4,松手灭,开关K2点亮5、6、7、8,松手灭。

SbitK1=P3^0;

SbitK2=P3^1;

Voidmain()

Whlie

(1)

If(K1==0)

P1=0xf0;

Elseif(K2==0)

P1=0x0f;

Else

P1=0xff;

9、点亮一盏灯,并使其闪烁。

SbitLED1=P1^0;

VoidDelay()

Unsignedintj;

j=50000;

whlie(j--);

LED1=0;

Delay();

LED1=1;

10、先点亮1、3、5、7灯,熄灭,再点亮2、4、6、8灯。

inta[2]={0xaa,0x55};

2;

P1=a[i];

Delay(100);

11、要求使用8个按键K1~K8,当按下按键时,用数码管显示出相应按键值(K1—1,K2—2,。

)放开时显示0。

(实验二)

sbitK2=P3^1;

sbitK3=P3^2;

sbitK4=P3^3;

sbitK5=P3^4;

sbitK6=P3^5;

sbitK7=P3^6;

sbitK8=P3^7;

if(K1==0)

P2=0xf9;

elseif(K2==0)

P2=0xa4;

elseif(K3==0)

P2=0xb0;

elseif(K4==0)

P2=0x99;

elseif(K5==0)

P2=0x92;

elseif(K6==0)

P2=0x82;

elseif(K7==0)

P2=0xf8;

elseif(K8==0)

P2=0x80;

else

P2=0xc0;

12、用中断程序K3、K4分别控制加减及发光二极管左右移动。

(实验三)实际操作

voiddelay(unsignedintt)

}//用时间延迟函数消抖

P0=x;

delay(10);

if(K3==0)

if(K4==0)

13、8051单片机主振为12MHZ,在P1^5引脚上接一个发光二极管和蜂鸣器,如用T0定时,每1S控制该灯亮一次,一直循环下去。

(实验四,用方式1,1s=10^3ms)

sbittest=P1^5;

unsignedchari=0;

TMOD=0x01;

TH0=15536/256;

TL0=15536%256;

TR0=1;

ET0=1;

while

(1);

voidsb()interrupt1

i++;

if(i>

19)

test=~test;

i=0;

14、制作一个9秒钟倒计时装置,时间由一位数码管显示,并要求使用一个按键控制倒计时的开始,当时间到0时,停止计时,并驱动蜂鸣器发声。

(实验五)

sbitK=P3^1;

ss=9;

P2=a[ss];

if(K==0)

TR0=1;

}

}

voidjk()interrupt1

{

{

i=0;

if(ss==0)

TR0=0;

test=~test;

15、用串口中断函数设计出显示自己姓名首写字母和学号,11.5200MZ、9200b/s,工作在方式1下。

voidSend(unsignedchardat)

SBUF=dat;

//发送

while(!

TI);

//等待发送完毕TI=1

TI=0;

}//发送函数

256;

}//时间延迟函数

voidUART_Init()

SCON=0x50;

//01010000串口工作在方式一

TMOD=0X20;

//00100000定时器工作在方式二

TH1=0xfd;

//初始值设定

TL1=0xfd;

//备用初始值

TR1=1;

ES=1;

//串口中断允许

}//程序初始函数

UART_Init();

//调用程序初始函数

Send('

Y'

);

J'

'

2'

//Send(0x32);

0'

//Send(0x30);

8'

//Send(0x38);

3'

//Send(0x33);

5'

//Send(0x35);

4'

//Send(0x34);

Delay(300);

}//主函数

16、利用定时器T1,在方式1的工作条件下,定时40ms,P1^0口输出的周期是80ms,晶振频率为6MHz。

sbittest=P1^0;

TMOD=0x10;

TH1=0xb1;

TL1=0xe0;

ET1=1;

EA=1;

voidsb()interrupt3

TH1=0xb1;

test=~test;

17、T0方式一定时30msT=90ms高电平30ms低电平60ms晶振频率为12MHz。

sbitTest=P1^0;

unsignedcharflag=1;

TH0=0xba;

TL0=0xd0;

voiddat()interrupt1

if(flag)

Test=0;

TH1=0x15;

TL1=0x0a;

flag=1;

Test=1;

flag=0;

18、利用定时器T1,工作方式1,从计数器端口输出100个脉冲之后,溢出产生中断并在中断后停止计数。

TMOD=0x510;

TH1=65536/256;

TL1=65536%256;

P1=0x00;

TR1=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1