单片机实验代码(单片机实验代码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站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-12网页设计需要学什么,网页设计学什么语言
- 05-09网页代码,网页代码快捷键
- 05-06单页网站的代码(完整的网页代码)[20240506更新]
- 05-06个人主页图片代码(个人主页图片代码怎么弄)[20240506更新]
- 05-06提取微信名片代码(微信名片信息提取)[20240506更新]
- 05-06php后台权限管理代码(php管理员权限)[20240506更新]
- 05-06付费观看代码php(付费观看代码)[20240506更新]
- 05-06在线html执行代码(html怎么运行)[20240506更新]
- 05-06源代码管理资源管理器(资源管理器运行代码)[20240506更新]
- 05-06代码源软件库(程序代码库)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接