八位共阴极数码管动态显示时间,可调节,调节的数闪烁显示
数码管的常见问题

【技术分享】数码管显示常见问题总结2015—03-30吴鉴鹰(原创)一、数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形.数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反.如下图。
二、数码管出现暗红现象现象描述:单片机穿行口的范式0为同步移位寄存器方式,外接一个串入并出的移位寄存器,可以扩展为一个并行口。
但是发现数码管显示数据的时候,出现暗红现象。
电路连接图原因:数据在串行输出期间,输出允许控制端没有关闭,从而导致串口输出端不稳定产生暗红现象。
三、数码管闪烁1:动态扫描驱动的时候,时间调整的不对,时间太短,就会闪烁,时间太长,就会出玩不应该亮的位微亮,所以,这是调整延时时间的事ﻫ2:有可能是程序要求这样闪烁吧,别说不可能,有时候在某些系统中,还故意设有这种功能.3:即使用专用芯片,只要是扫描式的驱动,他也会闪烁,只是我们看起来不太明显。
4:如果从程序中讲的话,即使扫描时间合理,也有可能会因为程序的不合理性而出现闪动,这种情况一般为两种失误:a中断时间影响了扫描周期的时间,即中断时间长于扫描周期,就会出现闪烁 b闪烁的常用数据内存被快速更改后又改过来,属于寄存器的重复使用,这两种情况我都碰到过。
8位共阴极数码管

8位共阴极数码管一、介绍共阴极数码管是一种常用于数字显示的电子元件,其中的8位指的是它具有8个可独立控制的数字显示部分。
本文将深入探讨8位共阴极数码管的工作原理、使用方法以及一些注意事项。
二、工作原理1.共阴极:共阴极数码管的每个数字显示部分都有一个对应的阴极,这些阴极都是共用一个地(GND)引脚的。
当某一段数码管需要显示数字时,需要给对应的阴极引脚提供高电平信号,使其与共阳极相连。
2.数码管译码:为了方便控制,通常使用译码器将数字信号转换为相应的阴极控制信号。
数码管的引脚按照某种编码规则与译码器相连,译码器根据输入的数字信号选择响应的阴极控制信号输出。
3.共阴极激活:为了显示多个数字或字符,需要以高速循环的方式激活每个数码管的阴极,并通过译码器设置正确的数字显示。
每个数码管的激活时间非常短暂,通过高速切换,人眼会感知到所有数码管同时显示的效果。
三、使用方法1.连接:将8位共阴极数码管的阴极引脚与译码器相连,根据译码器的输入引脚将其与控制器或微控制器连接。
2.设置显示:通过编程或控制信号,向译码器发送需要显示的数字或字符信息。
3.电源:为8位共阴极数码管提供稳定的电源供电,一般使用较小的电流。
四、常见问题1.数字显示不准确:可能是由于编程错误或信号干扰导致的。
检查编程代码,确认信号线路没有被其他组件干扰。
2.数码管闪烁现象:如果没有正确设置刷新频率,可能会导致数码管显示时出现闪烁。
调整刷新频率可以解决这个问题。
3.电流过大:如果数码管发热量较大,可能是由于信号电流过大导致的。
检查信号电流是否符合数码管的额定电流要求,如果不符合,使用限流电阻来控制电流。
五、优势与应用1.显示灵活:8位共阴极数码管可以显示数字、字母、符号等多种信息,使用广泛。
2.简单控制:通过使用译码器和控制器,可以轻松地控制8位共阴极数码管的显示内容。
3.成本较低:与其他显示设备相比,8位共阴极数码管的价格较为便宜,适合大规模应用。
8位共阴数码管实验报告

8位共阴数码管实验报告一、引言数码管是一种常见的数字显示器件,广泛应用于各种电子设备中。
8位共阴数码管是一种常见的数码管类型,本实验旨在通过实际操作,了解8位共阴数码管的原理和使用方法,并通过编程控制,实现数字的显示。
二、实验原理1. 共阴数码管原理共阴数码管是一种常见的数码管类型,它由8个LED发光二极管组成。
在共阴数码管中,所有的LED的阴极都是连接在一起的,而阳极则分别连接到控制芯片的不同引脚上。
当某个LED的阳极接通时,与之对应的数字就会在数码管上显示出来。
2. 数码管的控制为了控制数码管显示不同的数字,我们需要通过控制芯片的引脚电平来控制数码管的阳极。
具体来说,我们可以通过将某个引脚拉低,使得与之相连的数码管的阳极接通,从而显示对应的数字。
三、实验材料和器件•Arduino开发板•8位共阴数码管•杜邦线四、实验步骤1. 连接电路将Arduino开发板和8位共阴数码管通过杜邦线连接起来。
具体的连接方式如下:- 将数码管的共阴极连接到Arduino开发板的GND引脚。
- 将数码管的8个阳极分别连接到Arduino开发板的数字引脚2-9。
2. 编写程序打开Arduino开发环境,编写以下程序代码:int digitPins[] = {2, 3, 4, 5, 6, 7, 8, 9};int digits[10][7] = {{1, 1, 1, 1, 1, 1, 0}, // 数字0的显示编码{0, 1, 1, 0, 0, 0, 0}, // 数字1的显示编码{1, 1, 0, 1, 1, 0, 1}, // 数字2的显示编码{1, 1, 1, 1, 0, 0, 1}, // 数字3的显示编码{0, 1, 1, 0, 0, 1, 1}, // 数字4的显示编码{1, 0, 1, 1, 0, 1, 1}, // 数字5的显示编码{1, 0, 1, 1, 1, 1, 1}, // 数字6的显示编码{1, 1, 1, 0, 0, 0, 0}, // 数字7的显示编码{1, 1, 1, 1, 1, 1, 1}, // 数字8的显示编码{1, 1, 1, 1, 0, 1, 1} // 数字9的显示编码};void setup() {for (int i = 0; i < 8; i++) {pinMode(digitPins[i], OUTPUT);}}void loop() {for (int i = 0; i < 10; i++) {displayNumber(i);delay(1000);}}void displayNumber(int number) {int *digit = digits[number];for (int i = 0; i < 7; i++) {digitalWrite(digitPins[i], digit[i]);}}3. 烧录程序将编写好的程序通过USB线烧录到Arduino开发板中。
数码管显示控制

数码管通常采用共阳极或共阴极接法, 即所有LED灯珠的阳极或阴极连接在 一起,通过控制每个LE内部由多个LED段组成,通过 控制不同段的亮灭来显示不同的数字 或字符。
数码管分类
按位数分类
数码管可以分为一位、两位、三 位等不同位数,位数越多可以显
示的数字或字符越多。
自定义数码管显示
以自定义的数码管为例,介绍如 何使用单片机编程语言实现数码 管的动态显示。
05 数码管显示控制常见问题 及解决方案
数码管显示闪烁问题
总结词
数码管显示闪烁问题通常是由于信号传输不稳定或驱动电流过小引 起的。
详细描述
解决数码管显示闪烁问题的方法包括检查信号传输线是否接触良好, 确保驱动电流足够大,以及调整信号频率或周期以提高稳定性。
详细描述
智能控制技术使得数码管能够与计算机、手机等智能设备实现无缝对接,实现远 程控制和自动化控制。无线控制技术则使得数码管摆脱了线缆的束缚,使得显示 系统的布局更加灵活自由。
数码管显示控制在物联网领域的应用前景
总结词
随着物联网技术的不断发展,数码管显示控制在智能家居、智能交通等领域的应用前景 越来越广阔。
03
解决方案
检查显示控制电路,确保正常工作;优化信号传输路径,减少延迟;调
整显示控制参数,实现正确对齐。
数码管显示亮度不均问题
总结词
数码管显示亮度不均问题通常是由于各段数码管发光强度不一致或驱动电压不均衡引起 的。
详细描述
解决数码管显示亮度不均问题的方法包括检查各段数码管的发光强度是否一致,确保驱 动电压均衡分配,以及调整亮度控制参数以实现均匀发光。
专用集成电路
针对数码管显示控制设计的专用集成电路,具有 较高的集成度和稳定性。
数码管显示不正常的调试方法与步骤总结

数码管显示不正常的调试方法与步骤总结分类:单片机2011-10-12 21:50 1940人阅读评论(0) 收藏举报数码管显示不正常大概有以下几种现象:1,完全不显示;2,显示部分段码;3,显示部分位码;4,显示闪烁;5,以上几种综合。
解决办法:步骤:1,确定数码管是共阴还是共阳2,检查数码管每段是否完好.如果上面两条没问题,则:若完全不显示:检查电压是否加反,共阴的位选送低电平,共阳的位选送高电平若某一位只显示部分段:检查程序所送段码是否正确,注意共阴的段选送高电平,共阳的段选送低电平若有一位或几位完全不显示:(1)若静态显示(所有位显示一样的数):只需检查程序这几位送的电平是否正确(2)若动态显示(扫描显示不同的数):若数字滚动显示或闪烁,则动态扫描速度过慢,应减少延时,加快扫描若显示的数字缺胳膊少腿或三头六臂:这种现象只存在于动态扫描情况下,称为鬼影。
原因是扫描过快导致上一个字符(视觉暂留结果)显示在当前字符上产生重叠解决办法:增长延时,减慢扫描还有一种情况若采用同时送段码和位码,则注意送段码前数据口要清零,如下[cpp]view plaincopyprint?1.INT_T0:2.MOV TH0,#(65536-2000) / 256 ;2ms 2000us3.MOV TL0,#(65536-2000) MOD 2564.MOV P0,#00h;新加该程序最大的Bug在这里,之所以显示不全是因为前几次显示加在后一次显示上导致重叠5. ; 或影藏,解决办法是每次显示之前将所有段码清零6.MOV A,#DISPBUF7.ADD A,DISPBIT ;DISPBIT+DISPBUF=40H-48H8.MOV R0,A9.MOV A,@R010.M OV DPTR,#TABLE11.M OVC A,@A+DPTR12.M OV P0,A ;段选13.14.M OV A,DISPBIT15.M OV DPTR,#TAB16.M OVC A,@A+DPTR17.M OV P2,A ;位选18.19.I NC DISPBIT20.M OV A,DISPBIT21.C JNE A,#08H,KNA ;08h22.M OV DISPBIT,#00H今天帮同学调了一下这个程序,在这里记下一笔,做个小结。
8位8段LED数码管动态扫描显示

8位8段LED数码管动态扫描显示
项目名称:8位8段LED数码管动态扫描显示班级:09电二姓名:解健学号:09020313
一.实验目的
1.掌握数码管动态扫描显示原理及实现方法。
2.掌握动态扫描显示电路驱动程序的编写方法。
二.实验电路
第一步:先在Proteu软件中设计仿真电路原理图。
第四步:最后观察设计的电路图是否能得到预想的效果,若不能,进行检查,找到毛病且纠正。
流程图
开始灭显示器I=0延时Counter=0Counter=0选择段选择段点亮所有位按数值点亮位延时延时
Counter++YCounter<8NI++YNNCounter++YCounter<8N停止Y结束I<30
实验现象:
显示器点亮所有段,持续约1,然后灭显示器,持续2,最后显示“hello-93”,保持。
附:程序
#include#include#defineTRUE1#definedataPortP0#defineledConPortP 2
{unignedchari,counter=0;
for(i=0;i<30;i++){
voiddelay_5u(void){_nop_();_nop_();}
voiddelay_50u(void){unignedchari;for(i=0;i<4;i++){delay_5u() ;}}
voiddelay_100u(void){delay_50u();delay_50u();}
for(j=0;j<10;j++)delay_100u();ucM--;}}。
8个数码管动态显示
8个数码管动态显示南昌大学实验报告学生姓名:王崇伙学号:6103413026专业班级:生医131实验类型:□验证□综合设计□创新实验日期:2022/10/9实验成绩:实验二、8个数码管动态显示1~8一、实验目的1、掌握汇编查表法实现动态数码管显示。
2、熟练使用proteu仿真工具。
二、实验工具1、PC机2、keil程序编辑工具3、proteu仿真工具三、实验原理八路七段数码管动态显示原理其实和一个数码管显示0~F原理相同,不同在于显示数字的数码管有一个一次变成八个显示0~8,P0控制段选,P1控制位选,由本次实验使用八路共阴极数码管(如下图),当P0=0某7F(8)时,位码P1=0某fe既选通第八个数码管其余位选高电平不导通,结果就为第八个数码管显示8,依次P0段选‘1’时P1位选第一个数码管结果就为第一个数码管显示‘1’,延时0.2再依次循环输入1~8位选依次选一~八达到八位数码管循环显示1~8。
四、实验程序框图开始初始化端口设置断码表、位码表设定i=0,i++N显示i指向的内容Yi<8五、实验程序#include#include#include#defineucharunignedcharbitP_HC595_SER=P0^0;bitP_HC595_RCLK=P 2^4;bitP_HC595_SRCLK=P0^3;ucharcodeSEG7[]={0某3F,0某06,0某5B,0某4F,0某66,0某6D,0某7D,0某07,0某7F,0某6F,0某77,0某7C,0某39,0某5E,0某79,0某71,0某00};ucharcodeScon_bit[]={0某fe,0某fd,0某fb,0某f7,0某ef,0某df,0某bf,0某7f};uchardataDi_buf[]={16,16,16,16,16,16,16,0};voidDelay1m(){ unignedchari,j;_nop_();_nop_();_nop_();i=11;j=190;do{while(--j);}while(--i);}voidF_Send_595(uchar某){uchari;for(i=0;i<8;i++){某=某<<1;P_HC595_SER=CY;P_HC595_SRCLK=1;P_HC595_SRCLK=0;}}voiddiplay(void){uchari;for(i=0;i<8;i++){F_Send_595(Scon_bit[i]);F_Send_595(SEG7[Di_buf[i]]);P_HC595_RCLK=1;P_HC595_RCLK=0;De lay1m();}}六、实验结果六、实验总结延时0.2S,8个数码管动态显示1~8通过本次实验让我加深了对数码管显示功能的理解,并进一步也掌握了使用proteu仿真。
8段数码管动态显示详解
原理图:8 个数码管它的数据线并联接到 JP5,位控制由 8 个 PNP 型三级管驱动后由 JP8 引出。
个。
我们分别把他命名为 A,B,C,D,E,F,G,H搞懂了这个原理, 我们如果要显示一个数字 2, 那么 A,B,G,E,D 这 5 个段的发光管亮就可以了。
也就是把B,E,H(小数点)不亮,其余全亮。
根据硬件的接法我们编出以下程序。
当然在此之前,还必须指定哪一个数码管亮,这里我们就指定最后一个 P2.7。
显示数字 2 则是 C,F,H(小数点)不亮,同时由于接法为共阳接法,那么为 0(低电平)是亮为 1(高电平)是灭。
从高往低排列,(p0.7_p0.0)写成二进制为 01111110,把他转化为 16 进制则为A2H。
我们可以根据硬件的接线把数码管显示数字编制成一个表格,以后直接调用就行了。
原理图中把所有数码管的 8 个笔划段 a-h 同名端连在一起,而每一个显示器的公共极 COM 是各自独立地受 I/O 线控制。
CPU 向字段输出口送出字形码时,所有显示器接收到相同的字形码,由 8 个 PNP 的三极管,来控制这 8 位哪一位工作,例如上面的例子中我们选中的是 P2.7.就是最后的一位亮了. 同样的如果要第一位亮, 只需要把程序 CLR P2.7 改为 CLR P2.0 即可。
在这里就有了一个矛盾, 所有数码管的 8 个笔划段 a-h 同名端连在一起, 那么在一个屏幕上如何显示0,1,2,3,4,5 这样不同的数字呢? 的确, 在这样的接法中,同一个瞬间所有的数码管显示都是相同的, 不能显示不同的数字。
在单片机里,首先显示一个数, 然后关掉.然后显示第二个数,又关掉, 那么将看到连续的数字显示,轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
8位数码管动态显示电路设计
电子课程设计—8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月目录一、设计任务与要求................................................. (3)二、总体框图................................................. (3)三、选择器件................................................. (3)四、功能模块................................................. (9)五、总体设计电路图................................................. . (10)六、心得体会.................................................. .. (12)8位数码管动态显示电路设计一、设计任务与要求1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。
2. 要求在某一时刻,仅有一个LED数码管发光。
3. 该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。
4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。
5、研究循环地址码发生器的时钟频率和显示闪烁的关系。
二、总体框图设计的总体框图如图2-1所示。
图2-1总体框图三、选择器件1、数码管数码管是一种由发光二极管组成的断码型显示器件,如图1所示。
U13DCD_HEX图1 数码管数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
八位数码管显示原理
八位数码管显示原理
八位数码管是一种常见的数字显示器件,广泛应用于电子设备中。
它由七段数
码管和一个小数点组成,可以显示0-9的数字和一些字母。
在本文中,我们将介绍
八位数码管的显示原理及其工作方式。
八位数码管由七段数码管和一个小数点组成,每个数码管由7个发光二极管组成,分别对应显示数字的每一段。
通过控制这些发光二极管的通断,就可以显示出不同的数字和字母。
而小数点则是用来显示小数部分的。
八位数码管的显示原理基于这些发光二极管的组合和控制。
八位数码管的工作方式是通过控制每个发光二极管的通断来显示不同的数字和
字母。
具体来说,当需要显示某个数字或字母时,通过控制相应的发光二极管通断,使其显示出所需的图案。
这种控制可以通过数字电路或者微控制器来实现,其中数字电路一般采用BCD码或者二进制码来控制,而微控制器则可以通过编程来实现。
在实际应用中,八位数码管可以用于显示各种数字信息,比如温度、时间、计
数等。
通过合理的控制,可以实现不同数字的显示,满足各种需求。
而且由于其结构简单、成本低廉,因此在电子设备中得到了广泛的应用。
总的来说,八位数码管的显示原理基于七段数码管和小数点的组合控制,通过
控制发光二极管的通断来显示不同的数字和字母。
它的工作方式可以通过数字电路或者微控制器来实现,广泛应用于电子设备中。
希望本文能够帮助读者更好地理解八位数码管的显示原理和工作方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8位共阴极数码管动态显示时间,可调节,调节的数闪烁显示
//本例程为共阴极数码管;
//在普中单片机上通过实验;
//8位数码管动态显示时间,可调节,
//调节时间时,调节的数闪烁显示;
//比较两种闪烁的方法;
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit tiaojie=P3^0;
sbit jia=P3^1;
sbit jian=P3^2;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40};
uchar a,b,num1,num2,flag100ms,flag1s,flagtj;
uchar miao,fen,shi,flagjia,flagjian;
bit flag_1s;
uchar code wela[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar dula[8]={0,0,1,1,2,2,3,3};
void delay(uint z);
void intc();
void keyscan();
void disp();
void main()
{intc();
while(1)
{
keyscan();
disp();
}
}
//================
void intc()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;
EA=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
a++;
if(a==10)
{flag100ms=1;}
if(a==100)
{a=0,flag1s=1,miao++;flag_1s=~flag_1s;}
if(miao==60)
{miao=0,fen++;}
if(fen==60)
{fen=0,shi++;
if(shi>12)
shi=1;}
}
//====================
void disp()
{uchar i;
dula[7]=miao%10;
dula[6]=miao/10;
dula[5]=10;
dula[4]=fen%10;
dula[3]=fen/10;
dula[2]=10;
dula[1]=shi%10;
dula[0]=shi/10;
/*switch(flagtj)//第一种方法实现闪烁显示
{case 1: if(flag_1s==1)
{dula[7]=11;dula[6]=11;}
else
{dula[7]=miao%10;
dula[6]=miao/10;}break;
case 2: if(flag_1s==1)
{dula[4]=11;dula[3]=11;}
else
{dula[4]=fen%10;
dula[3]=fen/10;}break;
case 3: if(flag_1s==1)
{dula[1]=11;dula[0]=11;}
else
{dula[1]=shi%10;
dula[0]=shi/10;}break;
case 0:break;
}
for(i=0;i<8;i++)
{ P0=table[dula[i]];
P2=wela[i];
delay(10);
P0=0;
}*/
for(i=0;i<8;i++)//第二种闪烁显示方法
{
switch(flagtj)
{
case 1:
if(i>5&&i<8)
{if(flag_1s==1)
P0=0;
else
P0=table[dula[i]];}
else
P0=table[dula[i]];break;
case 2:
if(i>2&&i<5)
{if(flag_1s==1)
P0=0;
else
P0=table[dula[i]];}
else
P0=table[dula[i]];break;
case 3:
if(i>=0&&i<2)
{if(flag_1s==1)
P0=0;
else
P0=table[dula[i]];}
else
P0=table[dula[i]];break;
case 0:
P0=table[dula[i]];break;
}
P2=wela[i];
delay(10);
P0=0;
}
}
//=====================
void delay(uint z)
{
uint x;
uchar y;
for(x=0;x<z;x++)
for(y=0;y<112;y++);
}
//===========================
void keyscan()
{
if(tiaojie==0)
delay(100);
if(tiaojie==0)
{while(!tiaojie);
flagtj++;
if(flagtj>3)
flagtj=0;
}
if(jia==0)
delay(100);
if(jia==0)
{while(!jia);
flagjia=1;
}
if(jian==0)
delay(100);
if(jian==0)
{while(!jian);
flagjian=1;
}
if(flagtj!=0)
switch(flagtj)
{ case 1: if(flagjia==1)
{flagjia=0;miao++;
if(miao>60)
miao=0;
}
if(flagjian==1) {flagjian=0;
if(miao<1)
miao=1;
miao--;
}
break;
case 2: if(flagjia==1) {flagjia=0;fen++;
if(fen>60)
fen=0;
}
if(flagjian==1) {flagjian=0;
if(fen<1)
fen=1;
fen--;
}
break;
case 3: if(flagjia==1) {flagjia=0;shi++;
if(shi>12)
shi=1;
}
if(flagjian==1) {flagjian=0;
if(shi<1)
shi=1;
shi--;
}
break;
}
}
//===============。