文档详情

《单片机C语言程序设计》课件第四部分 单片机实验基础篇.pptx

发布:2024-12-16约8.25千字共28页下载文档
文本预览下载声明

第四部分单片机实验基础篇

前言C语言主要有三种结构:顺序结构、选择结构、循环结构。不管哪几种结构,所有的程序都是从main函数开始的。本章节通过五个项目的实例讲解,复习第三部分中C语言基础:常量和变量;运算符与表达式;分支语句,包括:if、if-else、switch;循环语句,包括:while、do-while、for;函数的调用等。

4.1LED显示LED是日常生活中运用广泛的显示器件之一,包括LED灯、数码管等。本小节我们通过LED灯程序,学习IO口的位控制、并行操作。【例4.1.1】硬件电路如图4.1.1所示,参数如表4.1.1。设计一个LED闪烁灯:让P1.0为高电平,延时一段时间后,让P1.0为低电平。以此循环就可以让D1闪烁。

表4.1.1序号元件元件参数Proteus中元件名1电阻R1:10K;R2:300欧RES2电容C1:10uF;C2、C3:30PCAP3LEDD1:红色LED-RED4晶振X1:12MCRYSTAL5单片机AT89C51AT89C51

图1.1.2上拉电阻

4.1LED显示#includeREGX52.H//单片机头文件,包含相关特殊寄存器物理映射。voiddelay()//延时程序{unsignedinti=50000;//局部变量i。while(i--);}voidmain(void){while(1)//死循环{P1_0=1;//让P1.0输出高电平,LED灭。delay();//延时函数的调用P1_0=0;//让P1.0输出低电平,LED亮。delay();//延时函数的调用}}//////////////////////////////////////////////////////////////////////////////

此后,双击Proteus中AT89C51,将ProgramFile路径指向KeiluVision4生成的HEX文件,即可在Proteus中看到仿真结果。图4.1.1中单片机18、19脚的晶振电路和9脚的复位电路在仿真中可以不用画出。

4.1LED显示【例4.1.2】为了更好的描述程序与硬件的关系,例4.1.1的程序经常使用sbit、define等语句让程序通俗易懂、方便修改。#includeREGX52.H#defineon0//用define定义on为0,以下所有on都表示为0。#defineoff1//用define定义off为0,以下所有off都表示为1。sbitLED1=P1^0;//用sbit定义LED1为单片机的P1.0引脚voiddelay(void)//延时程序{unsignedinti=50000;//局部变量i。while(i--);}voidmain(void){while(1)//死循环{LED1=off;//让P1.0输出高电平,LED灭。delay();//延时函数的调用LED1=on;//让P1.0输出低电平,LED亮。delay();//延时函数的调用}}

4.1LED显示【例4.1.3】硬件电路如图4.1.3所示,设计一个流水灯程序:让LED从上往下做流水动作,如表格4.1.3所示,用于练习并行口的程序编写。首先让P1值为0xfe,延时一段时间后让P1值为0xfd,以此类推到P1值为0x7f,并以此循环。(图4.1.3中R1是排阻,在Proteus中的元件名为:respack-8。单片机的外部晶振电路、复位电路在仿真中都可省略。)

LEDD7D6D5D4D3D2D1D0P1值P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.00xfe111111100xfd111111010xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7格4.1.3图4.1.3#includeREGX51.Hvoiddelay(void)//延时函数{unsignedinti=50000;//局部变量i。while(i--);}voidmain(){while(1){P1=0xfe;delay();P1=0xfd;delay();P1=0xfb;delay();P1=0xf7;delay();P1=0xef;delay();P1=0xdf;delay();P1=0xbf;delay();P1=0x7f;delay();}}

4.1LED显示【例4.1.4】上例4.1.3中程序可以采用调

显示全部
相似文档