单片机例子43个,配套开发板

2019-04-10 09:49

1. 点亮开发板上的第1个发光管

#include //包含头文件,在“reg51.h”上右键单击,并打开,可以看到它里面的定义

//当然也可以改成 reg52.h STC.H 功能一样的,只是定义的IO口有一点区别,51单片机可以通用。

sbit led=P1^0; //定义一个LED 为P1.0 IO口

void main() //C语言主函数 { led=0; //单片机IO P1.0脚输出一个低电平,点亮发光管。 高电平为5V 低电平为0。 while(1); }

2. 用逐位赋值的方法点亮第一、第三、第五、第七个发光二极管

#include //包含头文件,在“reg51.h”上右键单击,并打开,可以看到它里面的定义

sbit led1=P1^0; //第一个led是和P1^0口连接的。

sbit led3=P1^2; sbit led5=P1^4; sbit led7=P1^6; void main() { led1=0; //参照电路图可知,P1^0为低电平,可以让led1点亮。 led3=0; led5=0; led7=0; while(1);//此处设置一个死循环,让程序停留在这里,防止跑飞。 }

3. 用总线操作的方法点亮第一、第三、第五、第七个发光二极管

#include //包含头文件,在“reg51.h”上右键单击,并打开,可以看到它里面的定义 void main() { P1=0XAA; //对P1口的八位一起操作,高低电平分配为10101010,为0的位对应的二极管被点亮。 while(1); } 4. 让一LED闪烁十次后停止 #include

sbit led=P1^0;

void delay(unsigned int i) { unsigned int j; unsigned char k; for(j=i;j>0;j--) for(k=125;k>0;k--); }

void main() { unsigned char m; for(m=20;m>0;m--) { led=~led; //没隔一段时间即对输出取反。 delay(3000); //闪烁间隔。 } while(1); //闪烁十次后,到此不再闪烁。 }

5. 使八位LED逐位移动并不断循环 #include

#include //这个头文件是这个方法的核心,它包含了逐步移位函数功能,即程序中的_crol_(P1,y) sbit led=P1^0;

void delay(unsigned int i) { unsigned int j; unsigned char k; for(j=i;j>0;j--) for(k=125;k>0;k--); }

void main() { P1=0xfe; delay(1000); while(1) { // unsigned char m; //P1=0xfe; // delay(1000); // for(m=7;m>0;m--) { P1=_crol_(P1,1); //P1逐步左移一位。 delay(1000); }

} }

6. 使八位LED逐位移动并不断循环,该方法采用逐个查表赋值的方法 #include unsigned char table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(unsigned int i) { unsigned int j; unsigned char k; for(j=i;j>0;j--) for(k=125;k>0;k--); }

void main() { while(1) { unsigned char m; for(m=0;m<8;m++) { P1=table[m]; delay(2000); } }

7. 用四个led指示HJ-3G实验板键盘最下面一排的四个按键状态。当按键按下时,对应led亮;松开后,对应led灭 #include sbit s2=P3^4; sbit s3=P3^5; sbit s4=P3^6; sbit s5=P3^7; sbit led1=P1^0; sbit led2=P1^1; sbit led3=P1^2; sbit led4=P1^3;

void main() { while(1) { if(s2==0) led1=0; else led1=1; if(s3==0) led2=0;

else led2=1; if(s4==0) led3=0; else led3=1; if(s5==0) led4=0; else led4=1; } }

8.流水灯

#include #include

void delay(unsigned char i) { unsigned char m,n; for(m=i;m>0;m--) for(n=125;n>0;n--); }

void main()

{ unsigned char k; while(1) { P1=0xfe; for(k=0;k<8;k++) { delay(2000); P1=_crol_(P1,1); } } }

9. 流水灯

#include

void delay(unsigned char i) { unsigned char m,n; for(m=i;m>0;m--) for(n=125;n>0;n--); }

void main() { while(1)

{ P1=0x7e; delay(2000); P1=0xbd; delay(2000); P1=0xdb; delay(2000); P1=0xe7; delay(2000); P1=0xdb; delay(2000); P1=0xbd; delay(2000); P1=0x7e; delay(2000); } }

10. 流水灯

#include

void delay(unsigned char i) { unsigned char m,n; for(m=i;m>0;m--) for(n=125;n>0;n--); }

void main() { unsigned char m=255; while(1) { P1=m; delay(2000); m--; } }

11. 当按键按下时,led亮;松开后,灭。 #include

sbit k1=P3^4; sbit led=P1^0;

void main() { while(1) //通过大循环不断扫描按键状态 { if(k1==0)

led=0; else led=1; } }

12. 本程序以HL-1 学习板中的k1键为例,模拟其具有2种功能, 一是点亮一个发光二极管,二是蜂鸣器发声

#include

#define uchar unsigned char uchar num;

sbit beep=P2^3; sbit led=P1^0; sbit k1=P3^4;

void delay(uchar i) { uchar j,k; for(j=i;j>0;j--) for(k=125;k>0;k--); }

void main() { while(1) { if(k1==0) { delay(20); //消抖 if(k1==0) { while(!k1); //等待按键松开 num++; } switch(num) { case 1: led=0; beep=1; break; case 2: beep=0; led=1; num=0; break; } } } }

13. 使用HL-1 实验板键盘最下面一排左侧的S2键,控制一LED的亮灭。按下后松开,led亮;按下后再松开,led灭。 #include

sbit s2=P3^4; //采集按键状态,此时作为输入引脚 sbit led=P1^0; //此时作为输出引脚。

void delay(unsigned char p) { unsigned char m,n; for(m=p;m>0;m--) for(n=125;n>0;n--); }

void main() { while(1) { if(s2==0) { delay(10); //消抖 if(s2==0) { while(!s2);//等待按键松开。 led=~led; } } } }

14. 不管两个开关当前的状态如何,只要有一个开关状态发声变化,都会使照明灯在打亮或者熄灭两种状态间切换。 #include

sbit light=P1^0; sbit s1=P3^4; sbit s2=P3^5;

bit change,s1sta,s2sta;//s1sta,s2sta为开关s1和s2前一时刻的状态,用来和当前的s1与s2状态进行对比, //进而判决两个开关的状态有无发生变化。 bit keyscan() { if((s1^s1sta)||(s2^s2sta)) //^为异或,若两者不同,则结果为1。即若两开关中,任一开关的状态发生变化,则此条件即为真。 change=1; return change; }

void main() { s1sta=s1; s2sta=s2; while(1) { keyscan(); //扫描按键状态是否变化,即是否有人更改了按键状态。 if(change) { change=0; //清零 light=~light; //一旦发现有开关状态发生了变化,则灯的状态就取反。(若以前亮,则熄灭;反之则打亮) s1sta=s1; //同时,将s1和s2的当前状态送给s1sta和s2sta,为以后的比较做准备。 s2sta=s2; } } }

15. 4*4键盘检测程序,按下键后相应的代码显示在数码管上

#include sbit beep=P2^3; sbit dula=P2^6; sbit wela=P2^7;

unsigned char i=100; unsigned char j,k,temp,key; void delay(unsigned char i) {

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

for(k=125;k>0;k--); }

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; display(unsigned char num) {

P0=table[num]; dula=1; dula=0; P0=0xc0; wela=1;

wela=0; }

void main() {

dula=0; wela=0; while(1) {

P3=0xfe; temp=P3;

temp=temp&0xf0; if(temp!=0xf0) {

delay(10); if(temp!=0xf0) {

temp=P3; switch(temp) {

case 0xed: temp=temp&0xf0; if(temp!=0xf0) {

delay(10); if(temp!=0xf0) {

temp=P3;

switch(temp) {

case 0xee: key=0;

break;

case 0xde: key=1; break;

case 0xbe: key=2; break;

case 0x7e: key=3; break; }

while(temp!=0xf0) {

temp=P3;

temp=temp&0xf0; beep=0; }

beep=1; display(key); P1=0xfe; } }

P3=0xfd; temp=P3; key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; }

while(temp!=0xf0) {

temp=P3;

temp=temp&0xf0; beep=0; }

beep=1;

display(key); } }

P3=0xfb; temp=P3;

temp=temp&0xf0; if(temp!=0xf0) {

delay(10); if(temp!=0xf0) {

temp=P3; switch(temp) {

case 0xeb: key=8;


单片机例子43个,配套开发板.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:1、竣工文件编制范本

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: