当前位置:首页 > 代码 > 正文

单片机实验代码(单片机实验代码c语言)

admin 发布:2022-12-19 15:42 126


本篇文章给大家谈谈单片机实验代码,以及单片机实验代码c语言对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

单片机大一19个实验代码?

实验一

实验(一):本程序的功能是点亮一个发光二极管

#includereg51.h

sbit led=P1^0;

void main()

{

led=0;

while(1);

}

实验(二):本程序的功能是点亮一个发光二极管

#includereg51.h

Void main()

{

P1=0xfe;

While(1)

;

}

实验(三):本程序的功能是点亮三个发光二极管

#include reg51.h

Sbit LED0=P1^0;

Sbit LED1=P1^1;

Sbit LED2=P1^2;

Void main()

{

LED0=0;

LED1=0;

LED2=0;

While(1);

}

实验(四):本程序的功能是点亮三个发光二极管

#include reg51.h

Void main()

{

P1=0xf8;

While(1)

;

}

实验二

实验(一):本程序的功能是使D0交替闪烁,频率始终一致

#includereg51.h

sbit LED0=P1^0;

void Delay(unsigned int t);

void main()

{

while(1)

{

LED0=0;

Delay(10000);

LED0=1;

Delay(10000);

}

}

void Delay(unsigned int t)

{

while(--t);

}

实验(二):本程序的功能是使D0交替闪烁,前10次的闪烁频率与后10次不同

#includereg51.h

sbit LED0=P1^0;

void Delay(unsigned int t);

void main()

{

Unsigned char i;

while(1)

{

For(i=0;i10;i++)

{

LED0=0;

Delay(10);

LED0=1;

Delay=(10);

}

For(i=0;i10;i++)

{

LED0=0;

Delay(6000);

LED0=1;

Delay(6000);

}

}

}

Void Delay(unsigned int t)

{

Unsigned i,j;

For(i=0;it;i++)

For(j=0;j1000;j++)

;

}

实验(三):本程序的功能是使D0、D2、D4交替闪烁,前10次的闪烁频率与后10次不同

#includereg51.h

sbit LED0=P1^0;

sbit LED2=P1^2;

sbit LED4=P1^4;

void Delay(unsigned int t);

void main()

{

Unsigned char i;

while(1)

{

For(i=0;i10;i++)

{

LED0=0;

LED2=0;

LED4=0;

Delay(100);

LED0=1;

LED2=1;

LED4=1;

Delay=(100);

}

For(i=0;i10;i++)

{

LED0=0;

LED2=0;

LED4=0;

Delay(1000);

LED0=1;

LED2=1;

LED4=1;

Delay(1000);

}

}

}

Void Delay(unsigned int t)

{

Unsigned i,j;

For(i=0;it;i++)

For(j=0;j1000;j++)

;

}

实验(四):本程序的功能是使D0、D2、D4交替闪烁,前10次的闪烁频率与后10次不同

#includereg51.h

void Delay(unsigned int t);

void main()

{

Unsigned char i;

while(1)

{

For(i=0;i10;i++)

{

P1=0xff;

Delay(100);

P1=0xea;

Delay=(100);

}

For(i=0;i10;i++)

{

P1=0xff;

Delay(1000);

P1=0xea;

Delay(1000);

}

}

}

Void Delay(unsigned int t)

{

Unsigned i,j;

For(i=0;it;i++)

For(j=0;j1000;j++)

;

}

实验三

实验(一):Proteus本程序的功能是使D0-D7从右至左依次被点亮

#includereg51.h

void Delay(unsigned int t);

void main()

{

unsigned char i;

Delay(50000);

P1=0xff;

for(i=0;i8;i++)

{

Delay(50000);

P1=1;

}

while(1)

;

}

void Delay(unsigned int t)

{

while(--t);

}

实验(二):本程序的功能是使D0-D7从左至右依次被点亮

#includereg51.h

void Delay(unsigned int t);

void main()

{

unsigned char i;

Delay(50000);

P1=0xff;

for(i=0;i8;i++)

{

Delay(50000);

P1=1;

}

while(1)

;

}

void Delay(unsigned int t)

{

while(--t);

}

实验四

实验(一):本程序的功能是使D0-D7从有至左被点亮,某时刻只有一个灯亮,最终D7在亮

#includereg51.h

#includeintrins.h

void delay(unsigned int t);

void main()

{

unsigned char i;

P1=0xfe;

delay(50000);

for(i=0;i7;i++)

{

P1=crol_(P1,1);

delay(50000);

}

while(1)

;

}

void delay(unsigned int t)

{

while(--t);

}

实验(二):本程序的功能是使D0-D7从有至左被点亮,某时刻只有一个灯亮,最终D0在亮

#includereg51.h

#includeintrins.h

void delay(unsigned int t);

void main()

{

unsigned char i;

P1=0x7f;

delay(50000);

for(i=0;i7;i++)

{

P1=_crol_(P1,1);

delay(50000);

}

while(1);

}

void delay(unsigned int t)

{

while(--t);

}

实验五

#includereg51.h

sbit K0=P1^0;

sbit K1=P1^1;

sbit LED0=P1^2;

sbit LED1=P1^3;

void main()

{

while(1)

{

if(K0==1)

LED0=1;

else

LED0=0;

if(K1==1)

LED1=1;

else

LED1=0;

}

}

实验六

(1)实验箱程序清单

#includereg51.h

sbit K0=P0^0;

sbit lemp=P1^0;

void main()

{

while(1)

{

if(K0==0)

lemp=0;

else

lemp=1;

}

}

2.Proteus 仿真程序清党

#includereg51.h

sbit K0=P0^0;

sbit lamp=P3^0;

void main()

{

While(1)

{

if(K0==0)

lamp=0;

else

lamp=1;

}

}

实验七

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

sbit K0=P1^0;

void delay(uint x)

{

uint i,j;

for(i=0;ix;i++)

for(j=0;j1000;j++)

;

}

void main()

{

while(1)

{

K0=1;

delay(50);

K0=0;

delay(50);

}

}

实验十

(1)仿真一程序清单

#includereg51.h

sbit sdata=P1^0;

sbit clk=P1^1;

void delay(unsigned int x)

{

unsigned int I,j;

for(i=0;ix;i++)

for(j=0;i60000;i++)

;

}

void write_74ls164(unsigned char dat)

{

unsigned char i;

for(i=0;i8;i++)

{

Clk=0;

sdata=dat0x01;

clk=1;

delay(50000);

dat=dat1;

}

}

void main()

{

write_74ls164(0x01);

while(1);

}

(2)仿真二程序清单

#include reg51.h

#define uchar unsigned char

#define uint unsigned int

sbit sda=P1^0;

sbit clk=P1^1;

void write_741s164(uchar dat)

{

uchar i;

for(i=0;i8;i++)

{

clk=0;

sda=dat0x01;

clk=1;

dat=dat1;

}

}

void delay(uint x)

{

uchar y;

for(;x0;x--)

for(y=1000;y0;y--);

}

void main()

{

while(1)

{

write_741s164(0xff);

delay(1000);

}

}

(3)仿真三程序清单

#include reg51.h

#define uchar unsigned char

#define uint unsigned int

sbit sda=P1^0;

sbit clk=P1^1;

uchar a[2]={0xff,0xf6};

void write_741s164(uchar dat)

{

uchar i;

for(i=0;i8;i++)

{

clk=0;

sda=dat0x01;

clk=1;

dat=dat1;

}

}

void delay(uint x)

{

uchar y;

for(;x0;x--)

for(y=1000;y0;y--);

}

void main()

{

while(1)

{

write_741s164(a[0]);

write_741s164(a[1]);

delay(1000);

}

}

(4)实验箱程序清单

#includereg51.h》

#define uchar unsigned char

#define uint unsigned int

sbit sda=P1^0;

sbit clk=P1^1;

uchar a[5]={0xfe,0xfc,0x9c,0xb6,0x60};

void write_74ls164(uchar dat)

{

uchar I;

for(i=0;i8;i++)

{

clk=0;

sda=dat0x01;

clk=1;

dat=dat1;

}

}

void delayls(uint x)

{

uchar y;

for(;x0;x--)

for(y=1000;y0;y--)

;

}

void main()

{

while(1)

{

write_74ls164(a[0]);

write_74ls164(a[1]);

write_74ls164(a[2]);

write_74ls164(a[3]);

write_74ls164(a[4]);

delayls(3000);

}

}

实验十一

#include reg51.h

#define uchar unsigned char

#define uint unsigned int

uchar duanma[6]={0x06,0x7d,0x7f,0x06,0x7d,0x7f};

uchar weima[6]={0x20,0x10,0x08,0x04,0x02,0x01};

void dealy(uint x)

{

uint i,j;

for(i=0;ix;i++)

for(j=0;j1000;j++);

}

void main()

{

uchar i;

while (1)

{

for(i=0;i6;i++)

{

P0=duanma[i];

P1=weima[i];

dealy(80);

}

}

}

实验十二

#includereg51.h

void main(){

unsigned char x;

while(1)

{

x=P1;

switch(x)

{

case 0xfe:P2=0x3f;break;

case 0xfd:P2=0x06;break;//84218421

case 0xfb:P2=0x5b;break;//2 01011011

case 0xf7:P2=0x4f;break;//3 01001111

case 0xef:P2=0x66;break;//4 01100110

case 0xdf:P2=0x6b;break;//5 01101101

case 0xbf:P2=0x7d;break;//6 01111101

case 0x7f:P2=0x07;break;

}

}

}

实验十三

#includereg51.h

#define GPIO_KEY P1

unsigned char m[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char KeyValue;

void ys(unsigned int c);

void KeyDown();

void main()

{

while(1)

{

KeyDown();

P2=m[KeyValue];

ys(25);

}

}

void KeyDown()

{

char a=0;

GPIO_KEY=0x0f;

if(GPIO_KEY!=0x0f)

{

ys(1);

if(GPIO_KEY!=0x0f)

{

GPIO_KEY=0xf0;

switch(GPIO_KEY)

{

case(0xe0): KeyValue=0;break;

case(0xd0): KeyValue=1;break;

case(0xb0): KeyValue=2;break;

case(0x70): KeyValue=3;break;

}

GPIO_KEY=0x0f;

switch(GPIO_KEY)

{

case(0x0e): KeyValue=KeyValue;break;

case(0x0d): KeyValue=KeyValue+4;break;

case(0x0b): KeyValue=KeyValue+8;break;

case(0x07): KeyValue=KeyValue+12;break;

}

while((a50)(GPIO_KEY!=0x0f))

{

ys(1);

a++;

}

}

}

}

void ys(unsigned int c)

{

unsigned char a,b;

for(;c0;c--)

{

for(b=38;b0;b--)

{

for(a=130;a0;a--)

;

}

}

}

实验十四

#includereg51.h

sbit sz=P3^4;

void delay(unsigned int x)

{

unsigned int i,j;

for(i=0;ix;i++)

for(j=0;j1000;j++);

}

void main()

{

TMOD=0X05;

TH0=0;

TL0=0;

TR0=1;

while(1)

{

P1=TL0;

delay(0);

}

}

实验十五

(1)中断方式

#includereg51.h

sbit led=P1^0;

unsigned int counter;

void timer0_inter()interrupt 1

{

counter++;

}

void main()

{

led=1;

TH0=0x9c;

TL0=0x9c;

TMOD=0X02;

ET0=1;

EA=1;

TR0=1;

while(1)

{

if(counter==10000)

{

counter=0;

led=~led;

}

}

}

(2)非中断方式:

#includereg51.h

sbit led=P1^0;

void timer0(unsigned int x)

{

unsigned int i=0;

TH0=0x9c;

TL0=0x9c;

TR0=1;

while(ix)

{

while(TF0==0)

;

i++;

TF0=0;

}

}

void main()

{

Led=1;

TMOD=0x02;

while(1)

{

led=0;

timer0(10000);

led=1;

timer0(10000);

}

}

实验十六

#includereg51.h

sbit P1_0=P1^0;

sbit P1_1=P1^1;

void delay();

void main()

{

P1_0=0;

P1_1=0;

EA=1;

IT0=1;

EX0=1;

while(1)

{

P1_1=0;

delay();

P1_1=1;

delay();

}

}

void int0() interrupt 0

{

bit saveled;

EA=0;

saveled=P1_1;

P1_0=!P1_0;

delay();

delay();

delay();

P1_1=saveled;

EA=1;

}

void delay()

{

unsigned int m,n;

for(m=0;m250;m++)

for(n=0;n255;n++)

;

}

实验十七

#includereg51.h

void delay();

void right();

void main()

{

P1=0xff;

EA=1;

IT0=1;

EX0=1;

while(1)

{

right();

}

}

void int0() interrupt 0

{

unsigned char saveled,i;

EA=0;

saveled=P1;

P1=0xff;

for(i=0;i10;i++)

{

P1=~P1;

delay();

}

P1=saveled;

EA=1;

}

void right()

{

unsigned char i,k;

k=0x80;

for(i=0;i8;i++)

{

P1=~k;

delay();

k=1;

}

}

void delay()

{

unsigned int m,n;

for(m=0;m250;m++)

for(n+0;n255;n++)

;

}

实验十八

#includereg51.h

sbit led1=P1^0;

sbit led2=P1^1;

void delayls();

void main()

{

EA=1;

IT0=1;

EX0=1;

TMOD=0x01;

TH0=0x3c;

TL0=0xb0;

TR0=1;

while(1)

{

led1=0;

delayls();

led1=1;

led2=0;

delayls();

led2=1;

}

}

void int0() interrupt 0

{

unsigned char saveled;

EA=0;

saveled=P1;

led1=1;

led2=0;

delayls();

delayls();

delayls();

delayls();

led2=1;

P1=saveled;

EA=1;

}

void delayls()

{

unsigned char i=0;

while(i!=20)

{

if(TF0==1)

{

i++;

TH0=0x3c;

TL0=0xb0;

TF0=0;

}

}

}

实验十八

#includereg51.h

sbit led1=P1^0;

sbit led2=P1^1;

void delayls();

void main()

{

EA=1;

IT0=1;

EX0=1;

TMOD=0x01;

TH0=0x3c;

TL0=0xb0;

TR0=1;

while(1)

{

P1_0=0;

delayls();

P1_0=1;

P1_1=0;

delayls();

P1_1=1;

}

}

void int0() interrupt 0

{

unsigned char saveled;

EA=0;

saveled=P1;

P1_0=1;

P1_1=0;

delayls();

delayls();

delayls();

delayls();

P1_1=1;

P1=saveled;

EA=1;

}

void delayls()

{

unsigned char i=0;

while(i!=20)

{

if(TF0==1)

{

i++;

TH0=0x3c;

TL0=0xb0;

TF0=0;

}

}

}

实验二十

(1)串口以工作方式1实现数据收发

#include reg51.h

#define uint unsigned int

#define uchar unsigned char

void delay(uint x)

{

uint y,z;

for(y=x;y0;y--)

for(z=250;z0;z--)

;

}

void timer1_int()

{

TMOD=0x20;

TL1=0xfd;

TH1=0xfd;

TR1=1;

}

void serial_int()

{

PCON=0;

SCON=0x40;

}

void main()

{

uchar send_data=0;

uchar i=0;

timer1_int();

serial_int();

IE=0x00;

while(1)

{

send_data='A';

for(i=0;i26;i++)

{

SBUF=send_data;

while(TI==0)

;

TI=0;

send_data++;

delay(1000);

}

delay(6000);

}

}

(2)89c51点对点通讯

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

sbit P2_0=P2^0;

sbit P2_1=P2^1;

uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar num;

void delay(uchar x)

{

uchar y,z;

for(y=x;y0;y--)

for(z=250;z0;z++)

;

}

void display(uchar num)

{

P2_0=0;

P0=~led[num/10];

delay(5);

P2_0=1;

P2_1=0;

P0=~led[num%10];

delay(5);

P2_1=1;

}

void TAKE_SBUF(uchar dat)

{

ES=0;

SUBF=dat;

while(~TI)

;

TI=0;

ES=1;

}

void main()

{

SCON=0x90;

EA=1;

ES=1;

P2=0xff;

num=0;

TAKE_SUBF(num+1);

while(1)

;

}

void intorupt()interrupt 4

{

uchar num;

Uchar i;

RI=0;

num=SUBF;

if(num99)

Num=0;

for(i=100;i0;i--)

display(num);

TAKE_SBUF(num+1);

}

实验二十三

#includereg51.h

#define ZHK P0

#define ZLK P1

#define uchar unsigned char

#define uint unsigned int

uchar h1[]={0xf7,0xef};

uchar l1[]={0x18,0x18};

uchar h2[]={0xfb,0xf7,0xef,0xdf};

uchar l2[]={0x3c,0x24,0x24,0x3c};

uchar h3[]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf};

uchar l3[]={0x7e,0x42,0x42,0x42,0x42,0x7e};

uchar h4[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar l4[]={0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff};

void delay(uchar x)

{

uchar y,z;

for(y=x;y0;y--)

for(z=250;z0;z--)

;

}

void main()

{

uchar i;

while(1)

{

for(i=0;i2;i++)

{

ZHK=h1[i];

ZLK=l1[i];

delay(5);

}

delay(100);

for(i=0;i4;i++)

{

ZHK=h2[i];

ZLK=l2[i];

delay(5);

}

delay(100);

for(i=0;i6;i++)

{

ZHK=h3[i];

ZLK=l3[i];

delay(5);

}

delay(100);

for(i=0;i8;i++)

{

ZHK=h4[i];

ZLK=l4[i];

delay(5);

}

delay(100);

}

}

实验二十四

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

sbit lcde=P1^0;

sbit lcdrs=P1^1;

uchar i;

uchar a1[]="Welcome to ";

uchar a2[]="an zhi yuan";

void chushihua();

void write_c(uchar c);

void write_d(uchar d);

void delay(uint x);

void main()

{

chushihua();

write_c(0x80+0x00);

for(i=0;i11;i++)

{

write_d(a1[i]);

delay(10);

}

write_c(0x80+0x41);

for(i=0;i11;i++)

{

write_d(a2[i]);

delay(10);

}

for(i=0;i3;i++)

{

write_c(0x18);

delay(10);

}

while(1)

;

}

void chushihua()

{

lcde=0;

write_c(0x38);

write_c(0x0f);

write_c(0x01);

write_c(0x06);

}

void write_c(uchar c)

{

lcdrs=0;

P2=c;

delay(2);

lcde=1;

delay(5);

lcde=0;

delay(2);

}

void write_d(uchar d)

{

lcdrs=1;

P2=d;

delay(2);

lcde=1;

delay(5);

lcde=0;

delay(2);

}

void delay(uint x)

{

uint i,j;

for(i=x;i0;i--)

for(j=120;j0;j--)

;

}

单片机求一个串口实验的C语言程序代码

#include AT89X51.H//单片机51头文件,存放着单片机的寄存器

unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容

sbit gewei=P2^2; //个位选通定义

sbit shiwei=P2^3; //十位选通定义

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};

//{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

void Delay(unsigned int tc) //延时程序

{

while( tc != 0 )

{unsigned int i;

for(i=0; i100; i++);

tc--;}

}

void LED() //LED显示接收到的数据

{

shiwei=0;

P0=~table[dat/16];

Delay(8);

shiwei=1;

gewei=0;

P0=~table[dat%16];

Delay(5);

gewei=1;

}

void Init_Com(void)//功能:串口初始化,波特率9600,方式1

{

TMOD = 0x20;

PCON = 0x00;

SCON = 0x50;

TH1 = 0xFd;

TL1 = 0xFd;

TR1 = 1;

}

void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////

{

Init_Com();//串口初始化

// P1=0xf0;

while(1)

{

if ( RI ) //扫描判断是否接收到数据,

{

dat = SBUF; //接收数据SBUF赋与dat

RI=0; //RI清零。

SBUF = dat; //在原样把数据发送回去

}

LED(); //显示接收到的数据

}

}

51单片机用别人的代码

不能用别人代码

单片机程序也是一种知识产权,未经别人允许而使用别人的程序,属于侵权行为,严重的可能承担法律后果。

另外就算通过解密手段获得的别人的程序,也只是一些机器码,并不能获得源程序,就算通过反汇编手段获得汇编语言程序,要读懂和修改也是很难的事情,所以得不偿失,没有意义。

单片机定时器实验的代码怎么写?求详细注释。

如果是100ms中断一次,那么晶振需要用6MHz

#includereg51.h

#define uchar unsigned char

uchar t1,sec1,dscan=0,dis[3]={0,0,0};

uchar table={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t1++;

if(t1=20)

{

t1=0;

sec1++;

dis[0]=sec1%10;

dis[1]=sec1%100/10;

dis[2]=sec1/100;

}

}

void t1isr() interrupt 3

{

TH1=(65536-5000)/256;

TL1=(65536-5000)%256;

P2=1dscan;

P0=table[dis[dscan]];

}

main()

{

TMOD=0x11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=(65536-5000)/256;

TL1=(65536-5000)%256;

TR0=1;

ET0=1;

TR1=1;

ET1=1;

EA=1;

t1=0;

sec1=0;

while(1);

}

关于单片机实验代码和单片机实验代码c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/10865.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载