单片机应用系统设计实例

合集下载

单片机应用系统设计实例

单片机应用系统设计实例
5.2软件设计
初始化:
uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段码组合,共阴极
uchar m=0; //计数循环变量
uint n=0; //计数值
3
2
1
void timer0(void) interrupt 1 { TH0=0x3C; TL0=0xB0; m++; if(m==19) {m=0; n++; P1_0=~P1_0; } }
05
中断初始化
06
延时功能
07
中断服务程序设计
3.2软件设计
中断服务程序设计
中断初始化
触发方式设置
中断允许控制
中断初始化
IT0=1;
EA=1;
EX0=1;
中断服务程序
函数名()interrupt n [using m ]
{ }
Void int0(void) interrupt 0
/* 外部中断0的服务函数定义,使用第二组工作寄存器组*/
}
如何设计硬件和软件?
用1个LED发光二极管,设计一个循环闪烁的指示灯。
注意:在接下来的仿真中,省略时钟及复位电路。
1.2软件设计
01
初始化
02
51头文件、宏定义
03
主程序,即main()程序
04
灯的亮灭控制
05
延时功能
06
延时子程序设计
void main(void) { while(1) { P1_0=0; delay(5000); P1_0=1; delay(5000); } }

单片机应用设计实例

单片机应用设计实例

数控调频发射台的设计题目:基于单片机的数控调频发射台功能:本数控调频发射器可在80.0 MHZ 至109.9MHZ 范围内任意设置发射频率,可预置11 个频道,发射频率调整最小值为0.1MHZ,具有单声道/立体声控制,可广泛应用于学校无线广播、电视现场导播、汽车航行、无线演说等场所。

设计过程:一、系统硬件电路的设计(1)单片机控制部分单片机采用AT89C52,采用最小化应用系统设计,P0 口和P2 口作为共阳LED 数码管驱动用,P1 口作为16 键的键盘接口,其中T0—T3 分别为百位、十位、个位、小数位的频率操作键。

百位数只能是0 或1,当百位数为0 时,十位数为8 或9。

当百位数为1 时,十位数只能为0。

个位及小数位为09之中任意数。

T4—T14 为发射频率预置键, T15 为单声道/立体声控制键。

P3.0、P3.1、P3.2 作为与BH1415 的通讯端口,用于传送发射频率控制数据,P3.3 用于立体声发射批示。

采用12MHZ 晶振,模拟串口通讯。

单片机控制部分电路如下图一。

(2)调频调制发射部分采用Rohm 公司最新生产的调频发射专用集成电路BH1415F,内含立体声信号调制、调频广播信号发射电路,BH1415F 内有前置补偿电路、限制器电路、低通滤波电路等,因此具有良好的音色,内置PLL 系统调频发射电路,传输频率非常稳定。

调频发射频率可用单片机通过串行口直接控制。

BH1415F 各引脚的功能如表1,应用电路如图2。

从11 脚输出的调频调制信号经高频放大后由天线发射输出,后级高频放大器的功率可根据接收的距离范围考虑。

BH1415F 的频率控制码为16 位,其传送格式要求如图5,其中D0—D10 为频率控制数据,其值乘0.1 即为BH1415F 的输出频率(单位MHZ)。

D11—D15 为控制位,其中D11(MONO)位为单声道/立体声控制位,0 时为单声道发射模式,1时为立体声发射模式。

第6章 单片机应用系统设计实例

第6章  单片机应用系统设计实例

定时器中断子 程序流程图
主要程序举例 正弦波离散输出表:
uchar code sine_tab[256]={ //输出电压从0到最大值(正弦波1/4部分) 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c, 0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc, 0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0x d8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec, 0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0 xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, //输出电压从最大值到0(正弦波1/4部分) 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0 xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,
第六章 单片机应用系统设计实例
6.1 6.2 6.3 6.4 6.5 8051系列单片机实现计算器功能 简易波形发生器 简易广告屏设计 寻迹小车的设计 无线呼叫系统设计
6.1 8051单片机实现计算器功能
一 设计目标和实现方法
满足计算器要求,进行加减乘除运算; 打开计数器时,初始显示数字为0123; 实现简单的数据运算,不支持连续运算; 仿真和调试要用到Protues 和Keil 软件。
四 软件设计
模块化程序设计是单片机应用中最常用的 程序设计方法; 模块化程序设计的中心思想是把一个复杂 应用程序按整体功能划分成若干相对独立 的程序模块,各模块可以单独 设计,编程和 调试,然后组合起来; 本系统的程序模块主要分为主程序,键值 获取程序和处理子程序等,其流程图分别 如下图所示:

第11章 单片机应用系统设计实例1

第11章 单片机应用系统设计实例1

11.1.2 系统硬件电路的设计
11.1.3 系统软件程序的设计
电子时钟的软件系统由主程序和子程序组成, 电子时钟的软件系统由主程序和子程序组成, 主程序 组成 主程序程序包含初始化参数设置、按键处理、 主程序程序包含初始化参数设置、按键处理、数码 管显示模块等, 管显示模块等,在设计时各个模块都采用子程序结 构设计,在主程序中调用。由于定时器/计数器采 构设计,在主程序中调用。由于定时器 计数器采 用中断方式处理,因此还要编写定时器/中断服务 用中断方式处理,因此还要编写定时器 中断服务 子程序,在定时器/计数器中断服务程序中对时钟 子程序,在定时器 计数器中断服务程序中对时钟 进行调整。 进行调整。
11.2.2
系统硬件电路的设计
11.2.3
一.主程序
系统软件程序的设计
主程序包含初始化部分、调用 转换子程序和调用显示程序, 主程序包含初始化部分、调用A/D转换子程序和调用显示程序, 转换子程序和调用显示程序 如下图。 如下图。初始化包含存放通道数据的缓冲区初始化和显示缓冲区初 始化。另外,对于单路显示和循环显示, 始化。另外,对于单路显示和循环显示,系统设置了一个标志位 00H控制,初始化时 控制, 位设置为0,默认为循环显示,当它为1时 控制 初始化时00H位设置为 ,默认为循环显示,当它为 时 位设置为 改变为单路显示控制, 位通过单路/循环按键控制 改变为单路显示控制,00H位通过单路 循环按键控制。 位通过单路 循环按键控制。
开始
一.主程序 主程序执行流程如 图,主程序先对显示 单元和定时器/计数器 单元和定时器 计数器 初始化, 初始化,然后重复调 用数码管显示模块和 按键处理模块, 按键处理模块,当有 键按下, 键按下,则转入相应 的功能程序。 的功能程序。

35个单片机设计应用实例

35个单片机设计应用实例

图 4.2.2
void main(void) { while(1) { if(K1==0) { L1=0; //灯亮 } else { L1=1; //灯灭 } } }
3. 多路开关状态指示
1. 实验任务
如图 4.3.1 所示,AT89S51 单片机的 P1.0-P1.3 接四个发光二极管 L1-L4, P1.4-P1.7 接了四个开关 K1-K4,编程将开关的状态反映到发光二极管上。 (开关闭合,对应的灯亮,开关断开,对应的灯灭)。
因此在按键按下的时候图482要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉一般情况下我们可以采用电容来滤除掉这些干扰信号但实际上会增加硬件成本及硬件电路的体积这是我们不希望总得有个办法解决这个问题因此我们可以采用软件滤波的方法去除这些干扰信号一般情况下一个按键按下的时候总是在按下的时刻存在着一定的干扰信号按下之后就基本上进入了稳定的状态
(2. 输出控制
根据开关的状态,由发光二极管 L1-L4 来指示,我们可以用 SETB P1.X 和 CLR P1.X 指令来完成,也可以采用 MOV P1,#1111XXXXB 方法一次指示。
5. 程序框图
<![endif]-->
读 P1 口数据到 ACC 中
ACC 内容右移 4 次 ACC 内容与 F0H 相或 ACC 内容送入 P1 口
void main(void) { while(1) { L1=0; delay02s();
L1=1; delay02s(); } }
2. 模拟开关灯 1. 实验任务
如图 4.2.1 所示,监视开关 K1(接在 P3.0 端口上),用发光二极管 L1(接 在单片机 P1.0 端口上)显示开关状态,如果开关合上,L1 亮,开关打开, L1 熄灭。 2. 电路原理图

单元7 单片机应用系统设计举例

单元7 单片机应用系统设计举例

单元七单片机应用系统设计举例7.1 潜水泵自动控制保护器 (1)7.2 可调速加热炉控制器 (4)7.1 潜水泵自动控制保护器〖任务描述〗:潜水泵自动控制保护器具有两大功能,第一是保护功能:能在泵体缺水时实施自动保护,并能根据预设时间自动恢复工作。

第二是自动控制功能:能根据水塔水位,自动启停水泵。

7.1.1总体设计1.需求分析(1)需求获取本项目最早由一家专门生产潜水泵的厂家提出,该厂家在生产和销售过程中,不断接到用户反馈潜水泵烧坏,主要原因是在抽水过程中,由于水源来水不足,潜水泵干抽烧坏,所以提出开发一种保护装置,就有了最初的潜水泵自动控制保护器项目的需求,再根据实际中,许多情况是给水塔抽水,这样就要知道水塔缺水和水满情况,还有在广大农村有时要计时抽水,这样就确定最后方案。

(2)设计开发任务书本项目是一个很小的项目,开发人员为:项目负责人一名、一名软件工程师、一名硬件工程师、一名技术员。

项目负责人负责协调各人员工作和检查进度,软件工程师负责程序设计,硬件工程师负责硬件原理图及PCB板设计,技术人员负责原器件购买、测试和组装工作。

2.方案设计采用89C2051单片机控制、二个键(K1、K2)用来起动水泵前的参数设置,水位器:(三个)水池上水位器、水池下水位器、潜水泵水位器,用来检测水位保证水泵正常工作,该保护器有两种工作模式,一种是自动控制模式,主要用在对水塔抽水,另一种是定时工作模式主要应用在计时抽水。

3.测试计划硬件测试:主要测试各部分硬件是否能正常工作,每部分通过简单程序来检测。

软件测试:测试软件是否符合设计要求、是否存在BUG。

7.1.2详细设计1.硬件设计:(1)主要原器件:89C2051 一片、78L05一个、LED 3个、按键二个、水位检测器三个、MOC3020一个、变压器一个、及电阻、电容、三极管、灯等若干。

(2)原理图:SHAPE \* MERGEFORMAT LED 工作原理及动态显示:本项目采用的是共阳极的3个LED 数码管,要点亮某个数码管的某笔划,则相应的数码管阳极加+5V 电源,相应笔划的阴极端接低电平,本方案三个数码管阴极是相连的,所以在阳极必须轮流有效,只要时间合理,在人的视觉就会看到同时亮的结果。

51单片机技术与应用系统开发案例精选

51单片机技术与应用系统开发案例精选

51单片机技术与应用系统开发案例精选随着科技的不断进步和发展,单片机技术已经在各个领域得到了广泛的应用。

单片机技术作为嵌入式系统的核心,具有体积小、功耗低、成本低等特点,因此在自动化控制、电子产品、通信设备等领域都有着重要的应用价值。

本文将从多个案例出发,介绍一些51单片机技术的应用系统开发案例,以期帮助读者更好地了解单片机技术的应用和发展。

1. 智能家居系统智能家居系统是当今物联网技术中的热门应用之一,而单片机技术在智能家居系统中扮演着重要的角色。

通过使用51单片机,可以实现家庭灯光、空调、窗帘等设备的远程控制,从而提高家居的智能化水平。

通过单片机技术,还可以实现家庭安防系统的监控和报警功能,保障家庭成员的安全。

2. 工业控制系统在工业领域,单片机技术也有着广泛的应用。

在自动化生产线上,通过单片机可以实现对设备运行状态的实时监测和控制,提高生产效率和产品质量。

单片机技术还可以应用于温度、湿度、压力等参数的采集和控制,为工业生产提供可靠的技术支持。

3. 智能交通系统随着城市交通的不断发展以及车辆数量的持续增加,智能交通系统的需求也日益凸显。

通过单片机技术,可以实现智能交通信号灯的控制、车辆导航系统的优化等功能,提高交通系统的智能化水平,减少交通拥堵和交通事故的发生。

4. 医疗器械在医疗器械领域,单片机技术应用也十分广泛。

通过单片机可以实现医疗设备的精准控制和监测,比如体温计、血压计、心电图仪等设备,都可以通过单片机实现对生理参数的准确测量和分析,为临床诊断提供可靠的数据支持。

5. 智能手环智能手环作为一种智能可穿戴设备,通过内置的传感器和单片机芯片,可以实现对用户的健康数据进行实时监测和分析,比如步数、心率、睡眠质量等。

通过单片机技术,可以实现智能手环与手机的蓝牙通信,将用户的健康数据同步到手机App上,为用户提供科学的健康管理方案。

通过以上案例的介绍,我们可以看出,51单片机技术在各个领域都有着重要的应用价值,为各行业的发展提供了强大的技术支持。

单片机应用系统课程设计实例

单片机应用系统课程设计实例

数字钟设计实例利用AT89C51的定时器和6位7段数码管,设计一个电子时钟,显示格式“XX XX XX”,从左向右分别是:时、分、秒1、硬件设计2、软件设计说明:定时器每1000us中断一次,在中断服务程序中,对中断次数计数,100us计数10000次就是1s,然后再对秒计数得到分和小时,并送入显示缓存。

LEDBUF EQU 30H ;显示码缓存区HOUR EQU 40HMINUTE EQU 41HSECOND EQU 42HC100us EQU 43HTICK EQU 10000 ;置中断次数T100us EQU 256-100 ;置定时器初始值LJMP START ;跳转至主程序ORG 000BH ;定时器0中断入口T0INT: PUSH PSW ;状态保护PUSH ACCMOV A,C100us+1JNZ GOON ;计数值是否为0DEC C100usGOON: DEC C100us+1MOV A,C100usORL A,C100us+1JNZ EXITMOV C100us,#HIGH(TICK) ;重置计数值MOV C100us+1,#LOW(TICK)INC SECOND ;秒值加一MOV A,SECONDCJNE A,#60,EXIT ;判断秒值是否为60MOV SECOND,#0 ;秒值为60,则清0INC MINUTE ;分值加一MOV A,MINUTECJNE A,#60,EXIT ;判断分值是否为60MOV MINUTE,#0 ;分值为60,则清0INC HOUR ;小时值加一MOV A,HOURCJNE A,#24,EXIT ;判断小时值是否为24MOV HOUR,#0 ;小时值为24,则清0 EXIT: POP ACCPOP PSWRETIDELAY: ;延时子程序MOV R7,#0FFHDELAYLOOP:DJNZ R7,DELAYLOOPDJNZ R6,DELAYLOOPRETLEDMAP: DB 3FH,06H,5BH,4FH ;八段数码管显示码DB 66H,6DH,7DH,07HDB 7FH,6FH,77H,7CHDB 39H,5EH,79H,71HDISPLAYLED:MOV R0,#LEDBUFMOV R1,#6 ;共6个八段管MOV R2,#B ;位扫描码初值LOOP: MOV A,#0MOV P0,A ;关所有八段管MOV A,@R0MOV P0,AMOV A,R2MOV P3,A ;显示一位八段管MOV R6,#01HCALL DELAYMOV A,R2 ;显示下一位RR AMOV R2,AINC R0DJNZ R1,LOOPRETT0LED: MOV DPTR,#LEDMAP ;将字段码转换显示码MOVC A,@A+DPTRRETSTART: MOV TMOD,#02H ;定时器工作方式2 MOV TH0,#T100us ;置定时器初始值MOV TL0,#T100usMOV IE,#B ;EA=1,IT0=1MOV HOUR,#0 ;显示初始值MOV MINUTE,#0MOV SECOND,#0MOV C100us,#HIGH(TICK)MOV C100us+1,#LOW(TICK)SETB TR0 ;启动定时器0MLOOP: MOV A,HOUR ;显示小时值十位MOV B,#10DIV ABCALL T0LEDMOV LEDBUF,A ;将十位值送显示码缓存区MOV A,B ;显示小时值个位CALL T0LEDORL A,#80H ;显示小数点MOV LEDBUF+1,A ;送显示码缓存区MOV A,MINUTE ;显示分钟值十位MOV B,#10DIV ABCALL T0LEDMOV LEDBUF+2,A ;将十位值送显示码缓存区MOV A,B ;显示分钟个位值CALL T0LEDORL A,#80H ;显示小数点MOV LEDBUF+3,A ;送显示码缓存区MOV A,SECONDMOV B,#10 ;显示秒十位值DIV ABCALL T0LEDMOV LEDBUF+4,A ;送显示码缓存区MOV A,BCALL T0LEDMOV LEDBUF+5,ACALL DISPLAYLED ;调用显示子程序LJMP MLOOPEND。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



#include <INTRINS.H> uchar _crol_(uchar a,uchar n);

/*函数原型,左循环*/
/*函数原型,右循环*/

uchar _cror_(uchar a,uchar n);

#include <INTRINS.H> uchar _crol_(uchar a,uchar n); uchar _cror_(uchar a,uchar n); void main(void) { uint a = 0xfe; while(1) { P1=a; delay(5000); a=_crol_(a,1); } } /*函数原型*/ /*函数原型,右循环*/
公选课
——《单片机基础及应用》
设计实例

1、用1个LED发光二极管,设计一个循环闪烁的指示 灯。
2、用8个LED发光二极管,设计一个循环闪烁的流水 灯。 4、通过定时,精确控制P1.0闪烁500ms。


3、通过设置中断,改变灯的循环方向,控制灯的亮灭。

5、以秒为单位,用LED数码管显示当前计数值。







void int0(void) interrupt 0 { uchar a=0xfe,i=16; P1=0x0; delay(5000); P1=0x0ff; delay(5000); P1=0x0; delay(5000); P1=0x0ff; delay(5000); do { P1=a; delay(5000); a=_cror_(a,1); }while(i--); }
void delay(uint t);

//声明函数
void delay(uint t) //延时0.1*t毫秒 { uint i; do { for(i=0;i<10;i++) ; } while(t--); }




void main(void) { while(1) { P1_0=0; delay(5000); P1_0=1; delay(5000); } }

4)相关的特殊功能寄存器
TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。
IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效.
h g f e d c b a
a f e d g b c h
☞比如要显示“0” 须令a b c d e f 为“0” 电平,g h为“1”电平。
共阳极
累加器 A h g f e d c b a
1 1 0 0 0 0 0 0
0C0H = “0”


管脚识别小技巧: 用万用表测一下就可以了。数码管分为共阴极 和共阳极。以共阴极为例: 先用万用表的正极(对于数字万用表为红色表 笔)放在某一个管脚,另外一个负极依次去测 量其他管脚。若没有一个管脚亮,说明正极接 的是公共端(COM)。若亮,根据发光位置 就可以判断引脚了,正极接的是相应的段码端 (a,b,c,……,dp),负极为对应数码管 的公共端(C1,C2)。
灯的循环闪亮控制 中断初始化


3)延时功能 4)中断服务程序设计
3.2软件设计

中断初始化
触发方式设置 中断允许控制


中断服务程序设计


中断初始化 IT0=1; EA=1; EX0=1;
中断服务程序

函数名()interrupt n [using m ] { } Void int0(void) interrupt 0 /* 外部中断0的服务函数定义,使用第二组工 作寄存器组*/

4、通过定时,精确控制闪烁 500ms。 针对任务一进行操作。



使用定时器T0 1)设置定时器工作方式 2)计算初始值 3)编写初始化程序 4)编写中断服务程序
1)设置定时器工作方式
TMOD
GATE C/T M1 0 0 0 M0 GATE C/T M1 M0 0 0 0 0 1
2)计算初始值

晶振12Mhz 1 Tp=12 1个机器周期: 12 10
定时50ms,需要计数:
6
1 s

50 103 50000 1
定时器初始值:
65536 50000 15536 0 x3CB0
定时500ms,需要中断10次。
3)编写初始化程序



2、用8个LED发光二极管,设计一 个循环闪烁的流水灯。
2.1硬件设计
2.2软件设计

1)初始化

51头文件、宏定义 灯的循环闪亮控制 延时子程序设计

2)主程序,即main()程序


3)延时功能




如何进行灯的循环闪亮控制? intrins.h 内部函数库 (包含变量循环移位、位操作等函数) 需要将该函数包含进来,同时对函数 原型进行声明。
TMOD=0X01; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TR0=1;
4)编写中断服务程序

Void timer0(void) interrupt 1 { TH0=0x3c; TL0=0xb0; i++; if(i==9) { i=0; P1_0=~P1_0; } }
@ 共阳数码管每个段笔画是用低电平(“0”)点亮, 共阴数码管段笔画是用高电平(“1”)点亮


要显示某个字形,就应使此字形的相应 断码的二极管点亮,实际就是送一个用 不同电平组合代表的数据字(显示码) 来控制LED的显示,此数据称为字符的 段码或字形码。 共阴极和共阳极LED显示器段码不同。
共阳LED数码管: 公共端(字位) 接高电平, 笔划(字段) 置为低电平 就被点亮了
2)日常中断的例子
你正在专心看 书,突然电话铃响, 于是你记下正在看的 书的页数,去接电话, 接完电话后再回来接 着看书。
3)计算机中的中断概念
中断是指由于某种随机事件(甲方) 的发生,计算机(乙方)暂停现行程 序的运行,转去执行另一程序,以处 理发生的事件,处理完毕后又自动返 回原来的程序继续运行。 将能引起中断的事件称为中断源。 CPU现行运行的程序称为主程序。 处理随机事件的程序称为中断服务 子程序。
IE
EA —
ET2
ES
ET1 EX1 ET0 EX0
EX0/EX1位: 分别是INT0/INT1的中断允许控制位: =0 时禁止中断; =1 时允许中断。 EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断。
3.2软件设计

1)初始化

51头文件、宏定义

2)主程序,即main()程序
5.2软件设计


1)定时中断服务程序 定时50ms,中断20次为1秒 每中断20次,计数1次。 2)显示程序 将显示数值分为:个位、十位、 百位、千位,分别查表显示。
初始化:


uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x 7d,0x07,0x7f,0x6f}; //段码组合,共阴极 uchar m=0; //计数循环变量 uint n=0; //计数值
定时中断服务程序





void timer0(void) interrupt 1 { TH0=0x3C; TL0=0xB0; m++; if(m==19) {m=0; n++; P1_0=~P1_0; } }
显示程序





void display(void) { P2=0xf7,P0=a[n%10]; delay(20); P2=0xfb,P0=a[n%100/10]; delay(20); P2=0xfd,P0=a[n/100%10]; delay(20); P2=0xfe,P0=a[n/1000]; delay(20); }

1、用1个LED发光二极管,设计一 个循环闪烁的指示灯。
如何设计硬件和软件?
1.1硬件设计
注意:在接下来的仿真中,省略时钟及复位电路。
1.2软件设计

1)初始化

51头文件、宏定义 灯的亮灭控制 延时子程序设计

2)主程序,即main()程序


3)延时功能


#include <at89X52.h> #define uint unsigned int #define uchar unsigned char
4位一体共阴极LED数码管管脚分布如图所示:
5.1硬件设计


如果每个LED上要显示的数字不同, 那么它在同一时刻是不能同时显示 的。 用这种数码管都是动态显示的。 (可以到网上去看下动态显示)

比如4个LED上要显示"1234"(假 设是共阴极连接)






4个LED上显示"1234"(假设共阴极连接) 过程如下: 首先选种第一个LED(即上面 C1='0',C2='1',C3='1',C4='1') 送LED要显示的数据(abcdefg=“0110000”), 如果要显示小数点dp='1' 再延时一段时间(注意不能过长,不然看到的连续 显示的现象了,下面一样) 再选择第二个LED(即上面 C1='1',C2='0',C3='1',C4='1') 送LED要显示的数据(abcdefg="1101101")如 果要显示小数点dp='1' 再延时一段时间 接下来是第三、第四个LED也一样。
相关文档
最新文档