文档库 最新最全的文档下载
当前位置:文档库 › 单片机编程实例大全

单片机编程实例大全

单片机编程实例大全
单片机编程实例大全

单片机35个实例1(汇编)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此, 我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太 大,所以我们在执行某一指令时,插入延时程序,来达到我们 的要求,但这样的延时程序是如何设计呢?下面具体介绍其原 理: 如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒 机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248 =498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002

因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7 =248时,延时10ms,以此为基本的计时单位。如本实验要求 0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如 下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据 发光二极管的单向导电性可知,这时发光二极管L1熄灭;当 P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我 们可以使用SETB P1.0指令使P1.0端口输出高电平,使用 CLR P1.0指令使P1.0端口输出低电平。 5.程序框图

个单片机C语言实例()

11.00-59 秒计时器<利用软件延时) 1.实验任务 如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0 口驱动显示秒时间的十位,而P2 口驱动显示秒时间的个位。2.电路原理图 图 4.11.1 3.系统板上硬件连线 <1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7 端口用8 芯排线连接到“四路静态数码显示模块”区域中的任一个a-h 端口上;要求:P0.0/AD0 对应着a, P0.1/AD1对应着b,……,P0.7/AD7对应着h。 <2.把“单片机系统”区域中的P2.0/A8-P2.7/A15 端口用8 芯排线连接到“四路静态数码显示模块”区域中的任一个a-h 端口上;要求:P2.0/A8 对应着a, P2.1/A9对应着b,……,P2.7/A15对应着h。 4.程序设计内容 tyw 藏书<1.在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加 1 ,当秒计数达到60 时,就自动返回到0,重新秒计数。<2.对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10 整除和对10 求余。 <3.在数码上显示,仍通过查表的方式完成。<4.一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1 秒时间为1 .002 秒。 DELY1S: MOV R5,#100 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET 5.程序框图 tyw 藏书 图 4.11.2 6.汇编源程序 Second EQU 30H ORG 0 START: MOV Second,#00H NEXT: MOV A,Second MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOVC A,@A+DPTR MOV P2,A

单片机

单片机实验 学号:0905074134 姓名:贾亚云 学号:0905074156 姓名:刘昊江 学号:0905074141 姓名:徐海湾 学号:0905074119 姓名:赵皓

实验一:4×4矩阵键盘应用实例 一、实验目的: 学会用单片机做4×4矩阵键盘实验; 学习软件的使用方法及了解其步骤。 二、实验结果图:

三、实验程序: #include #define uint unsigned int #define uchar unsigned char uchar code KEY_TABLE[]={ 0xee,0xde,0xbe,0x7e, 0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77};//键盘表 uchar code TABLE[]={0x3F,0x06,0x5B,0x4F, 0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7c, 0x39,0x5e,0x79,0x71};//共阴极数码管编码表void delayl()//长延时,作点亮数码管用 {uint n=50000;while(n--);} void delays()//短延时,作消振用 {uint n=10000;while(n--);} main() { uchar temp,key,num,i; P2=0; while(1) { P3=0xf0;//置行为0,列为1,读列值。 if(P3!=0xf0)//判断有,无键盘按下 {delays();//消振

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例

第01 篇基础程序设计01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 02 从左到右的流水灯 /* 名称:从左到右的流水灯 说明:接在P0口的8个LED 从左到右循环依次点亮,产生走 马灯效果 */ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) {

while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1); //P2的值向左循环移动

51单片机实验案例2018.3

实验一:实验环境的初识、使用及调试方法实验 一、实验目的 了解单片机的基础知识 了解51单片机的组成和工作方法 认识Proteus软件、Keil软件 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验工具 安装有Proteus和Keil软件的微机、51系列单片机实验板三、实验内容 单片机最小系统的构成图1-1: 图1-1

Keil集成开发环境图1-2: 图1-2

实验二:51单片机外接8个LED案例实验 一、实验目的 了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路 掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项 二、实验工具 安装有Proteus和Keil软件的微机、51系列单片机实验板 三、实验内容 依次显示8盏灯,然后逆序依次显示。 1)设计分析 将P1口的初始值设为11111110(1不亮,0亮),左移7次后变成01111111时;再带位右移7次变成11111110,如此循环,即可实现效果。 2)程序图与程序设计 根据前面分析绘制图2-1所示的流程图,再根据图2-1编写程序。 图2-1

C语言程序: #include #define LED P1 void delay(int); main() { unsigned char i; LED=0xfe; While(1) { for(i=0;i<7;i++) { delay(100); LED=(LED<<1)|0x01; } for(i=0;i<7;i++) { delay(100); LED=(LED>>1)|0x80; } } } void delay(int x) { inti,j; for(i=0;i

单片机实例下载大全

单片机资料下载,省去找资料的麻烦 ,只供学习参考用,下载24内删掉,祝大家学习进步 单片机点阵学习资料 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1703&extra=page%3D1 手把手教你学单片机--教程视频 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1688&extra=page%3D1 力天把手教你学单片机视频教程 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=forumdisplay&fid=110&page=1 谱中单片机开发板例程 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1683&extra=page%3D1 初学单片机的30多个小实验,硬件简单,对初学者有帮助 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1962&extra=page%3D1 用单片机制作的MP3 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1701&extra=page%3D1 51单片机应用开发大全所含100个范例代码及电路图 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1820 学林电子最新图文教程【含28个单片机实例流程图】 https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1959&extra=page%3D1 谱中单片机程序烧录工具STC https://www.wendangku.net/doc/809459120.html,/forum.php?mod=viewthread&tid=1682&extra=page%3D1 吉林大学《单片机技术》32讲

单片机应用实例报告

单片机应用实例报告 零.序 这个学期一开始便接触了《单片微型计算机原理与接口技术》,听说是《微型计算机控制技术实用教程》的基础,对于工科的我来说学以致用无非是一切的一切,虽然还是个该领域的菜鸟,但是单片机之于自动化的意义不言而喻,对于这篇论文,以下开始展开,不足之处谅解。 一.概述 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 关于80C51:该系列单片机是采用高性能的静态80C51 设计由先进CMOS 工艺制造并带有非易失性Flash 程序存储器全部支持12 时钟和 6 时钟操作P89C51X2 和P89C52X2/54X2/58X2 分别包含128 字节和256 字节RAM 32 条I/O 口线 3 个16 位定时/计数器 6 输入4 优先级嵌套中断结构 1 个串行I/O 口可用于多机通信 I/O 扩展或全双工UART以及片内振荡器和时钟电路。此外,由于器件采用了静态设计,可提供很宽的操作频率范围,频率可降至0 。可实现两个由软件选择的节电模式,空闲模式和掉电模式,空闲模式冻结CPU但RAM 定时器,串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作。由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复的。 二.应用领域 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在智能仪器仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、

单片机实验报告含仿真设计

单片机原理及应用课程 实验报告 专业: 班级: : 学号:

实验一、keilC51及proteus软件的使用 一、实验目的: 1、掌握keil和proteus软件的基本操作 2、通过具体实例掌握keil和proteus软件的使用。 二、实验原理: keil使用步骤,proteus使用步骤 三、程序: 四、实验结果分析: 五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus 软件进行仿真的步骤。

实验二、并行输入/输出接口实验 一、实验目的: 1、进一步熟悉keil仿真软件、proteus仿真软件的使用。 2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。 3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式 0 扩展并行 i/0 接口:利用方式 1 实现点对点的双机通信;利用方式 2 或方式 3 实现多机通信。利用方式 0 扩展并行 i/0 接口 MCS 5 1 单片机的串行口在方式 0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。 三、程序: #include sbit P1_0=P1^0; void main() { unsigned char i; unsigned int j; SCON=0x00; i=0x01; for(;;) {

P1_0=0; SBUF=I; while(!TI) {i} P1_0=1;TI=0; for(j=0;j<=254;j++){;} i=i*2; if(i==0x00) i=0x01; } } 四、实验结果分析: 五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

单片机实验三示例

实验报告: 实训题目:单片机原理与应用实训 院系:计算机系 专业:科学与技术_% 班级: B100505 学号: B 姓名:张涛 指导教师:董锦凤

' Switches & Relays BUT BUTTON 图实验1的电路原理图 【设计程序】 #include<> sbit P3_7=P3^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char count; 。 void delay(unsigned int time){ unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++); } void main(void) { count=0; P0=table[count/10]; P2=table[count%10]; while(1){ if(P3_7==0){ )

delay(10); if(P3_7==0){ count++; if(count==100) count=0; P0=table[count/10]; P2=table[count%10]; while(P3_7==0); } } } @ } 【运行结果】

姓名张涛 系部计算机系班级B100505学号^ B 课程名称单片机原理及应用实验日期 实验名称LED指示灯循环控制成绩 % 【实验目的】 熟悉uVision3编译软件,掌握C51编程与调试方法。 【实验原理】 图为LED指示灯循环控制电路原理图。图中LED指示灯外接于P0口。由于P0口作为I/O口使用时是漏极开路的,需要外接上拉电阻,因而图中还加有8只100Ω的电阻。图中的时钟电路和复位电路与实验1相同。 程序启动后,8只发光二极管做循环点亮控制,其中灯亮顺序为→→→……→……,无限循环,两次LED亮的时间间隔约。

个单片机实例(包括框图和程序)

13.动态数码显示技术 1.实验任务 如图4.13.1所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。 2.电路原理图 图4.13.1 3.系统板上硬件连线 (1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;

(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3.把“单片机系统”区域中的P1.7端口用导线连接到“独立式键盘”区域中的SP1端口上; 4.程序设计内容 (1.动态扫描方法 动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。 (2.在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。 (3.对于显示的字形码数据我们采用查表方法来完成。 5.程序框图 图4.13.2

6.汇编源程序 ORG 00H START: JB P1.7,DIR1 MOV DPTR,#TABLE1 SJMP DIR DIR1: MOV DPTR,#TABLE2 DIR: MOV R0,#00H MOV R1,#01H NEXT: MOV A,R0 MOVC A,@A+DPTR MOV P0,A MOV A,R1 MOV P2,A LCALL DAY INC R0 RL A MOV R1,A CJNE R1,#0DFH,NEXT SJMP START DAY: MOV R6,#4 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET TABLE1: DB 06H,5BH,4FH,66H,6DH TABLE2: DB 78H,79H,38H,38H,3FH END 7. C语言源程序 #include unsigned char code table1[]={0x06,0x5b,0x4f,0x66,0x6d}; unsigned char code table2[]={0x78,0x79,0x38,0x38,0x3f}; unsigned char i; unsigned char a,b; unsigned char temp; void main(void) { while(1) { temp=0xfe; for(i=0;i<5;i++) { if(P1_7==1)

51单片机入门实例

13.动态数码显示技术 14 4× 4 矩阵式键盘识别技术 15.定时计数器T0 作定时应用技术(一) 13.动态数码显示技术 1.实验任务 如图4.13.1 所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7 接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。 2.电路原理图

图4.13.1 3.系统板上硬件连线 (1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7 用8 芯排线连接到“动态数码显示”区域中的a-h 端口上; (2.把“单片机系统”区域中的P2.0/A8-P2.7/A15 用8 芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3.把“单片机系统”区域中的P1.7 端口用导线连接到“独立式键盘”区域中的SP1端口上; 4.程序设计内容 (1.动态扫描方法

动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。 (2.在进行数码显示的时候,要对显示单元开辟8 个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。 (3.对于显示的字形码数据我们采用查表方法来完成。 5.程序框图 图4.13.2 6.汇编源程序 ORG 00H START: JB P1.7,DIR1 MOV DPTR,#TABLE1 SJMP DIR DIR1: MOV DPTR,#TABLE2 DIR: MOV R0,#00H MOV R1,#01H NEXT: MOV A,R0 MOVC A,@A+DPTR

51单片机实例(含详细代码说明)

1 ?实验任务 如图4.1.1所示:在端口上接一个发光二极管L1,使L1在不停地一亮一灭, 亮一灭的时间间隔为秒。 2. 电路原理图 图 4.1.1 3. 系统板上硬件连线把“单片机系统”区域中的端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上 4. 程序设计内容 (1).延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为秒,相对于微秒来说,相差太大,所以我们在执行 某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢下面具体介绍其原理: 1 ?闪烁灯 13 FO OJADQ FO 1 /AD] FO.2/AD2 FCi 3j*AOTi PO 4/AE>4 FtJ.6fAO& i^U.7/AD7 五尿5¥尸二 7/Jk 1 J5 尸N G/-A 1 ■* J - i/JL U P2 /IfA 1 J RZ W 1 1 g 3劇in P3 L/A91 F3 G/AH F-Ji CJ/I2CD I rTZK G pj 3/1H T1 P^JS/T 1 £/暫冠 理 监 居 . ■ V 11111111 PPP沪厂JLH甘 r3Hb

如图4.1.1所示的石英晶体为12MHz因此,1个机器周期为1微秒机器周期微秒 = ___________ ___________ MOV R6,#20 2 个2 L ______ D1: MOVR7,#248 2 个2 2+ 2X 248= 498 20X =— DJNZ R7,$ 2 个2X 248 (498 DJNZ R6,D1 2 个2X 20= 40 10002 因此,上面的延时程序时间为。 由以上可知,当R6= 10、R7= 248时,延时5ms R6= 20、R7= 248时, 延时10ms,以此为基本的计时单位。如本实验要求秒=200ms 10m X R5 =200ms贝U R5= 20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET

单片机实例

1.闪烁灯1.实验任务 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理: 机器周期微秒 MOVR6,#202个 2 D1:MOVR7,#2482个22+2×248=49820×DJNZR7,$2个2×248(498 DJNZR6,D12个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248 时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY:MOVR5,#20 D1:MOVR6,#20 D2:MOVR7,#248 DJNZR7,$ DJNZR6,D2 DJNZR5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电 平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令 使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电 平。 5.程序框图 图4.1.2

单片机实例1-12

单片机实例1-12

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248=498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极 管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电 平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令 使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。5.程序框图 如图4.1.2所示

51单片机入门实验及示例程序

实验题 1、由按键S1产生外部中断1,S1按一次L0、L 2、L4、L6亮,再按一次L1、L 3、L5、L7 亮。 2、由按键S1产生外部中断1控制T0启停,T0产生100ms定时,使4个数码管循环显示 0中的一段,每段显示时间为1S。 3、T1工作于方式2,产生250uS精确定时,产生0~9秒计时,并显示在数码管上。 4、串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的任何字符,都立 刻转发给PC。 5、串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的‘0’~‘9’,回 送0~9,当收到‘a’~‘z’时回送‘A’~‘Z’。 6、串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的‘1’,回送字符 串“Start”,并启动T0产生1S的方波控制L0~L7闪烁,当收到‘2’时回送字符串“Stop”,并停止控制L0~L7。 7、串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的‘Start’,回送 字符串“Ok1”,并启动T0产生1S的方波控制L0~L7闪烁,当收到‘Stop’时回送字符串“Ok2”,并停止控制L0~L7。 8、当S1工作于独立按键方式时(需考虑按键抖动,软件滤波),按第1次,L0~L3以0.5 秒为周期闪烁,串口以9600bps波特率发送字符‘1’一次,按第2次,L4~L7以1秒为周期闪烁,串口以9600bps波特率发送字符‘2’一次,按第3次,L0~L7以2秒为周期闪烁,串口以9600bps波特率发送字符‘3’一次。再按一次回到第一次的模式,如此循环。 本人自己写的示例程序,验证可用,仅供参考学习用: 附部分原理图:

51单片机新手入门实例详解

51单片机新手入门实例详解 1.硬件和软件准备 实验系统:EL89C单片机学习开发系统一套 电脑:具有标准串口的台式机或笔记本电脑,如果没有串口也可购 买一条USB转串口线代替 工具软件:Keil uVision2(用于编写和编译源程序、仿真调试); 光盘上非安装烧写软件,路径 \单片机EL89C\EL89C光盘\STC52单片机下载程序\\ (EL89C的编程控制烧写软件) 2.| 3.源程序编写和编译 EL89C的8个发光二极管负极通过限流电阻接入单片机的~端口,下面的范例程序可以使这8个发光二极管轮流点亮,形成流水灯效果。 我们使用的开发工具是Keil C51,是目前世界上最优秀、最强大的51单片机应用平台之一,它集编辑、编译、仿真调试于一体,支持汇编、C语言以及混合编程。同时具备功能强大的软件仿真和硬件仿真功能。 下面以一个简单的流水灯程序为例子来介绍Keil C51的使用方法: 2.1首先在硬盘上建立一个文件夹,命名为ledtest(当然可以是其他名字),为 方便程序的编写和调试,我们将调试过程中产生的文件都将放在这个目录中。 2.2启动Keil软件,点击菜单project,选择new project,然后选择你要保存的 路径,输入工程文件的名字,我们现在保存到刚才建立的ledtest目录中,工程文件命名为ledtest,然后点击保存。 2.3这时会弹出下面的对话框Select Device for Target,要求你为刚才的项目选 择一个CPU。我们选择Atmel的AT89C52,如图所示,选择AT89C52之后,右边一栏是对这个单片机的基本的说明,然后点击确定。

单片机实例1-12

1 ? 实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一 灭,一亮一灭的时间间隔为0.2秒。 2. 电路原理图 VI 6 | 一|口戶 =■ 2MHa= 图 4.1.1 3. 系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模 块”区域中的L1端口上。 4. 程序设计内容 (1) ?延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理: 1 ?闪烁灯 oarol rr- 1OK 方 rJ *H:5&-7 r'PPGGFILP -eu C-3 jMJp — 匸: 第7::iI □ 1 H 34 3 3 3 3 3 rp PF P m ■^53 "33- - X 嵐感 £ / / 1 7扫二井_3工 「亠 二□N 2 rla F rr^ppr s 27 ” "^5~ 二 o

如图4.1.1所示的石英晶体为12MHz 因此,1个机器周期为1微秒 机器周期微秒 MOV R6,#20 2 个 2 DJNZ R7,$ 2 个 2X 248 DJNZ R6,D1 2 个 2X 20= 40 10002 因此,上面的延时程序时间为10.002ms 。 由以上可知,当 R6= 10、R7= 248时,延时5ms R6= 20、R7= 248时, 延时10ms ,以此为基本的计时单位。如本实验要求 0.2秒=200ms 10ms X R5= 200ms 贝U R5= 20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0 = 1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平, 即P1.0 = 0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5. 程序框图 如图4.1.2所示 D1: MOVR7,#248 2 个 2 2+ 2X 248= 498 20X (498

单片机C语言编程例

精心整理 目录 实例3:用单片机控制第一个灯亮 ........... 错误!未指定书签。 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率错误!未指定书签。 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能错误!未指 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例17:"万能逻辑电路"实验 .............. 错误!未指定书签。 实例18:用右移运算流水点亮P1口8位LED .. 错误!未指定书签。 实例19:用if语句控制P0口8位LED的流水方向错误!未指定书签。 实例20:用swtich语句的控制P0口8位LED的点亮状态错误!未指定书签。 实例21:用for语句控制蜂鸣器鸣笛次数 .... 错误!未指定书签。

实例22:用while语句控制LED ............. 错误!未指定书签。 实例23:用do-while语句控制P0口8位LED流水点亮错误!未指定书签。实例24:用字符型数组控制P0口8位LED流水点亮错误!未指定书签。 实例25:用P0口显示字符串常量 ........... 错误!未指定书签。 实例26:用P0口显示指针运算结果 ......... 错误!未指定书签。 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例40:宏定义应用举例2 ................. 错误!未指定书签。 实例41:宏定义应用举例3 ................. 错误!未指定书签。 实例42:用定时器T0查询方式P2口8位控制LED闪烁错误!未指定书签。实例43:用定时器T1查询方式控制单片机发出1KHz音频错误!未指定书签。实例44:将计数器T0计数的结果送P1口8位LED显示错误!未指定书签。

51单片机10个典型实验

1.闪烁灯 2.广告灯的左移右移 3.广告灯(利用取表方式) 4.I/O并行口直接驱动LED显示 5.按键识别方法 6.动态数码显示技术 7.4×4矩阵式键盘识别技术 8.定时计数器T0作定时应用技术(一) 9.定时计数器T0作定时应用技术(二) 10.数字电子钟 1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理: 如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个机器周期 2 D1: MOV R7,#248 2个机器周期 2 2+2×248=498 20× DJNZ R7,$ 2个机器周期2×248 498 DJNZ R6,D1 2个机器周期2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时, 延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电 平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管 L1熄灭;当P1.0端口输出低电平,即 P1.0=0时,发光二极管L1亮;我们 可以使用SETB P1.0指令使P1.0端口 输出高电平,使用CLR P1.0指令使

单片机c语言编程实例大全

学习单片机, //实例1:用单片机控制第一个灯亮 更多单片机学习视频教程,protues仿真电路图,keil程序免费下载网址: #include //包含51单片机寄存器定义的头文件 void main(void) { P1=0xfe; //P1=1111 1110B,即P1.0输出低电平 } //实例2:用单片机控制一个灯闪烁:认识单片机的工作频率 更多单片机学习视频教程,protues仿真电路图,keil程序免费下载网址: #include //包含单片机寄存器的头文件 / 函数功能:延时一段时间 / void delay(void) //两个void意思分别为无需返回值,没有参数传递{ unsigned int i; //定义无符号整数,最大取值范围65535 for(i=0;i<20000;i++) //做20000次空循环 ; //什么也不做,等待一个机器周期 } / 函数功能:主函数(C语言规定必须有也只能有1个主函数) / void main(void) { while(1) //无限循环 { P1=0xfe; //P1=1111 1110B,P1.0输出低电平 delay(); //延时一段时间 P1=0xff; //P1=1111 1111B,P1.0输出高电平 delay(); //延时一段时间 } } //实例3:将P1口状态分别送入P0、P2、P3口:认识I/O口 的引脚功能 #include //包含单片机寄存器的头文件

/ 函数功能:主函数(C语言规定必须有也只能有1个主函数) / void main(void) { while(1) //无限循环 { P1=0xff; // P1=1111 1111B,熄灭LED P0=P1; // 将P1口状态送入P0口 P2=P1; // 将P1口状态送入P2口 P3=P1; // 将P1口状态送入P3口 } } //实例4:使用P3口流水点亮8位LED #include //包含单片机寄存器的头文件 / 函数功能:延时一段时间 / void delay(void) { unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ; } / 函数功能:主函数 / void main(void) { while(1) { P3=0xfe; //第一个灯亮 delay(); //调用延时函数 P3=0xfd; //第二个灯亮 delay(); //调用延时函数 P3=0xfb; //第三个灯亮 delay(); //调用延时函数 P3=0xf7; //第四个灯亮 delay(); //调用延时函数 P3=0xef; //第五个灯亮 delay(); //调用延时函数

(仅供参考)51单片机实例-控制LED-灯的亮和灭

第一课,了解单片机及单片机的控制原理和DX516的用法,控制一个LED灯的亮和灭 本章学习内容: 单片机基本原理,如何使用DX516仿真器,如何编程点亮和灭掉一个LED灯,如何进入KEILC51uV 调试环境,如何使用单步,断点,全速,停止的调试方法 聂小猛 2006年6月 单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需要学习单片机。可以说,掌握了单片机开发,就多了一个饭碗。 51单片机已经有30多年的历史了,在中国,高校的单片机课程大多数都是51,而51经过这么多年的发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。而国内书店的单片机专架上,也大多数都是51系列。可以预见,51单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的数十年内是不可能会消失的。 作为一个初学者,如何单片机入门?需要那些知识和设备呢?知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以快速入门,自学过这2门课程的高中生也够条件。 就算你没有学过单片机课程,只掌握了C语言的皮毛,通过本系列的教程,您也会逐渐的进入单片机的大门。当然在学习的过程中,您还是必须多去研读单片机书籍,了解他们的基本结构及工作方式。 下面以51为例来了解一下单片机是什么东西,控制原理又是什么? 在数字电路中,电压信号只有两种情况,高电平和低电平,用数字来记录就是1和0。单片机内部的CPU,寄存器,总线等等结构都是通过1和0两种信号来运作的,数据也是以1或者0来保存的。单片机的输入输出管脚,也就是IO口,也是只输出或识别1和0两种信号,也就是高电平和低电平。当单片机输出一个或一组电平信号到IO口后,外部的设备就可以读到这些信号,并进行相应操作,这就是单片机对外部的控制。当外部一个或一组电平信号送到单片机的IO口时,单片机也可以读到这些信号,并进行分析操作,这就是单片机对外部设备信号的读取。当然实际的操作中,这些信号可能十分复杂,必须严格地按照规定的时间顺序(时序)输入输出。每种设备也都规定了自己的时序,只要都严格遵守,就可以控制任何设备,做出只要你想象得出的任何事情。 您可能会再问,我如何让单片机去控制和分析外部设备呢?答案是程序,您可以编写相关的程序,并且把他们烧写到单片机内部的程序空间,单片机在上电时,就会一步一步按照您写的程序去执行指令,做您想做的事情。 在51标准芯片中,有32个输入输出IO,分为4组,每组8个,分别为P0口,P1口,P2口,P3口。P1口的8条脚就用P1.0至P1.7表示,其余类似。51就是用这32个口来完成所有外部操作的。对于51的内部结构,如果您已经了解,那是最好;如果不懂,也可以先放下,在完成了本教程开始的几个章节之后,您就会大有兴趣,自己去寻找资料阅读了。当然,如果您希望成为一个优秀的单片机开发程序员,还是必须熟悉单片机的内部结构及工作原理,切不可偷懒! 在这一章,您将用程序去控制一个LED发光管的亮和灭。你应该知道,LED发光管在通过一定电流时亮,不通电就灭。为了不让LED通过太大的电流把它烧坏,我们还要串上限流电阻。51的IO是弱上拉的方式,在输出高电平时,只能输出几十微安的电流到地,而在输出低电平时,VCC电源可以输入几十毫安的电流到IO。一般LED需要10毫安左右电流点亮,我们就将LED接在电源VCC和IO口之间,中间串上电阻,当IO输出低电平时,灯就亮了,反之,灯就灭了。我们在这个程序里要控制的是P1.0。请参考一下我们将要使用的试验板的电路图,这个试验板是在购买dx516仿真器是赠送的。

相关文档
相关文档 最新文档