1. 首页 > 科技

51单片机C语言编程,急! 51单片机c语言程序100例

51单片机C语言编程,急!51单片机c语言程序100例

51单片机 C语言编程

原发布者:風闲雅

1、点亮2、3、5、8四个发光二极管。(课后作业)#includesbitLED2=P1^0;sbitLED3=P1^3;sbitLED5=P1^5;sbitLED8=P1^6;main(){LED2=0;//第二盏灯亮LED3=0;//第三盏灯亮LED5=0;//第五盏灯亮LED8=0;//第八盏灯亮while(1);}2、设计走马灯和数码管逐一显示数字。(课后作业)#includevoidDelay(){unsignedintj;j=30000;while(j--);}//时间延时函数voidmain(){inta[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示段码intb[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xaa,0x55};//点亮灯的段码unsignedchari;while(1){for(i=0;i<10;i++){P1=b[i];P2=a[i];Delay();}}}3、开关K1控制加,开关K2控制减,开关K3控制复位。当减到小于0的时候再从99开始减,当加到99的时候又从0开始加。(课后作业)#includesbitBIT1=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;i<t;i++)for(j=0;j<252;j++){;}}//时间延迟函数的定义voidmain(){chardat=0;

51单片机C语言程序

//你原来的b2,b2都是死循环,这是不行的,只有主函数才可以死循环。

//你的主函数结构也有问题。

//为你增加了一个按键检测的函数。

//下列程序通过了实验测试。

//b1输出的周期大约0.9s。

//b2输出的周期大约0.6s。

//K为触动开关,reg为红灯,bice为绿灯,b1、b2 各为一个方波,

//按第一次触动开关时红灯亮、b1输出,

//按第二次绿灯亮、为b2输出,

//按第三次都关闭.

#include <reg51.h>

#define uint unsigned int

#define uchar unsigned char

uint a;

void b1();

void b2();

sbit t = P1^0;

sbit k = P3^5;

sbit reg = P3^3;

sbit bice = P3^2;

void delay(uchar z)

{

uint x,y;

for(x = z; x > 0; x--) for(y = 110; y > 0; y--);

}

bit key()

{

bit kkk;

kkk = k;

//读入按键.

if(kkk == 1) return 0;//没有按下.

delay(5);

//延时.

if(k == kkk) return 1;//两次相等.

return 0;

}

void main()

{

while(1) {

P3 = 0xff;

while(!key());

//静等按下第一次.

reg = 0;

bice = 1;

while(!key()) b1(); //没有按下第二次就循环等待.

reg = 1;

bice = 0;

while(!key()) b2(); //没有按下第三次就循环等待.

}

}

void b1()

{

P1 = 0xfe; a = 50000; while(a--);

P1 = 0xff; a = 50000; while(a--);

}

void b2()

{

P1 = 0xfe; a = 30000; while(a--);

P1 = 0xff; a = 30000; while(a--);

}

求51单片机程序。(C语言)

//Keil 51调试,Protues 7 仿真通过
//为了方便,使用的是P0,P1,P2口

#include <at89x51.h>

unsigned char buf[3];

union t
{
unsigned int it;
unsigned char ct[2];
}time;

unsigned char count = 0;

void Dlay()
{
unsigned char i = 0xff;
while (i--);
}

void Display()
{
P0 = buf[0];
Dlay();
P1 = buf[1];
Dlay();
P2 = buf[2];
Dlay();
}

void main()
{
IE = 0x82;
TMOD = 0x01;
time.it = -50000; //12M晶振,这是50ms
TH0 = time.ct[0];
TL0 = time.ct[1];
TR0 = 1;

while (1)
{
Display();
}
}

void AddOneSecond()
{
buf[0]++;
if (60 == buf[0])
{
buf[1]++;
if (60 == buf[1])
{
buf[2]++;
if (24 == buf[2])
{
buf[2] = 0;
}
}
}
}

void Timer0() interrupt 1
{
TH0 = time.ct[0];
TL0 = time.ct[1];

if (20 == count++)
{
count = 0;
AddOneSecond();
}

51单片机简单的C语言编程

请问为什么开头要定义unsignedchar类型呢,不是可以用unsignedint代替吗?? 在单片机中char类型的数据有什么作用呢?? 我想说的是,单片机不是通用PC机 虽然说现在的单片机内部的ram越来越大但是比起电脑里还是有限的, unsignedchar是可以用unsignedint代替,但是这样占用的字节数太多了。 字符型的1个字节长,而整型是2个字节长。 单片机的char型和c里面的不太一样, 因为你用的52是8位的单片机,而char型是8位,所以操作方便。 欢迎追问 不会,识别int型的低八位