单片机实验报告流水灯双机通信交通灯定时时钟

合集下载

单片机流水灯实验报告

单片机流水灯实验报告

流水灯实习报告一、实验原理单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED 灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。

二、硬件原理图三、实验程序ORG 00HAJMP STARTORG 001BHAJMP INTORG 0100HSTART:MOV SP,#60HMOV TMOD,#10HMOV TL1,#00HMOV TH1,#4CHMOV R0,#00HMOV R1,#20SETB TR1SETB ET1SETB EAINT:PUSH ACCPUSH PSW PUSH DPLPUSH DPHCLR TR1MOV TL1,#B0H MOV TH1,#3CH SETB TR1DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0ANL 00,#07H EXIT:POP DPHPOP PSWPOP ACCRETIDATA:DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0HEND四、实验功能以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去.五、实验总结通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。

而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。

尤其是观察、分析和解决问题的实际工作能力。

51单片机流水灯实验报告

51单片机流水灯实验报告

51单片机流水灯实验报告51单片机流水灯实验报告引言:51单片机是一种常用的微控制器,广泛应用于各种电子设备中。

流水灯实验是学习单片机编程的基础实验之一,通过控制多个LED灯的亮灭顺序,可以了解单片机的基本原理和编程方法。

一、实验目的本实验旨在通过使用51单片机,设计并实现一个简单的流水灯电路,加深对单片机原理的理解,掌握基本的单片机编程方法。

二、实验原理51单片机是一种8位微控制器,具有强大的功能和广泛的应用。

流水灯实验中,我们需要控制多个LED灯的亮灭顺序,通过编写程序,将指令发送给单片机,控制LED灯的亮灭。

三、实验器材1. 51单片机开发板2. LED灯若干3. 面包板4. 连接线四、实验步骤1. 将51单片机开发板连接到电脑上,打开开发板的编程软件。

2. 在编程软件中,新建一个工程,选择适合的单片机型号。

3. 编写程序,设置相应的引脚为输出模式,并配置流水灯的亮灭顺序。

4. 将单片机开发板与面包板连接,将LED灯连接到相应的引脚上。

5. 将编写好的程序下载到单片机中。

6. 打开电源,观察LED灯的亮灭顺序是否符合预期。

五、实验结果与分析经过实验,我们成功地实现了一个简单的流水灯电路。

LED灯按照设定的顺序亮灭,形成了流水灯的效果。

通过调整程序中的指令顺序,我们可以改变LED灯的亮灭顺序,实现不同的流水灯效果。

六、实验心得通过这次实验,我对51单片机的原理和编程方法有了更深入的了解。

流水灯实验是一种简单但基础的实验,通过实际操作和编程,加深了我对单片机的理解和掌握。

在实验过程中,我遇到了一些问题,如LED灯连接错误、程序逻辑错误等,但通过仔细检查和调试,最终成功解决了这些问题。

这次实验让我更加熟悉了单片机的应用,为以后更复杂的项目打下了基础。

七、实验拓展在掌握了基本的流水灯实验后,我们可以进一步拓展实验内容。

例如,可以增加控制开关,实现对流水灯的启停控制;可以设计不同的流水灯效果,如闪烁、变速等;还可以与其他传感器、模块进行组合,实现更多功能和效果。

单片机实训报告_流水灯

单片机实训报告_流水灯

一、实验目的1. 掌握单片机的基本原理和操作方法。

2. 熟悉单片机编程环境Keil的使用。

3. 熟悉LED流水灯的原理和编程方法。

4. 培养动手实践能力和团队协作精神。

二、实验原理1. 单片机(Microcontroller Unit,MCU)是一种具有中央处理器(CPU)、存储器(RAM、ROM)和输入输出接口(I/O)等功能的集成电子电路。

它广泛应用于各种电子设备中,如家用电器、工业控制、汽车电子等。

2. LED(Light Emitting Diode,发光二极管)是一种半导体器件,具有单向导电性。

当电流通过LED时,会发出光亮。

3. 流水灯是一种通过控制LED灯的亮灭,模拟流水效果的电子装置。

在单片机控制下,可以实现不同形式的流水灯效果。

三、实验设备1. 单片机实验板(如STC89C52单片机实验板)2. LED灯若干3. 跳线若干4. 电阻若干5. 电源(5V)6. Keil软件四、实验步骤1. 硬件连接(1)将单片机的P1.0-P1.7引脚与LED灯的正极相连,负极接地。

(2)将电阻串联在LED灯和单片机引脚之间,起到限流作用。

(3)将单片机的VCC和GND分别连接到5V电源的正负极。

2. 软件编写(1)在Keil软件中创建一个新的项目,选择相应的单片机型号。

(2)编写主函数main(),实现流水灯的编程。

(3)初始化单片机的P1口为输出模式。

(4)定义延时函数Delay(),实现流水灯的延时效果。

(5)在主循环中,通过改变P1口的高低电平,控制LED灯的亮灭,实现流水灯效果。

(6)保存并编译程序。

3. 程序调试(1)将编译后的程序下载到单片机实验板中。

(2)观察LED灯的流水效果,检查程序是否正确。

(3)如有错误,修改程序并重新编译、下载。

五、实验结果与分析1. 实验结果通过实验,成功实现了LED流水灯效果,实现了不同形式的流水灯效果。

2. 实验分析(1)在实验过程中,学习了单片机的基本原理和操作方法,掌握了Keil软件的使用。

单片机流水灯实训报告

单片机流水灯实训报告

基于AT89C52单片机的流水灯设计实训报告学院:信息工程学院班级:12级电子信息工程本科班学号:姓名:指导教师:2014年 12月29日目录前言 (1)一、总体设计 (2)1.1 总体设计框图 (2)1.2 硬件具体原理图 (3)二、设计内容 (3)2.1 设计要求 (3)2.2 硬件设计 (3)2.3 软件设计 (5)2.3.1 Keil的使用步骤: (5)2.3.2 程序流程 (8)2.3.3 程序代码 (9)三、最小系统板的焊接及调试流程 (12)3.1 最小系统板电路焊接流程: (12)3.1.1焊前准备: (12)3.1.2焊接步骤: (12)3.2 调试及问题解决方法 (13)3.2.1仿真 (13)3.2.2下载 (14)3.2.3问题及解决方法 (14)四、总结体会 (15)前言随着社会的进步和发展和人们生活水平的不断提高单片机技术已经成为当今各种新技术的载体各个应用领域的工程技术人员都应掌握单片机应用术。

同时,它所给人带来的方便也是不可否定的。

其中,数码管就是一个典型的例子。

但人们对它的要求越来越高要为现代人工作、科研、生活、提供更好的方便的设施,就需要从单片机技术入手,一切向着数字化控制、智能化控制方向发展。

单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。

更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。

以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

单片微型计算机就是将CPU、RAM、ROM、时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

我们周围有许多广告牌。

单片机流水灯实验报告

单片机流水灯实验报告

单片机技术创新设计实验报告名称:学生人数:班级:1.项目背景:当今时代的智能控制电子技术给人们的生活带来了方便和舒适,七彩的霓虹灯使我们的城市更加迷人,并增加了很多为人们的生活增色。

制造水灯的方法有很多,例如传统的分立元件,由数字逻辑电路组成的控制系统和单片机智能控制系统。

该设计是一种简单实用的单片机图案水灯设计生产方案。

2,根据时钟信号的脉冲输入,可以通过改变各LED点亮状态的保持时间来改变led的间隔时间。

根据LED的循环照明和时间间隔的变化,设计了直观的LED图案水灯自动循环系统。

从这个想法,我们可以轻松地启动水灯控制过程的顺序设计。

3,软件设计4.软件设计4.软件设计4.软件设计4.软件设计软件设计软件设计4.软件设计软件设计4.软件设计4.软件设计4.软件设计ᦇ软件设计ᦇ软件设计ᦇ软件设计ᦇ包括<regx51。

H>软件设计ᦇ软件设计ᦇ软件设计ᦇ包括<regx51。

H>﹥软件设计ᦇ软件设计#软件设计#软件设计#软件设计#软件设计ᦇ软件设计ᦇ软件设计ᦇ软件设计ᦇ软件设计ᦇ软件设计#软件设计#软件设计#软件设计#软件设计,0xf0,0x0f,0xff,0x33、0xcc,0x33、0xcc,0x33、0xcc,0xff};无效延迟1ms(无符号int计数){unsignedint i,J; for(I = 0; I <count; I ++)for(J = 0; J <120; j ++);} main(void){uchar I;而(1){for (I = 0; I <35; I ++){P1 =标签[i]; delay1ms(500);}}} 5.实验结果6.通过实验设计,我们可以锻炼我们综合利用知识,提出问题,分析问题和解决问题的能力。

我很激动,在我开始设计的那段时期我学到了很多东西。

特别是将理论与实践相结合。

我认为掌握单片机的应用开发技术是最基本,最必要的。

流水灯实验报告

流水灯实验报告

流水灯实验报告课程名称:LED流水灯实验报告学院:xxxxx学院专业:姓名:学号:年级:任课教师:【正文】一、实验的背景和意义单片机全称叫单片微型计算机,是一种集成在电路芯片,是采用大规模集成电路技术把CPU随机存储器RAM、只读存储器ROM、多种输入输出口、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的应用。

大致可以分为以下几个范畴: 1、在智能仪器仪表上的应用,例如精确的测量设备;2、在工业控制中的应用,例如用单片机可以构成形式多样的控制系统,与计算机互联网构成二级控制系统等;3、在家用电器中的应用,可以从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话、集群移动通信、无线电话对讲机等;4、在医用设备中的应用,例如医用呼叫机、各种分析仪、超声诊断设备及病床呼叫系统等等;5在各种大型电器中的模块化作用,如音乐集成单片机,看是简单的功能,微缩在电子芯片中,就需要复杂的类似于计算机的原理。

本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。

本系统就是充分利用了8051芯片的I/O引脚。

系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。

二、设计目的1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。

2.掌握汇编语言程序和C 语言程序设计方法。

3.培养实践技能,提高分析和解决实际问题的能力。

三、设计任务及要求 1.用个发光二极管作为显示电路 2.实现LED 动态显示 3.能连续循环显示 四、 设计思路LEDLED如果要让接在P1.0口的LED1亮起来,相反,如果要让接在P1.0口的LED1熄灭,那么只需要把P1.0口的电平变为高电平就可以了;同理,接在P1.1—P1.7口的其他7个LED 的点亮的熄灭的方法同LED1。

实验一51单片机流水灯实验实验报告

实验一51单片机流水灯实验实验报告
如果使用带进位的位移运算指令rlc和rrc则需要定期把cy置0否则会出现同时亮起两个发光二极管的情况
实验一 51单片机流水灯实验实验报告
“流水灯”实验报告 一、实验目的 1.了解单片机I/O口的工作原理。 2.掌握51单片机的汇编指令。 3.熟悉汇编程序开发,调试以及仿真环境。 二、实验内容 通过汇编指令对单片机I/O进行编程(本实验使用P0口),以控制八个发光二极管以一定顺序亮灭。(即流水灯效果) 三、实验原理 通过更改P0口8位的高低电平,分别控制8个发光二极管的亮灭。具体的亮灭情况如下表:
要实现“流水灯”效果,也就是需要将P0口的输出值发生以下变化: FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE→...... 可以使用一个循环,不断对数据进行移位运算实现。这里的移位指令采用RL和RR,即不带进位的位移运算指令。如果使用带 进位的位移运算指令(RLC和RRC),则需要定期把CY置0,否则会出现同时亮起两个发光二极管的情况。 四、实验过程 1.在仿真系统中绘制RG 0000H Delay: MOV R0, #0FFH SJMP Start Delay1: MOV R1, #0FFH Start: MOV A, #0FEH Delay2: NOP MOV P0, A DJNZ R1, Delay2 CLR P2.7 DJNZ R0, Delay1 CLR P3.7 RET Move: MOV R2, #7H END MOV R3, #7H RMove: RL A MOV P0, A CALL Delay DJNZ R2, RMove LMove: RR A MOV P0, A CALL Delay DJNZ R3, LMove SJMP Move 五、实验结果 为了便于实验结果的描述,下面分别把P0.0, P0.1…, P0.7对应的发光二极管编号为1, 2, …, 8号二极管。 在仿真系统中,先从1号二极管下面是在仿真系统中的实验结果:

实训报告单片机流水灯

实训报告单片机流水灯

一、实验目的1. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。

2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。

3. 提高动手实践能力,培养团队协作精神。

二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。

2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。

三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。

实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。

四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。

2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。

3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。

(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。

(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。

(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。

4. 编译程序,生成HEX文件。

5. 将生成的HEX文件导入Proteus软件,运行仿真实验。

6. 观察实验现象,检查LED灯的流水灯效果是否正常。

五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。

2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。

实验过程中,可以调整定时器的定时时间,改变流水灯的速度。

六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。

2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。

3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。

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

实验一流水灯实验一、实验目的1)简单 I/O 引脚的输出2)掌握软件延时编程方法3)简单按键输入捕捉判断二、实验实现的功能1)开机是点亮 12 发光二极管,闪耀三下2)依据顺时针循环挨次点亮发光二极管3)经过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计流水灯原理图四、系统软件设计演示程序按键正转闪耀反转五、实验过程中碰到的问题及解决方法1) 每次循环不论正转仍是反转程序,总先是先履行P1 口的 8 位 led 灯。

原由:在利用 KEIL 自带的库函数中的 _crol_ 和_cror_ 时,在正转和反转程序中应当调动次序的,开始没注意到。

更正后显示正常。

2)在开始实验的时候推行的是向来循环的方式,利用按键嵌套。

以后发现不理想,每次按键按到三次以上后进入死循环。

解决方案:利用一个按键,显示一次。

并加入按键开释,防备误动作。

指导老师署名:日期:实验一程序 :/******************************************************************** **************工程说明:本工程主要达成了一下功能:1,复位后演示全部功能2,灯闪耀三次3,流水灯正转4,流水灯反转函数说明:yanshi() :演示程序dengss() :闪耀程序right():正转程序left():反转程序scankey() :按键扫描********************************************************************* **************/#ifndef _led_h#define _led_h#define uint unsigned int#define uchar unsigned charuchar i,j,a,b,c,d;uchar flag=0;//亮灯判断标记uchar aa,bb,cc,dd,ss;sbit H1=P3^6;sbit key1=P0^5;sbit key2=P0^6;sbit key3=P0^7;void delay(uint);//1ms 延时void yanshi(void);//演示全部亮灯方式void dengss(void);//闪耀三次void left(void); //左循环亮灯void right(void);//右循环亮灯void scankey(); //按键扫描#endif#include"stc10.h"#include<intrins.h>#include<led.h> //包含各样变量定义及函数申明main(){yanshi();delay(2000); //两秒后进入可控大循环while(1){scankey();if(flag==0)right();if(flag==1)left();if(flag==2)dengss();}}void delay(uint x){uint i,j;for(i=110;i>0;i--)for(j=x;j>0;j--);}void yanshi(){dengss();right();left();P2=0XFF;P3=0XFF;}void dengss(){for(ss=3;ss>0;ss--)P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);}flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void right(){aa=0xfe;for(a=8;a>0;a--){P2=aa;aa=_crol_(aa,1);delay(500);}bb=0xfb;P2=0xff;//熄灭循环后亮着的for(b=4;b>0;b--){P3=bb;bb=_crol_(bb,1);delay(500);}//D12 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void left(){cc=0xdf;for(c=4;c>0;c--){P3=cc;cc=_cror_(cc,1);delay(500);P3=0xff;// 熄灭 D9dd=0x7f;for(d=8;d>0;d--){P2=dd;dd=_cror_(dd,1);delay(500);}//D1 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void scankey(){H1=0;if(key1==0){delay(10);if(key1==0){flag=0;while(!key1);//等候按键开释}}if(key2==0){delay(10);if(key2==0){flag=1;while(!key2);//等候按键开释}}if(key3==0){delay(10);if(key3==0){flag=2;while(!key3);//等候按键开释}}}实验二准时器或实不时钟实验一、实验目的1)数码管动向显示技术2)准时器的应用3)按键功能定义二、实验实现的功能1) 经过按键能够设定准不时间,启动准时器,准不时间到,让12 个发光二极管闪耀,达成准时器功能。

2)实不时钟,能够设定目前时间,达成钟表功能(四位数码管分别显示分钟和秒)。

三、系统硬件设计准时器或实不时钟实验仿真图四、系统软件设计准时器 0按键正常时钟倒计不时钟数码显示全为 0 时灯闪耀五、实验过程中碰到的问题及解决方法准时器 0 调试过程中 :a) 建好工程后,操作太快,忘了将保存过的C文件增添到工程里面,提示无效module 。

b)初始化函数 init_0() 申明时后边的‘;’忘掉了,调试后出现了好多错误与警示,里面的变量及端口都提示重复定义。

数码管显示过程中:a) 函数编写好后调用提示:uncalled segment ,ignored for overplay.原由:有函数未调用,但是我已经调用全部函数,以后检查一段时间后发现,count_down ()被我写成了count_dowm () .b)FLAG标记位应用时,当 FLAG=1时应当立刻履行正常时钟程序 clock(),但是当按键略微晚些准时会出现:延时一段时间后才履行。

原由:num(uchar) 定义于 timer_0 ()中,主程序开始时就启动,并num++, 开始clock ()并显示正确时间条件是: num=20 ,在按键按的晚时, num 计数已超出 20,一定等到超出定义的种类( uchar)而后从头从零记到 20 才能正确显示。

c)当 FLAG=2时,应当在全部值均为 0 时进入 dengss(),可每次都是直接进入。

原由:全局变量和局部变量使用了同样的符号。

查过资料后知,当全局变量和局部变量使用了同样的符号时,起作用的是局部变量,全局变量被障蔽掉。

因此当在dengss ()中出现 fen_shiwei,fen_gewei,miao_shiwei,miao_gewei时直接做0 办理,而灯闪耀的条件就是这个。

当把display ()中的变量名改变后,履行过clock ()的数值被保存,在履行 count_down ()时接着本来的数据变化。

硬件仿真过程中:a)数码管全暗,按键无反响原由:电阻没有连结。

指导老师署名:日期:实验二程序 :/**********************************************************************************************************************工程说明:此工程主要达成以下任务:1.数码显示2.按键扫描3.正常时钟显示4.倒计时5.准时中止主要函数名说明:void delay(uint);//1ms 延时程序void init_0();// 准时中止初始化void scankey();// 按键扫描//是时钟暂停与开始,时间调整,FLAG调整void dengss(); //灯闪耀void clock(); //正常时钟void count_down();//倒计不时钟void display(uchar,uchar,uchar,uchar); //数码显示***********************************************************************************************************************/#include<stc10.h>#include<dingshi_shuma.h>//包含变量定义和函数申明void main(){P1M1=0x00;P1M0=0xff;init_0();//初始化,设置50毫秒TR0=1; //启动准时器while(1){switch(FLAG){case 0:display(8,8,8,8);//操作前显示数字8888scankey();break;case 1:clock();scankey();break;case 2:count_down();scankey();break;}}}#ifndef _dingshi_shuma_#define _dingshi_shuma_#define uint unsigned int#define uchar unsigned char#define deport1 P1 //定义数码管段选数据进口#define deport0 P0 //定义按键选选择数据进口uchar num,FLAG=0,ss;extern uchar fen_shiwei=0,fen_gewei=0,miao_shiwei=0,miao_gewei=0; uchar clock_num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6 f};// 共阴极数码显示数组 0-9sbit w1=P0^0;sbit w2=P0^1;sbit w3=P0^2;sbit w4=P0^3;//位选口定义void delay(uint);//1ms 延时程序void init_0();// 准时中止初始化void scankey();// 按键扫描void dengss(); //灯闪耀void clock(); //正常时钟void count_down();//倒计不时钟void display(uchar,uchar,uchar,uchar); //数码显示void init_0() //初始化,设置50毫秒准时{TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;}void timer_0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;}void delay(uint x){uchar i,j;for (i=110;i>0;i--)for(j=x;j>0;j--);}void dengss(){for(ss=3;ss>0;ss--){P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);}}void clock()//正常时钟程序{if(num>=20)//1s准时{num=0;miao_gewei++;if(miao_gewei==10){miao_gewei=0;miao_shiwei++;if(miao_shiwei==6){miao_shiwei=0;fen_gewei++;if(fen_gewei==10){fen_gewei=0;fen_shiwei++;if(fen_shiwei==6)fen_shiwei=0;}}}}display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);}void count_down()//倒计时程序{if(num>=20)//1s准时{num=0;miao_gewei--;if(miao_gewei==(0-1)){miao_gewei=9;miao_shiwei--;if(miao_shiwei==(0-1)){miao_shiwei=5;fen_gewei--;if(fen_gewei==(0-1)){fen_gewei=9;fen_shiwei--;if(fen_shiwei==(0-1))fen_shiwei=5;}}}}display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);if((fen_shiwei||fen_gewei||miao_shiwei||miao_gewei)==0) // {while(1)dengss();}}void display(uchar fen_shi,uchar fen_ge,uchar miao_shi,uchar miao_ge) {w1=0;deport1=clock_num[fen_shi];delay(10);w1=1;deport1=0; //消隐w2=0;deport1=clock_num[fen_ge];delay(10);w2=1;deport1=0; // 消隐w3=0;deport1=clock_num[miao_shi];delay(10);w3=1;deport1=0; // 消隐w4=0;deport1=clock_num[miao_ge];delay(10);w4=1;deport1=0; // 消隐}void scankey(){uchar temp;P3=0xbf;temp=deport0;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=deport0;temp=temp&0xf0;if(temp!=0xf0){temp=deport0;switch(temp){case 0xdf:TR0=~TR0;// 暂停键break;case 0xbf:fen_shiwei++;if(fen_shiwei==6)fen_shiwei=0;break;case 0x7f:miao_shiwei++;if(miao_shiwei==6)miao_shiwei=0;break;}while(temp!=0xf0)//等候按键开释{temp=deport0;temp=temp&0xf0;}}}P3=0x7f;temp=deport0;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=deport0;temp=temp&0xf0;if(temp!=0xf0){temp=deport0;switch(temp){case 0xdf:FLAG++;if(FLAG>=3)FLAG=1;break;case 0xbf:fen_gewei++;if(fen_gewei==10)fen_gewei=0;break;case 0x7f:miao_gewei++;if(miao_gewei==10)miao_gewei=0;break;}while(temp!=0xf0)//等候按键开释{temp=deport0;temp=temp&0xf0;}}}}#endif实验三双机通信一、实验目的UART 串行通信接口技术应用二、实验实现的功能用两片中心板之间实现串行通信,将按键信息互发到对方数码管显示。

相关文档
最新文档