计数测试数码管显示程序

发布者:技术旅人最新更新时间:2018-01-07 来源: eefocus关键字:计数测试  数码管显示 手机看文章 扫描二维码
随时随地手机看文章

计数测试数码管显示程序

#include //6.000MHz 
#define uchar unsigned char 
#define uint unsigned int 
#define L 0 
#define R 1

uchar SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66, 
                0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的数码管段码*/ 
#define reset() {WDT=0x1e;WDT=0xe1;} 
uchar act[2]={0xf3,0xfc};//数码管位码 
/***************************************************************/ 
uchar time_cnt; 
uchar dEDA=0;       ///*100mS计数单元清零*/  
sfr WDT=0xa6; 

/**************端口定义***********/ 
sbit INPUT=P3^2; 
sbit RL1=P1^7; 
sbit RL2=P1^6; 
sbit LED1=P1^2; 
sbit LED2=P1^3; 
sbit BZ1=P1^4; 
sbit BZ2=P1^5; 
/***************************/ 
bit LR; 
bit ERR; 
/***********************/ 
/*定时器T0初始化*/ 
void init_timer0() 

TMOD=0x11; 
TH0=-(50235/256);//100mS定时初值 
TL0=-(50235%256); 


/*定时器T1初始化*/ 
void init_timer1() 

TH1=-(2000/256);//4mS定时初值 
TL1=-(2000%256); 
TR1=1; 


//************初始化*********** 
void init(void) 
{    P0=0;P1=0xff;P2=0xff;P3=0xff; 
    reset() 
    init_timer0();           
    init_timer1();           
    ET0=1;ET1=1;EX1=1; 
    TR1=1;IT1=1; 
    EA=1;     



/*************延时子函数*************/ 
void delay(uint k) 

uint i,j; 
for(i=0;ifor(j=0;j<60;j++) 
{;}reset()} 


/*100mS定时中断服务子函数*/ 
void time_zd0(void) interrupt 1 using 1 

TH0=-(50235/256); 
TL0=-(50235%256); 
if(!INPUT)deda++; 
time_cnt++; 
    if(time_cnt==15)// 当 time_cnt==20 , 开始测试 
        { TR0=0; 
        if((deda>2)&&(deda<11))// 先检测开锁脉冲 
                {RL1=1;RL2=1;// 正常 
                delay(90); 
                BZ1=1;BZ2=1;RL1=1;RL2=0; 
                deda=0;ERR=0; 
                TR0=1;//deda=0;LR=R; 
                } 
                else ERR=1;// 否则有错 
        } 
//============================================= 
if(time_cnt==30)// 当time_cnt==20 , 开始测试 
        {TR0=0; 
        if((deda>2)&&(deda<11))// 再检测闭锁脉冲 
                {RL1=1;RL2=1;// 正常 
                BZ1=1;BZ2=1;RL1=1;RL2=1; 
                TR0=0; 
                EX1=1;} 
                else ERR=1;// 否则有错 
        } 



/**************************/ 
/*4mS定时中断服务子函数,扫描刷新两位数码管*/ 
void time_zd1(void) interrupt 3 using 3 

    TH1=-(2000/256); 
    TL1=-(2000%256); 
    LR=!LR; 
    if(LR==L) 
    {P0=SEG7[deda/10]|0x80; 
    P2=act[1];} 
    else 
    {P0=SEG7[deda%10]; 
    P2=act[0];} 


/******************主函数*****************/ 
void main() 
{    init(); 
    while(1) 
{    reset() 
    if(time_cnt<=15) 
    {    if(!INPUT) 
        {LED1=0;LED2=1;} 
         else  
          {LED1=1;LED2=1;} 
    } 
    else 
    {    if(!INPUT) 
        {LED1=1;LED2=0;} 
         else  
          {LED1=1;LED2=1;} 
    } 
    //============================================ 
    if(ERR) 
    {BZ1=0;BZ2=0;TR0=0;} 


/**********************************************************/ 

void extern_zd1(void) interrupt 2 using 2//测试启动 
{    delay(10); 
    if(!P3_3) 
    {BZ1=0;BZ2=0; 
    delay(200); 
    LR=L;ERR=0; 
    BZ1=1;BZ2=1; 
    deda=0; 
    time_cnt=0; 
    EX1=0;TR0=1; 
    RL1=0;RL2=1; 
    } 


关键字:计数测试  数码管显示 引用地址:计数测试数码管显示程序

上一篇:LED数码管实验程序
下一篇:DDS技术的数控信号发生器51单片机控制程序

推荐阅读最新更新时间:2024-03-16 15:51

AT89C51+DS1302+DS18B20六位数码管显示时钟程序
#include #define uchar unsigned char #define uint unsigned int #include DS1302.h #include DS18B20.h #define sec 0x80 #define min 0x82 #define hou 0x84 #define read 0x01 unsigned char hour,minute,second,id=0,timecount,re_disp=0,p,n0,n1; bit flag; #define leddata P0 //定义数码管的段选 sbit ssw=P2^7; //小时十位 sbit sw=P2^6; //小时个
[单片机]
51单片机数码管显示学习笔记
本实验主要是了解51单片机和数码管连接的硬件电路图以及软件编程操作。 目录: 硬件电路: 1.数码管锁存器模块: 74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。 引脚功能和芯片真值表: 简单来说,当使能端OE'接低电平时,锁存器工作(故在电路设计时直接将使能端OE'与GND相连)。此时若锁存器锁存控制端LE为高,则数据输出端与数据输入端电平同步,当锁存控制端LE转为低电平,无论数据输入端电平高低,数据输出端
[单片机]
51单片机<font color='red'>数码管</font><font color='red'>显示</font>学习笔记
LED数码管显示实验
1.代码: #include reg52.h typedef unsigned char u8; typedef unsigned int u16; sbit seg_sel = P1^4; sbit bit_sel = P1^5; #define DATA P0 //code 在程序编译的时候 当作代买直接 u8 code seg_tab ={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e }; u8 code bit_tab ={
[单片机]
LED<font color='red'>数码管</font><font color='red'>显示</font>实验
MSP430F249数码管显示
/****************************************************************** ** ** File : Display.c | Display led segment | ** Version : 1.0 ** Description: led 7 segment display ** Author : LightWu ** Date : 2013-4-9
[单片机]
基于51单片机的电压表-数码管显示
一.硬件方案 本设计基于STC89C52单片机的一种电压测量电路,该电路采用ADC0832A/D转换芯片,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单, 可以测量0~9V的电压值,并在四位LED数码管上显示电压值。如图: 二.设计功能 (1)ADC0832模数转换,0-9V电压测量; (2)4位数码管显示测量电压值; (3)10K可调电阻模拟电压测试; (4)当提供电源电源为精准的5V电源时,精度为正负0.02V; 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)Protues仿真图如下: 四.软件设计 (1)程序流程图 (2)主程序源码 /**************
[单片机]
基于51单片机的电压表-<font color='red'>数码管</font><font color='red'>显示</font>
串行口通信 单片机在数码管显示AD采集值
一. 程序功能 单片机上电后等待从上位机串口发送来的命令(波特率为9600bps),同时在数码管的前三位以十进制显示 AD采集来的数值。 1)当收到以十六进制发送来的01后,向上位机发送字符串 Turn on ad! ,同时间隔 一秒读取AD的值,然后把AD转换过来的数表示成实际电压值(浮点数),并且从串口发 送给上位机,形式如 The voltage is 3.398438V 发送周期也是一秒一次。 2)当收到02时,向上位机发送 Turn off ad! 并停止发送电压值 3)收到其他数时显示 Error! 二. 程序源码 1)法1 #include reg52.h #include intrins.h
[单片机]
8只数码管滚动显示1~8
程序功能,从左到依次显示0,1,2,3,4,5,6,7 八个数字 程序源代码如下: /* 8只数码管同时显示不同字符 */ #include reg51.h typedef unsigned char uint8; typedef unsigned int uint16; code uint8 LED_CODE = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8}; void delay(uint16 x) { uint16 i,j; for(i = x; i 0; i --) for(j = 114; j 0; j --); } void main() { uint8
[单片机]
8只<font color='red'>数码管</font>滚动<font color='red'>显示</font>1~8
STC12C5410AD单片机的AD程序两位数码管显示
/*用的是主程序中转换AD,在以后的使用中要用中断的方法才能节约CPU的使用率,本程序中是用P1.0为输入,用的是单片机本身的10位AD,最大1024分辨率,除以10后最大为102,用两位的数码管,所以只能在99以内,在程序中大于99的数,就只能显示99,也可用三位数码管显示.*/ #include reg52.h #define uchar unsigned char #define uint unsigned int #define duan P1 //数码管段码输出端 sfr ADC_CONTR = 0xc5; sfr ADC_DATA = 0xc6; sfr ADC_LOW2 = 0xbe; sfr P1M0 =0x
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved