C语言的七段码

Python023

C语言的七段码,第1张

void Dsp_seg(byte serial_val)

//由高位至低位串行转并行送数

{

byte i

e_strobe=0 //关闭显示

//后面是逐位获取比特

for(i=0i<8i++)

{

e_clk=0 //时钟下跳

if((serial_val&0x80)==0)

e_data=0//设置数据

else e_data=1//设置数据

e_clk=1 //时钟下跳

serial_val<<=1 //送完一位左移一次

}

e_strobe=1 //打开显示

}

外中断0接一按键,模拟检测上层乘客。

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit P2_0=P2^0

sbit P2_1=P2^1

uchar a=16,time

bit flag0,flag1

uchar code tab[ ]={

   0x3F,/*0*/

         0x06,/*1*/

         0x5B,/*2*/

         0x4F,/*3*/

         0x66,/*4*/

         0x6D,/*5*/

         0x7D,/*6*/

         0x07,/*7*/

         0x7F,/*8*/

         0x6F,/*9*/

    }

   

void delay_ms(uint ms)

{

uchar i

while(ms--)

for(i=0i<123i++)

}       

void INTinit()

{

TMOD=0x01

EA=1

EX0=1

IT0=1

ET0=1

TR0=1

TH0=0x3c

TL0=0xb0

}

void disp()

{

P0=tab[a/10]

P2_0=0

delay_ms(3)

P2_0=1

P0=tab[a%10]

P2_1=0

delay_ms(3)

P2_1=1

}

void main()

{

INTinit()

while(1)

{

if(a>4)

flag0=1

else

flag0=0

if(!flag0)

disp()

else

{

 if(flag1)

 disp()

}

}

}

void EX0INT() interrupt 0

{

a--

if(a==0)

EA=0

}

void T0INT() interrupt 1

{

TH0=0x3c

TL0=0xb0

time++

if(time==5)

{

time=0

flag1=!flag1

}

}

C语言写LED数码管显示程序与汇编是一致的,将显示的基本内容定义在一个数组中就可以了,比如:

#include<reg51.h>

#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}

sbit rstkey=P2^2

sbit speaker=P2^0

void delay()//延时约400毫秒

{

uchar i,j

for(i=0i<200i++)

for(j=0j<250j++)

}

main()

{

uchar i,key

P2=0xff

while(1)

{

i=0

P1=table[i]

while(1)

{

key=P3

if(key!=0)break

}

switch(key)

{

case 0x01:i=1break

case 0x02:i=2break

case 0x04:i=3break

case 0x08:i=4break

case 0x10:i=5break

case 0x20:i=6break

case 0x40:i=7break

case 0x80:i=8break

default:break

}

P1=table[i]//显示按下抢答器的号

P0=key//显示按下键号的LED

while(1)

{

if(rstkey==0)break//主持人按下复位键则重新开始

speaker=~speaker//否则蜂鸣器报警

delay()

}

}

}