课程考试试题纸
学号:2008221104210079
……………………………………………………………………………………………………
单片机原理与应用课程设计报告,设计内容通过任选或随机抽样确定如下一个专题。
(1)带时间显示的交通灯(人工按键流量控制、用温度变化模拟车流量变化、音乐告警)
(2)音乐播放器或数字音乐盒(按键选择存储的不同的歌曲、LCD显示歌曲名)
(3)数码管音乐闹钟(显示小时、分钟、秒;按键设置时间和闹钟时间)
(4)带数码管时间显示的抢答器(可用声、光提示)
(5)简易电子琴设计(用按键模拟1-2-3-4-5-6-7,同时数码管显示1-2-3-4-5-6-7)
(6)数字密码锁设计(用按键输入密码、声、光提示)
(7) 火灾(水位、漏油、车速)告警系统设计(温度传感器+电子发声+显示;可用
温度变化模拟水位上升、烟雾浓度、车速变化)
(8) 智能冷却系统设计(温度传感器+直流电机、声、光提示)
(9) 轿车智能天窗系统设计(温度传感器+步进电机、声、光提示)
(10)带LED显示的CRC校验码设计(任意数据长度、生成多项式用G(x)= x5 + x4 + x2 + 1 )
(11) 公交卡、考勤、售饭、图书馆流量系统设计(IC卡、键盘、显示器接口实验)
设计专题是基于现有的单片机实验系统(要求通过实验验证),涉及所设计的应用系统的硬件结构,软件编程的程序流程图,以及主要程序代码(注意:具体题目可以自拟;可以3~8人合作完成一个课程设计,需要注明;设计正文从第2页开始)。
带时间显示的交通灯
一、整体介绍
1、课程题目
带时间显示的交通灯
2、本课程设计的简介
这个课程设计采用C语言进行编程,目的主要是为了模拟在十字路口,有一组红、黄、绿灯,用来指挥车辆和行人有序通行。
3、本课程设计的目的
通过该课程设计,进一步了解电子发声及数码管显示的基本原理,进一步熟悉8255编程。
4、实验环境
pc机一台,TD试验箱一台,单片机,8255芯片,电源,导线若干
5、实验要求
人工按键流量控制、用温度变化模拟车流量变化、音乐告警提示
二、设计方案
利用单片机的定时器产生秒信号,控制红绿灯交替点亮和熄灭,并用4只LED数码管显示东西、南北两个方向的剩余时间。绿灯时间伴随有声音信号产生,提醒行人可以通过。红灯时间为28秒,绿灯时间为25秒,在此实验中,没有设置黄灯的亮和灭,但通过红绿灯的时间差(3秒),同样起到了类似黄灯的作用,就是警示车辆和行人红、绿灯的状态即将切换,这样周而复始,如此规律的变换红灯和绿灯的亮和灭来控制车辆行人的通行,这就是本实验要实现的交通灯的基本功能。
以下是设计流程框图:
三、具体实现
1、 源代码如下
**************************************************
* 连线:P0用于8255,P1用于南北灯,P2用于东西灯
* 黄灯:全灭
* 特殊按钮:KK1- 南北绿灯,东西红灯---中断INT0
* (电平) KK2- 南北红灯,东西绿灯---中断INT1
*
* 定时/计数器:0:灯计时 1:发声定时
* ew方向绿灯时发声,红灯时停止发声
***************************************************/
#include <reg51.h>
//#include <sst89x5x4.h>
//#include <hzdot.h>
//#include <hzdot1.h>
#include <intrins.h>
#include <Absacc.h>
#define C8255_A XBYTE[0x7f00]
#define C8255_B XBYTE[0x7f01]
#define C8255_CON XBYTE[0x7f03]
/*#define Row1 XBYTE[0xef00]
#define Row2 XBYTE[0xdf00]
#define Col1 XBYTE[0xbf00]
#define Col2 XBYTE[0x7f00]*/
//声音信息
#define Clk 0x070000
sbit P20 = P2 ^ 5;//采用P2来控制发声
unsigned char data val_H;
unsigned char data val_L;
//数字显示
unsigned char Led[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数字
unsigned char Dispbuff[] = {0x00,0x00,0x00,0x00}; //四个灯(两个方向,两位数字)
//红绿灯
unsigned int time[3] = {25, 3,28}; //绿灯时间黄灯时间红灯时间
unsigned int snSelect = 2; //南北方向初始:红灯
unsigned int ewSelect = 0; //东西方向初始:绿灯
unsigned int snTime = 28; //南北方向
unsigned int ewTime = 25; //东西方向
unsigned int flag = 0;
unsigned int tempSN;
unsigned int tempEW;
unsigned char tempP1;
unsigned char tempP2;
unsigned char tempTR1;
unsigned int tempSelect;
void int0_isr() interrupt 0 //INT0中断,sn绿灯
{
//换灯
TR1 = 0;
P1 = 0x0F;
P2 = 0xF0;
snSelect = 0;
snTime = time[snSelect];
ewSelect = 2;
ewTime = time[ewSelect];
}
void int3_isr() interrupt 3 //发声
{
P20 = ~P20;
TH1 = val_H;
TL1 = val_L;
}
void change()
{
//flag = flag ^ 1;
flag = 1;
//if (flag == 1)
//{
TR1 = 0;
snTime = 0x00;
ewTime = 0x00;
P1 = 0xF0;
P2 = 0xF0;
snSelect = 1;
//TR0 = 0;
//}
/*else
{
TR1 = tempTR1;
snTime = tempSN;
ewTime = tempEW;
P1 = tempP1;
P2 = tempP2;
snSelect = tempSelect;
}*/
}
void recover()
{
if (flag == 1)
{
TR1 = tempTR1;
snTime = tempSN;
ewTime = tempEW;
P1 = tempP1;
P2 = tempP2;
snSelect = tempSelect;
flag = 0;
}
}
void int2_isr() interrupt 2 //INT1中断,ew绿灯
{
//换灯
TR1 = 1;
P1 = 0xF0;
P2 = 0x0F;
snSelect = 2;
snTime = time[snSelect];
ewSelect = 0;
ewTime = time[ewSelect];
}
void TempDelay (unsigned int us)
{
while(us--);
}
void displayNum()
{
unsigned char i;
unsigned char j[4] = {0xfe, 0xfd, 0xf7, 0xef};
C8255_B = 0x00;
Dispbuff[0] = snTime/10; //南北:十位
Dispbuff[1] = snTime%10; //南北:个位
Dispbuff[2] = ewTime/10; //东西:十位
Dispbuff[3] = ewTime%10; //东西:个位
for(i=0; i<4; i++)
{
C8255_A = j[i];
C8255_B = Led[Dispbuff[i]];
TempDelay(60);
}
//C8255_B = 0x00;
}
void displayLight(int direction, int light)
{
unsigned char P;
switch (light)
{
case 0:
P = 0x0F;
break;
case 1:
P = 0x00;
break;
case 2:
P = 0xF0;
break;
}
switch (direction)
{
case 0:
P1 = P;
break;
case 1:
P2 = P;
break;
}
}
void main()
{
unsigned char k = 0;
unsigned int val;
unsigned char m;
unsigned int red = 1;
//计算发声计时初值
val = Clk/(371);
val = 0xFFFF - val;
val_H = (val>>8)&0xff;
val_L = val&0xff;
//设置两个定时器,工作在方式,允许定时器中断
TMOD = 0x11;
TH0 = 0x00;
TL0 = 0x01;
TH1 = val_H;
TL1 = val_L;
ET1 = 1; //允许定时器中断
//设置外中断
IT0 = 1; //边沿触发
EX0 = 1; //中断允许
IT1 = 1; //边沿触发
EX1 = 1; //中断允许
EA = 1;
IP = 0x05; //中断优先
//初始化
// snSelect = 2; //南北方向初始:红灯
// ewSelect = 0; //东西方向初始:绿灯
// snTime = 18; //南北方向
// ewTime = 15; //东西方向
P1 = 0xF0; //初始红灯
P2 = 0x0F; //初始绿灯
//初始化
C8255_CON = 0x81;
displayNum(); //显示时间
TR0 = 1;
TR1 = 1;
while (1)
{
displayNum();
m = C8255_A;
if (flag == 0 && (m & 0x80) != 0)
{
tempTR1 = TR1;
tempSN = snTime;
tempEW = ewTime;
tempP1 = P1;
tempP2 = P2;
tempSelect = snSelect;
change();
red = 0;
}
else if (flag == 1 && (m & 0x80) == 0)
{
recover();
red = 1;
}
if (red == 1 && TF0 == 1)
{
for (k=0; k<5; ++k) //五次循环延时
{
displayNum();
TH0 = 0x00;
TL0 = 0x01;
TF0 = 0;
while(TF0 == 0)
{
displayNum();
}
}//跳出后TF0 = 1
--snTime;
--ewTime;
if (snSelect == 2)
TR1 ^= 1; //控制发声与否
else
TR1 = 0;
//计数到:换灯
if (snTime == 0)
{
snSelect = (snSelect+1) % 3;
snTime = time[snSelect];
displayNum();
displayLight(0, snSelect);
//sn方向是红灯的时候发声
TR1 = (snSelect == 2 ? 1 : 0);
}
if (ewTime == 0)
{
ewSelect = (ewSelect+1) % 3;
ewTime = time[ewSelect];
displayNum();
displayLight(1, ewSelect);
}
TH0 = 0x00;
TL0 = 0x01;
TF0 = 0;
}
}
}
2 、连接实验电路(确保连接准确无误)。
3 、打开试验箱电源,编译运行上面的程序,观察实验结果。
程序运行结果:
1. 初始状态是东西方向数码管时间为15,且为绿灯,南北方向显示时间为18,且为红灯;
2. 东西方向的绿灯和南北方向的红灯同时点亮25秒;
3. 25秒后,东西方向等待3秒钟,此时南北方向仍维持红灯点亮。
4. 完毕后,即转为东西方向的红灯和南北方向的绿灯同时点亮25秒;
5. 25秒钟后,转为南北方向等待3秒钟,此时东西方向仍维持红灯点亮。
6. 完毕后,即转为东西方向的绿灯和南北方向的红灯同时点亮25秒。如此循环重复。
7. 整个过程中,可见数码管显示时间倒计。
8. 按键kk1和kk2的功能分别是停止/恢复发声和强行红灯/恢复。另外,kk0还可让计数暂停。
四、实验心得
这次课程设计是将我们平时做的电子发声、数码管显示实验进行综合,实现交通灯的控制。由于我们对硬件的操作和对接口的认识不足,综合过程中遇到了很多困难,比如如何实现在绿灯时让发声器发声来提醒路人过马路,几经周折,我们从其他组那里得知如何实现,但别人的东西始终是别人的,老师又对我们提高要求,使用按键来控制停止/恢复发声和强行红灯/恢复等功能,我们又开始思考如何能实现这些功能,最后在高手的帮助下我们实现了这些功能,而且最后我们组还能实现装程序下载到实验箱中,完成脱机实验,我兴奋之余,也感觉到老师对我们的高标准和严要求是为了让我们学到更多的东西,老师对我们可谓是用心良苦啊。而且通过这次实验,我更能理解电子发声和数码管显示实验的原理,对交通灯的认识也大大提升了。
第二篇:完整单片机交通灯课程实验报告
课程设计任务书
学生姓名: 王凯 专业班级:电子科学与技术0901班
指导教师: 吴友宇 工作单位: 信息工程学院
题 目: 交通信号灯控制器的设计
初始条件:
本设计既可以使用集成集成译码器、计数器、定时器、脉冲发生器和必要的门电路等。本设计也可以使用单片机系统构建交通信号灯控制器。
用数码管显示时间计数值,用红、黄、绿LED作信号灯。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、课程设计工作量:1周。
2、技术要求:
① 要求甲车道和乙车道两条交叉道路上的车辆交替运行(以红绿灯指示),每次通行时间设为0—30秒(可预置);变更车道以前,黄灯先亮5秒钟,黄灯亮时,要求每秒钟闪亮一次;两个车道均以减计数方式显示时间。其余部分可根据情况自行发挥。
② 确定设计方案,按功能模块的划分选择元、器件和集成电路,设计分电路,阐述基本原理。
③绘制总体电路原理图。
3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。
时间安排:
1、 20## 年 7 月 3 日集中,作课设具体实施计划与课程设计报告格式的要求说明。
2、 20## 年 7 月 3 日,查阅相关资料,学习电路的工作原理。
2、 20##年 7 月 4 日 至 2011 年 7 月 5日,方案选择和电路设计。
2、 20## 年 7 月 6日 至 2011 年 7 月 7 日,电路调试和设计说明书撰写。
3、 20## 年 7 月 8 日上交课程设计成果及报告,同时进行答辩。
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
目 录
摘 要. 7
交通信号灯控制器的设计. 8
1 任务要求与设计. 8
1.1 设计目的. 8
1.2 设计任务和内容. 8
1.2.1设计任务. 8
1.2.2设计内容. 8
2 总体方案比较. 9
2.1 方案论证. 9
2.2 方案选择. 10
3 总体硬件电路设计及核心器件介绍. 11
3.1总体设计. 11
4单元电路模块设计. 12
4.1复位电路、晶振电路. 12
4.2 LED数码管显示电路. 12
4.3 仿真原理图. 13
5软件编程设计. 14
5.1 设计思想. 14
5.2 程序框图. 15
6 心得体会. 16
参考文献. 17
附录1 原件清单. 18
附录3 总电路图. 18
附录3 源程序. 18
摘 要
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的状态显示以及倒计时。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用汇编语言编程,主要编写了主程序,LED数码管显示程序。经过整机调试,实现了对十字路口交通灯的模拟。
关键词:交通灯 单片机 C语言
交通信号灯控制器的设计
1 任务要求与设计
1.1 设计目的
(1)加强对单片机和C语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
(2)用单片机模拟实现具体应用,使个人设计能够真正使用。
(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。
(4)提高利用已学知识分析和解决问题的能力。
(5)提高实践动手能力。
1.2 设计任务和内容
1.2.1设计任务
①要求甲车道和乙车道两条交叉道路上的车辆交替运行(以红绿灯指示),每次通行时间设为0—30秒(可预置);变更车道以前,黄灯先亮5秒钟,黄灯亮时,要求每秒钟闪亮一次;两个车道均以减计数方式显示时间。其余部分可根据情况自行发挥。
②确定设计方案,按功能模块的划分选择元、器件和集成电路,设计分电路,阐述基本原理。
③绘制总体电路原理图。
1.2.2设计内容
(1)填写设计任务书。
(2)进行总体设计,画出原理图。
(3)编写并调试程序。
(4)用Proteus软件进行仿真。
2 总体方案比较
为了实现上述功能,有两种选择,其一是采用纯硬件设置,可以使用集成集成译码器、计数器、定时器、脉冲发生器和必要的门电路设计技术延时显示电路,只需要手动按键,电路自行实现功能。另一选择就是通过编程使用单片机系统,利用软件硬件结合。
2.1 方案论证
方案一:如图 2-1采用集成集成译码器、计数器、定时器、脉冲发生器以及所需要的门电路,首先周期为一秒的脉冲发生器产生脉冲沿使计数器进行一秒钟计数,计数通过译码器将计数值送给数码管显示作为交通灯的倒计时显示,倒计时为零时产生计数脉冲改变LED灯的亮与灭,逻辑开关包括总开关、复位开关和预置数功能。
图 2-1方案一原理框图
方案二:如图2-2 此方案主要以单片机为核心,采用C语言编程实现交通灯效果。此方式为软硬件结合,硬件包括单片机最小系统,复位电路,数码管显示模块和LED灯模块。软件设计时包括四种状态转换,中断延时程序。系统框图如图。
图2-2 方案二原理图
2.2 方案选择
第一中方案使用纯硬件电路比较容易理解也也不需要软件设计,但是硬件焊接电路较复杂,而且需要比较精确的脉冲信号源,对硬件电路要求较高,第二种方案硬件电路很简单也几乎不需要电阻电容的组织选择,而且只需要+5V直接稳压电源,采用程序实现数码管与LED灯显示功能,所以综合难易程度也可实现性,选择第二种方案。
3 总体硬件电路设计及核心器件介绍
3.1总体设计
整个设计以AT89C51单片机为核心,LED数码管显示,晶振电路,复位电路组成。
硬件模块入图3-1。
图3-1 硬件原理图
4单元电路模块设计
4.1复位电路、晶振电路
复位电路、晶振电路总体电路图如图 4-1
图 4-1 复位电路、晶振电路
4.2 LED数码管显示电路
在单片机应用系统中,数码管显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小,可以提供单独锁存的I/O接口电路很多,动态扫描电路软件设计较为复杂,由于89C52的可供使用I/O口足够多所以采用静态扫描。
此处使用74LS04是由于数码管位选段选直接与单片机I/O口相连,但是单片机I/O口输出电流很小,可能不足以带动数码管位选,则会导致数码管显示不够亮,此处使用的非门作为驱动,增加输出电流。
电路图如图 4-2
图 4-2 LED数码管显示电路
4.3 仿真原理图
如图4-3 数码管LED灯初始化显示(倒计时为三十秒)
当数码管倒计时到22秒时,此时状态是南北路红灯亮而东西路绿灯亮。
图4-3 仿真原理图
5软件编程设计
5.1 设计思想及程序框图
软件编程是实现交通信号灯显示的灵魂,由于设计要求LED灯循环显示,,并且倒计数时间可以(0~30s)预置数。程序可以分为按键模块,LED灯循环显示模块,数码管计数模块。
如图5-1所示根据分析可以将交通灯根据其显示情况可以分为四个状态,可以通过中断定时来控制每个状态的时间,程序总思路是 首先设计一秒钟的中断模块,在一秒到来时,数码管计数显示减一,当倒计时到五秒时状态转换到黄灯亮另一路口继续红灯亮,,倒计时到零,从新显示预置数值,状态装换到一路口红灯灭,另一路口路灯亮,然后继续倒计时五秒,装换状态,完成这四个状态构成一个完整的程序循环
图5-1 程序框图
6 心得体会
心得体会
今年是第二次做课程设计,上次做的很匆忙,可想而知结果也很糟糕,总结了上次的经验与教训,这次准备的比较早,虽然遇到了很多的困难与问题,但是在自己的自学和同学的帮助之下,圆满的完成任务。
本设计采用的是软硬件结合的方案,所以对软件编程和硬件焊接排布都有一定的要求,而且这也是我第一次自己写C语言程序,刚开始思路很僵硬也不知道机械语言的那种很强的逻辑性,最后通过多看程序,多思考和改进终于实现软件功能。
虽然硬件电路比较简单,但是首先要有比较好的布局,这关系到美观和走线的方便,再一个就是电路的排查方面,第一次焊出来的电路总是或多或少有一些接触不良的问题这就需要细心与耐心的排查。
总体觉得这次的课程设计对自己自学能力动手能力是一个很大的考验和检查。
参考文献
[1] 叶挺秀.应用电子学.杭州:浙江大学出版社,1994
[2] 朱承高.电工及电子技术手册.北京:高等教育出版社,1990
[3] 周润景.PEOTEUS在MCS-51&ARM7系统中的应用百例.北京:电子工业出版社,2006
[4] 李朝青.单片机原理及接口技术(第三版).北京:北京航空航天大学出版社,2005
[5]刘艳萍,高振斌,李志军.EDA实用技术及应用.北京:国防工业出版社,2006.
附录1 原件清单
附录2 总电路图
附录3 源程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit kai=P2^2;
sbit jia=P2^4;
sbit jian=P2^3;
sbit shiwen=P3^0;
sbit gewen=P3^1;
sbit LED_BLUE1=P3^2;
sbit LED_RED1=P3^3;
sbit LED_YELLOW1=P3^4;
sbit LED_BLUE2=P2^5;
sbit LED_RED2=P2^7;
sbit LED_YELLOW2=P2^6;
bit wen=1,guan;
uchar TIME,i,z;
char TIME_MAX1=30;
/*uchar code table[]={
0x30,0xf3,0x98,
0x91,0x53,0x15,
0x14,0xb3,0x10,0x11}; */
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
uchar wenxuan[]={0,1};shuzi[]={0,0};
void delayms(uchar z)
{
uchar x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
void re_display(uchar z)
{
shuzi[0]=z/2/10;
shuzi[1]=z/2%10;
}
void display()
{
P0=0xff;
shiwen=wenxuan[wen];
gewen=!wenxuan[wen];
P0=table[shuzi[wen]];
}
void set_zhuangtai(uchar zhuangtai)
{
if(zhuangtai==0)
{
LED_BLUE1=0;
LED_RED1=1;
LED_YELLOW1=1;
LED_BLUE2=1;
LED_RED2=0;
LED_YELLOW2=1;
TIME=2*TIME_MAX1+1;
}
else if(zhuangtai==1)
{
LED_BLUE1=1;
LED_RED1=1;
LED_YELLOW1=!LED_YELLOW1;
LED_BLUE2=1;
LED_RED2=0;
LED_YELLOW2=1;
}
else if(zhuangtai==2)
{
LED_BLUE1=1;
LED_RED1=0;
LED_YELLOW1=1;
LED_BLUE2=0;
LED_RED2=1;
LED_YELLOW2=1;
TIME=2*TIME_MAX1+1;
}
else if(zhuangtai==3)
{
LED_BLUE1=1;
LED_RED1=0;
LED_YELLOW1=1;
LED_BLUE2=1;
LED_RED2=1;
LED_YELLOW2=!LED_YELLOW2;
}
}
void key()
{
while(!kai)
{
delayms(10);
if(!kai)
{
guan=~guan;
set_zhuangtai(z);
}
while(!kai);
}
}
void tiao()
{
if(jian==0)
{
delayms(10);
if(jian==0)
{
if(--TIME_MAX1<0) TIME_MAX1=30;
}
while(!jian);
}
else if(jia==0)
{
delayms(10);
if(jia==0)
{
if(++TIME_MAX1>30) TIME_MAX1=0;
}
while(!jia);
}
z=0;
if(TIME_MAX1<6) z=1;
}
void main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65532-2000)/256;
TL1=(65536-2000)%256;
EA=1;
while(1)
{
key();
if(guan)
{
TR0=1;
TR1=1;
ET0=1;
ET1=1;
}
else
{
LED_BLUE1=1;
LED_RED1=1;
LED_YELLOW1=1;
LED_BLUE2=1;
LED_RED2=1;
LED_YELLOW2=1;
ET0=0;
TR0=0;
ET1=1;
TR1=1;
TIME=2*TIME_MAX1+1;
re_display(TIME);
tiao();
}
}
}
void TIME0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
if(i==10)
{
i=0;
if(TIME_MAX1>5)
{
if(1<--TIME&&TIME<12)
{
set_zhuangtai(z+1);
}
if(TIME<2)
{
set_zhuangtai(z=2-z);
}
}
else
{
if(--TIME<2)
{
set_zhuangtai(z=4-z);
TIME=2*TIME_MAX1+1;
}
else set_zhuangtai(z);
}
re_display(TIME);
}
}
void TIME1() interrupt 3
{
TH1=(65532-2000)/256;
TL1=(65536-2000)%256;
display();
wen=~wen;
}