目录标题

    • 1. 流水灯 效果,六个LED内嵌灯不停切换(位输出)
    • 2. 流水灯 效果,六个LED内嵌灯不停切换(循环移位)
    • 3. 数码管显示内容
    • 4. 数码管显示内容 (略有闪烁)
    • 5. 数码管显示内容 (显示1 2 3 4)(略有问题,欢迎提出Bug)
    • 6. 蜂鸣器间断报警
    • 7. 蜂鸣器报警,流水灯切换
    • 8. 显示器显示 "b"
    • 9. 显示屏流动切换1 2 3 4,彩灯流动 ,蜂鸣器间断
    • 10. 多功能控制实验程序
    • 11. 单按键控制实验,点击关闭熄灭灯或点亮,长按无操作
  • 下面位断点 需要连接第三方硬件
    • 12. 中断 - 外部中断实验 注:此实验需要杜邦线将单片机P3.2引脚与最下角端口链接
    • 12. 外部中断下沿触发实验 注: 此实验需要杜邦线将单片机P3.3与P3.6引脚端口链接

注意:此实例单片机版本为STC 89C52

1. 流水灯 效果,六个LED内嵌灯不停切换(位输出)

//流水灯
#include<reg52.h>#define uint unsigned int
#define no 0
#define off 1sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit led6 = P1^5;
sbit led7 = P1^6;
sbit led8 = P1^7;void delay(uint xms){ //延时xmsuint i,j;for(i = xms;i>0;i--){for(j = 112;j>0;j--);}
}
int main(){while(1){led1 = no; //delay(200);//延迟200msled1 = off;led2 = no; //delay(200);//延迟200msled2 = off;led3 = no; //delay(200);//延迟200msled3 = off;led4 = no; //delay(200);//延迟200msled4 = off;led5 = no; //delay(200);//延迟200msled5 = off;led6 = no; //delay(200);//延迟200msled6 = off;led7 = no; //delay(200);//延迟200msled7 = off;led8 = no; //delay(200);//延迟200msled8 = off;}return 0;}

2. 流水灯 效果,六个LED内嵌灯不停切换(循环移位)

#include <reg52.h>
#include <intrins.h>#define uint unsigned int
#define uchar unsigned charuchar aa;void delayms(uint);int main() {aa = 0xfe;while(1){P1 = aa;delayms(500);aa = _cr ol_(aa,1);}return 0;
}void delayms(uint xms){uint i,j;for(i = xms;i > 0;i--){for(j = 110;j > 0;j--);}
}

3. 数码管显示内容

#include <reg52.h>sbit dula = P2^6;   //申明U1锁存器的锁存端
sbit wela = P2^7;  //申明U2锁存器的锁存端int main(){wela = 1;       //打开U2锁存端P0 = 0xFE;        //打开入位选信号wela = 0;         //关闭U2锁存端dula = 1;P0 = 0x7F;dula = 0;while(1);return 0;
}

4. 数码管显示内容 (略有闪烁)

#include <reg52.h>#define uchar unsigned char
#define uint unsigned int sbit dula = P2^6;
sbit wela = P2^7;uchar num;
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f,0x66, 0x6f, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c,0x39, 0x5e, 0x79, 0x71
};void delayms(uint);int main(){wela = 1;P0 = 0xc0;wela = 0;while(1){for(num = 0; num < 16; num++){dula = 1;P0 = table[num];dula = 0;delayms(500);}}return 0;
}void delayms(int xms){uint i,j;for(i = xms; i > 0; i--){for(j = 110; j < 0; j--);}
}

5. 数码管显示内容 (显示1 2 3 4)(略有问题,欢迎提出Bug)

#include <reg52.h>#define uchar unsigned char
#define uint unsigned int sbit dula = P2^6;
sbit wela = P2^7;uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f,0x66, 0x6f, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c,0x39, 0x5e, 0x79, 0x71
};void delayms(uint);void main(){while(1){dula = 1;P0 = table[1];  //送段选数据dula = 0;P0 = 0xff;       //送位选数据前关闭所有显示,防止打开位选锁存时wela = 1;       //原来段选数据通过位选锁存器造成的混乱P0 = 0xfe;     //送位选数据wela = 0;delayms(10);dula = 1;P0 = table[2];  dula = 0;P0 = 0xff;       wela = 1;      P0 = 0xfd;     wela = 0;delayms(10);dula = 1;P0 = table[3];  dula = 0;P0 = 0xff;      wela = 1;      P0 = 0xfb;     wela = 0;delayms(10);dula = 1;P0 = table[4];  dula = 0;P0 = 0xff;      wela = 1;      P0 = 0xf7;     wela = 0;delayms(10);}}void delayms(uint xms){uint i,j;for(i = xms; i > 0; i--){for(j = 110; j < 0; j--);}
}

6. 蜂鸣器间断报警

 #include <reg52.h>#define on 0
#define off 1sbit fm = P2^3;void delay(unsigned int xms){unsigned int i,j;for(i = xms; i > 0; i--){for(j = 112;j > 0; j--);}}int main(){while(1){fm = on;delay(100);fm = off;delay(100);}return 0;
}

7. 蜂鸣器报警,流水灯切换

 #include <reg52.h>
#include <intrins.h>#define on 0
#define off 1sbit fm = P2^3;void delay(unsigned int xms){unsigned int i,j;for(i = xms; i > 0; i--){for(j = 112;j > 0; j--);}}int main(){P1 = 0xfe;while(1){delay(100);P1 = _crol_(P1,1);fm = on;delay(100);fm = off;}return 0;
}

8. 显示器显示 “b”

#include <reg52.h>#define duan P0
#define duan_one P1sbit wei1 = P2^4; //定义第一个显示屏
sbit wei2 = P2^5;
sbit wei3 = P2^6;
sbit wei4 = P2^7;int main(){wei1 = 1; wei2 = 1;wei3 = 0;wei4 = 0;duan = 0x7c;//0111 1100 "b"duan_one = 0x7c;//0111 1100 "b"while(1);return 0;
}

9. 显示屏流动切换1 2 3 4,彩灯流动 ,蜂鸣器间断

#include <reg52.h>
#include <intrins.h>#define duan P0
#define uchar unsigned char
#define on 0
#define off 1sbit wei1 = P2^4; //定义第一个显示屏
sbit wei2 = P2^5;
sbit wei3 = P2^6;
sbit wei4 = P2^7;
sbit fm = P2^3;
uchar code se[17] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c,0x39, 0x5e, 0x79, 0x71, 0x00
};void delay(unsigned int xms){unsigned int i,j;for(i = xms; i > 0; i--){for(j = 112;j > 0; j--);}}void main(){P1 = 0xfe;while(1){duan = se[4];wei1 = 0; wei2 = 0;wei3 = 0;wei4 = 1;P1 = _crol_(P1,1); fm = on;delay(200); fm = off;delay(800);        duan = se[3];wei1 = 0;    wei2 = 0;wei3 = 1;wei4 = 0;P1 = _crol_(P1,1);  fm = on;delay(200); fm = off;delay(800);   duan = se[2];wei1 = 0;    wei2 = 1;wei3 = 0;wei4 = 0;P1 = _crol_(P1,1);   fm = on;delay(200); fm = off;delay(800);          duan = se[1];wei1 = 1;    wei2 = 0;wei3 = 0;wei4 = 0; P1 = _crol_(P1,1);  fm = on;delay(200); fm = off;delay(800);          }
}

10. 多功能控制实验程序

#include <reg52.h>sbit led1 = P1^0;//RED
sbit led2 = P1^1;//RED
sbit led3 = P1^2;//GREEN
sbit led4 = P1^3;//GREEN
sbit led5 = P1^4;//YELLOW
sbit led6 = P1^5;//YELLOW
sbit led7 = P1^6;//BLUE
sbit led8 = P1^7;//BLUEsbit k1 = P3^4;
sbit k2 = P3^5;
sbit k3 = P3^6;
sbit k4 = P3^7;void main(){P1 = 0xfe;while(1){led1 = k1;led2 = k1;if(k1 == 0){led1 = 0;led2 = 0;}else{led1 = 1;led2 = 1;}led3 = k2;led4 = k2;led5 = k3;led6 = k3;led7 = k4;led8 = k4;}
}

11. 单按键控制实验,点击关闭熄灭灯或点亮,长按无操作

#include  <reg52.h>sbit led1 = P1^0l;
sbit k1 = P3^4;void delay(unsigned int xms){unsigned int i,j;for(i = xms; i > 0; i--){for(j = 112;j > 0; j--);}
}void main()    {P1 = 0xfe;//熄灭所有ledwhile(1) {if(k1 == 0){delay(10);//消抖if(k1 == 0){//再次判断是否按下while(k1 == 0);//直到按钮判断松开led1 =~led1; //翻转    }}}
}

下面位断点 需要连接第三方硬件

12. 中断 - 外部中断实验 注:此实验需要杜邦线将单片机P3.2引脚与最下角端口链接

#include <reg52.h>void delay(unsigned int xms){unsigned int i,j;for(i = xms; i > 0; i--){for(j = 112;j > 0; j--);}
}void main(){P1 = 0x0f;//0000 1111 下面四个灯亮,上面灭EX0 = 1; //INT0中断允许EA  = 1;//全局中断打开IT0   = 0;//触发模式为低电平触发while(1);
}void low()interrupt 0{P1 =~ P1;delay(200);
}

12. 外部中断下沿触发实验 注: 此实验需要杜邦线将单片机P3.3与P3.6引脚端口链接

#include <reg52.h>void main(){P1 = 0x0f;//0000 1111 下面四个灯亮,上面灭EX0 = 1; //INT0中断允许EA  = 1;//全局中断打开IT0 = 1;//触发模式为下电平触发while(1);
}void low()interrupt 2{P1 =~ P1;

单片机项目实例 - 嵌入式开发 - C语言版 - 基础篇相关推荐

  1. 嵌入式开发比单片机要难很多?谈谈单片机和嵌入式开发设计经历

    嵌入式开发比单片机要难很多?谈谈单片机和嵌入式开发设计经历 \\\插播一条:文章末尾有惊喜哟~/// 单片机和嵌入式,其实没有什么规范的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他 ...

  2. 嵌入式C语言编程课件,嵌入式系统C语言编程基础PPT课件

    <嵌入式系统C语言编程基础PPT课件>由会员分享,可在线阅读,更多相关<嵌入式系统C语言编程基础PPT课件(81页珍藏版)>请在人人文库网上搜索. 1.嵌入式系统C语言编程基础 ...

  3. Java程序设计语言(基础篇)机械工业出版社 原属第10版

    链接:https://pan.baidu.com/s/1txoB3sk0SdT1u8RpS2x-Kg  提取码:rxkd  Java程序设计语言(基础篇)机械工业出版社 原属第10版 外加一本Java ...

  4. Java语言程序设计 基础篇 原书第10版 ,梁勇著,百度云链接及密码

    一本好书,对java小白来说是一本非常不错的书.第一次分享,请大家多多指教, Java语言程序设计 基础篇 原书第10版 ,梁勇著 链接:https://pan.baidu.com/s/1-MN_AS ...

  5. java iterator如何知道数量_Java开发岗面试题基础篇(二)

    点击蓝字 关注wo们 老哥们,接上篇<Java开发岗面试题--基础篇(一)>,本期推出Java开发岗面试题--基础篇(二),来看看Java中的集合.多线程.异常体系等知识在面试中是怎么体现 ...

  6. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  7. R语言数据处理——基础篇 data.frame基本操作

    文章目录 R语言数据处理--基础篇 data.frame基本操作 data.frame的创建 数据访问.条件筛选与删除 数据访问 数据筛选 删除 使用`gather()`进行data.frame数据格 ...

  8. 2022考研数学李永乐复习全书pdf版-基础篇(数一二三通用)

    2022考研数学李永乐复习全书pdf版-基础篇(数一二三通用):https://pan.baidu.com/s/1tK9cPPG5Q-xhasqb051ymQ  提取码:1111 本书是专门为准备参加 ...

  9. c语言 字符串转运算符,快速上手系列-C语言之基础篇(二)数据类型与运算符...

    在上一篇文章<快速上手系列-C语言之基础篇(一)>中写了关于C语言的程序结构,关键字及控制语句.本篇主要写写C语言中数据类型,以及运算符相关方面的知识. 一.变量与常量 1.常量:在程序运 ...

最新文章

  1. linux shell sleep usleep 延时命令 秒 毫秒 微秒
  2. Sping-Spring表达式语言SpEL
  3. Python基础教程(八):日期和时间、文件I/O、异常处理
  4. setting virtualbox share folder in windows7 system
  5. ASP.NET基础教程-Web 自定义控件的使用-根据属性值从数据库中提取数据并在页面上自动生成一个表格...
  6. 大数据学习规划(新手入门)
  7. python里、能用分支结构写出循环的算法吗_python变量运算符分支结构循环结构及例题...
  8. 微软Visual Studio 2012软件功能介绍
  9. java 10进制转 000x_java 如何把 00 转换成 0x00 或者 10 转换成 0x10
  10. java内部类练习题,学习笔记——Java内部类练习题
  11. 第 10 章 树结构的基础部分
  12. Maven+Eclipse+SparkStreaming+Kafka整合
  13. JQueryEasyUI学习笔记(一)
  14. HOWTO:InstallShield中如何通过脚本获取“My Documents”路径
  15. 发生服务器错误 显示预览,我的电脑为何在做asp的时候按F12键不能预览!预览就出错!错误代码500说服务器或者DNS错误...
  16. CROC 2016 - Elimination Round Mischievous Mess Makers
  17. Excel基础学习笔记
  18. wine android模拟器,Mac  下运行window 软件,(wine 模拟器)
  19. 对抖音App评论进行抓取
  20. MATLAB---三维绘制函数实例介绍

热门文章

  1. 客户手动调节音量的范围,修改默认音量各类型音量,按音量键或手动调进度条触发流程,调节音量大小级数每次加减的级数,同时操作指定多个音量类型,更改开机音量,通过底层节点来调节音量大小,音量控制的对话框UI
  2. easyExcel 使用策略实现 单元格 合并
  3. MySQL小干货——DATE_FORMAT()函数
  4. 基于asp.net的餐具消毒公司管理软件
  5. 应用于车内消毒杀菌的UVC便携灭菌灯
  6. Bayesian Network的辅助模型
  7. 网站升级维护nginx配置
  8. 新书推荐|《手机诞生记:马丁·库珀回忆录》(赠书福利)
  9. 基于51单片机的数字电子钟
  10. 算云融合促发展,天翼云以领先云网算力助推数字中国建设!