-
2021-04-21 21:22:36
目录标题
注意:此实例单片机版本为STC 89C521. 流水灯 效果,六个LED内嵌灯不停切换(位输出)
//流水灯 #include<reg52.h> #define uint unsigned int #define no 0 #define off 1 sbit 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){ //延时xms uint i,j; for(i = xms;i>0;i--){ for(j = 112;j>0;j--); } } int main(){ while(1) { led1 = no; // delay(200);//延迟200ms led1 = off; led2 = no; // delay(200);//延迟200ms led2 = off; led3 = no; // delay(200);//延迟200ms led3 = off; led4 = no; // delay(200);//延迟200ms led4 = off; led5 = no; // delay(200);//延迟200ms led5 = off; led6 = no; // delay(200);//延迟200ms led6 = off; led7 = no; // delay(200);//延迟200ms led7 = off; led8 = no; // delay(200);//延迟200ms led8 = off; } return 0; }
2. 流水灯 效果,六个LED内嵌灯不停切换(循环移位)
#include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char uchar 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 1 sbit 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 1 sbit 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 P1 sbit 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 1 sbit 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;//BLUE sbit 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;//熄灭所有led while(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;
更多相关内容 -
嵌入式开发实例
2018-04-20 11:26:03嵌入式linux应用程序开发标准教程(第二版) 课堂实例 -
ARM嵌入式开发实例1-2.pptx
2022-05-11 12:24:40ARM嵌入式开发实例1-2.pptx -
arm嵌入式开发实例
2014-03-30 13:34:05多种嵌入式案例:家居控制器,控制器项目,生物识别项目等 -
ARMCortex-M3嵌入式开发实例详解--ARM Cortex-M3嵌入式开发实例详解-基于NXP LPC1768.pdf
2018-08-27 23:35:28ARM Cortex-M3嵌入式开发实例详解--基于NXP LPC1768 pdf电子书,有需要的童鞋不要错过,建议结合周立功的开发文档一起学习,进步迅速。 -
ARM嵌入式开发实例12.pptx
2021-10-11 01:03:08ARM嵌入式开发实例12.pptx -
ARM嵌入式开发实例1-2.ppt
2021-12-19 20:17:08ARM嵌入式开发实例1-2.ppt -
ARM嵌入式开发实例PPT教学课件.pptx
2021-10-06 19:22:22ARM嵌入式开发实例PPT教学课件.pptx -
ARM嵌入式开发实例PPT学习教案.pptx
2021-10-06 15:44:44ARM嵌入式开发实例PPT学习教案.pptx -
ARM嵌入式开发实例解析PPT教学课件.pptx
2021-10-06 19:22:24ARM嵌入式开发实例解析PPT教学课件.pptx -
ARM嵌入式开发实例解析PPT学习教案.pptx
2021-10-06 15:44:47ARM嵌入式开发实例解析PPT学习教案.pptx -
ARM嵌入式开发实例PPT课件PPT学习教案.pptx
2021-10-06 15:44:46ARM嵌入式开发实例PPT课件PPT学习教案.pptx -
ARM Cortex-M3嵌入式开发实例详解-基于NXPLPC1768
2018-10-22 21:20:54ARM Cortex-M3嵌入式开发实例详解-基于NXPLPC1768.pdf 高清版本 -
[嵌入式系统设计与开发实例详解-基于ARM的应用].胥静.pdf
2019-05-16 09:10:25嵌入式系统设计与开发实例详解-基于ARM的应用胥静是一个很好的嵌入式教程啊 -
嵌入式开发详解
2018-06-10 12:36:13计算机专业人员书库《嵌入式开发详解》高清版。 前两三页存在一些文字错乱,但目录和正文部分均正常, -
嵌入式开发实例PPT
2014-08-28 10:51:45嵌入式开发实例,学习嵌入式必备PPT,讲解详细,功能强大 -
无线通信系统ARM嵌入式开发实例精讲.pdf
2012-04-11 22:08:59无线通信系统ARM嵌入式开发实例精讲.pdf -
嵌入式开发实例 开发板的烧录
2011-04-01 13:15:09很好的嵌入式开发实例,希望对大家有帮助! -
嵌入式开发实例 ARM开发
2010-02-26 20:46:16非常好的东西,分享下。 对刚入门的 人来说是好东西。 -
ARM嵌入式系统软件开发实例(一)
2018-08-25 11:08:05ARM嵌入式系统软件开发实例(一),详细地讲述了具体的ARM嵌入式开发实例,简单易懂。 -
《ARM Cortex-M3嵌入式开发实例详解基于NXP LPC1768》源程序
2013-08-20 14:46:09《ARM Cortex-M3嵌入式开发实例详解基于NXP LPC1768》源程序 -
ARM Cortex-M3嵌入式开发实例详解——基于NXP LPC17XX[张燕妮][程序源代码]
2014-07-16 16:21:50ARM Cortex-M3嵌入式开发实例详解——基于NXP LPC17XX[张燕妮][程序源代码] -
ARM平台下的嵌入式开发实例
2010-06-28 19:51:30ARM平台下的开发实例 有助于对arm系统的理解 -
FPGA嵌入式系统开发与实例(惠飞)工程包+源文件包
2018-12-13 11:10:50FPGA嵌入式系统开发与实例(惠飞)工程包+源文件包 -
嵌入式的应用实例
2021-06-26 05:26:16谈到嵌入式技术,可能除计算机方面相关专业人士外很少有人能够涉足了解。其实应用到嵌入式技术的产品已经渗透到我们生活的方方面面。从人们的生活到工业化生产,从银行、医疗到航空航天领域,嵌入式系统无处不在,图...谈到嵌入式技术,可能除计算机方面相关专业人士外很少有人能够涉足了解。其实应用到嵌入式技术的产品已经渗透到我们生活的方方面面。从人们的生活到工业化生产,从银行、医疗到航空航天领域,嵌入式系统无处不在,图1为嵌入式应用领域。
嵌入,深深地固定,镶入的意思。而嵌入式系统,顾名思义就是一个嵌入在其他系统中的系统。IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
个人跟喜欢这样的定义,除了个人电脑(PC)、工作站、大型超大型计算机,其他都可以归为嵌入式,电视,手机,路由器,柜员机(ATM),汽车导航,行车记录仪,打印机,MP3播放器、摇控器等,都是嵌入式范畴。
图1:嵌入式应用领域
交通管理方面的应用有汽车导航,智能路灯,高清摄像头等;能源方面的应用有智能能电表,远程抄表系统,高压线路监测的无人机等;物流方面的应用有送货的无人机,仓库的运输机器人等;医疗健康方面的应用有电子血压计,电子温度计,电子秤等;嵌入式系统在家居应用实例有冰箱、空调、洗衣机、台灯、计算器、路由器、智能家居系统等。
在网上有很多人提问“嵌入式和单片机(一种微型计算机)有什么区别”,有人说单片机与嵌入式不一样,不属于嵌入式,有人说单片机属于嵌入式。因为嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用程序组成,而单片机系统没有操作系统只有应用程序,所以单片机不属于嵌入式。在这里不纠结这个问题,我们可以这样理解,嵌入式系统是一个大类,单片机是其中一个重要的子类。下面说简单的图文说明一下嵌入式系统在家居应用实例
1.单片机应用实例-感应灯
如图2所示,一个普通的感应灯,人来即亮,人走即灭。在我们嵌入式开发人员眼里,感应灯主要由“单片机+人体感应模块+LED灯”组成而已,如图3所示,加一个外壳,基本是一个感应灯的小demo。
图2:感应灯(图片来源于网络如有侵权请私信删除)
图3:单片机+人体感应模块+LED灯(图片来源于网络如有侵权请私信删除)
2.单片机应用实例-触控台灯
如图4所示,一个普通的触控台灯,通过触控键控制灯的亮与灭。在我们嵌入式开发人员眼里,触控台灯主要由“单片机+按键触控模块+LED灯”组成而已,如图5所示,加一个外壳,基本是一个触控台灯的小demo。
图4:触控台灯( 图片来源于网络如有侵权请私信删除 )
图5:单片机+按键触控模块+LED灯(图片来源于网络如有侵权请私信删除)
3.单片机应用实例-计算器
如图6所示,一个普通的计算器。在我们嵌入式开发人员眼里,计算器主要由“单片机+按键+LCD显示屏”组成而已,如图7所示,加一个外壳,基本是一个触控台灯的小demo。
图6:计算器( 图片来源于网络如有侵权请私信删除 )
图7:单片机+按键+LCD显示屏( 图片来源于网络如有侵权请私信删除 )
4.嵌入式系统-路由器
如图8所示,一个普通的路由器。与前面三个例子不一样,路由器上面是有操作系统的,操作系统上面运行着应用程序,也就是说,由嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用程序组成。路由器电路板正面,如图9所示。
图8: 路由器
图9: 路由器电路板正面
由于时间关系,列举了部分的嵌入式的应用实例,其实还有很多没有说明, 这篇文章会不断的修改与增加内容,希望对想了解或学习嵌入式的人有帮助。
-
嵌入式开发实例及相关论文,有文字讲解,有图
2010-04-28 15:14:37嵌入式开发的几个实用的实例及相关论文,对于了解开发流程和考试举例很有用 -
ARM嵌入式开发实例
2009-07-25 13:50:24搭配easyarm2200的光盘内容,还有很多啊。这里这是部分内容,。仅仅是软件开发部分,也就是书中的实验例子的程序。光盘上其它的东西都是垃圾的。