首页 > 应用 > 单片机应用
[导读]这次做了51单片机的实验数字秒表显示,用到了定时器,中断服务函数,还有就是数码管的动态显示,还有就是程序的逻辑考虑初次在这里写,经验不足,排版不够美观代码如下:#include#define uchar unsigned charsbit s0

这次做了51单片机的实验数字秒表显示,用到了定时器,中断服务函数,还有就是数码管的动态显示,还有就是程序的逻辑考虑

本文引用地址: http://www.21ic.com/app/mcu/201901/782824.htm

初次在这里写,经验不足,排版不够美观

代码如下:

#include

#define uchar unsigned char

sbit s0=P1^0;

sbit s1=P1^1;

sbit s2=P1^2;

sbit s3=P1^3; //数码管的位选

uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9的数码管段码

uchar count=0;

uchar second=0;

uchar minite=0;

uchar number=200;

void delay(void)

{

uchar a,b;

for(b=1;b>0;b--)

for(a=90;a>0;a--);

}

void delay_LED()

{ uchar a,b;

for(b=38;b>0;b--)

for(a=80;a>0;a--);

}

void ini_display() //初始化数码管 显示“ help” 字样

{ uchar x=1000;

while(x--)

{

s0=0;

s1=1;

s2=1;

s3=1;

P0=0x89;

delay();

P0=0xff;

s0=1; s1=0; s2=1; s3=1;P0=0x86; delay(); P0=0xff;

s0=1; s1=1; s2=0; s3=1; P0=0xc7; delay(); P0=0xff;

s0=1; s1=1; s2=1; s3=0; P0=0x8c; delay();P0=0xff;

}

}

void display() // 显示 XX(分):XX(秒) 四个数码管共阳极

{

if(second<=9)

{

s0=1; s1=1; s2=1; s3=0; P0=table[second]; delay_LED(); P0=0xff;

s0=1; s1=1; s2=0; s3=1; P0=table[0]; delay_LED(); P0=0xff;

s0=1; s1=0; s2=1; s3=1; P0=table[minite%10]; delay_LED(); P0=0xff;

s0=0; s1=1; s2=1; s3=1; P0=table[minite/10]; delay_LED(); P0=0xff;

}

if(second>=10&&second<60)

{

s0=1; s1=1; s2=0; s3=1;P0=table[second/10]; delay_LED(); delay_LED(); P0=0xff;

s0=1; s1=1;s2=1;s3=0;P0=table[second%10]; delay_LED(); P0=0xff;

s0=1; s1=0; s2=1; s3=1; P0=table[minite%10]; delay_LED(); P0=0xff;

s0=0; s1=1; s2=1; s3=1; P0=table[minite/10]; delay_LED(); P0=0xff;

}

if(second==60)

{

minite++;

second=0;

}

if(minite==60)

{

minite=0;

}

}

void main()

{ uchar flag=0;

EA=1;

ET1=0;

ET0=1;

TMOD = 0x21; //定时器0作定时50ms

TH0 = 0x3c;

TL0 = 0xb0;

TR0 = 1;

TH1 = 0xfd;

TL1 = 0xfd;//定时器1做波特率发生器

TR1 = 1;

EX1 = 1;

IT1 = 1;

ES = 1;

SM0 = 0;

SM1 = 1;

REN = 1; //设置串口方式

SBUF=temp; //触发串口处的中断

while(1)

{

if(flag==0)

{

ini_display();

flag = 1;

}

else

{

display();

}

}

}

void timezhongduan( ) interrupt 1 //定时50ms后,计数20次,就是一秒----->秒表计时器

{

TH0 = 0x3c;

TL0 = 0xb0;

count++;

if(count==20)

{

count=0;

SBUF=table[minite/10];

SBUF=table[minite%10];

SBUF=table[second/10];

SBUF=table[second%10];

second++;

}

}

void waibuint()interrupt 2 //外部中断1,会清零从头开始计数

{

EX1=0;

second=0;

minite=0;

EX1=1;

}

void series()interrupt 4 //置零TI

{

if(TI)

{

TI=0;

}

}


换一批

延伸阅读

[单片机应用] 单片机I/O口管脚内部结构

单片机I/O口管脚内部结构

学习ARM嵌入式的时候,发现自己对以前学过的数模器件的知识遗忘了不少,按照我的进度本来应该继续学习ARM微处理器控制的课程,但想着后来势必还会遇到相同的问题所以就准备中断一下,杀回来把汇编和一些电路知识再总......

关键字:单片机 I O口管脚 内部结构

[单片机应用] 关于单片机串口发送和接收的问题

关于单片机串口发送和接收的问题

串口初始化过程:    1、确定T/C1的工作方式--TMOD    2、设置T/C初始值----------------------------TH1、TH2    3、启动T/C-----------------------------......

关键字:单片机 串口 发送和接收

[单片机应用] 上位机控制单片机LED

上位机控制单片机LED

整了一天程序,写了个上位机程序和单片机程序。总结下。。。上位机部分:相关参考资料:http://wenku.baidu.com/view/5ea8670403d8ce2f00662322.html1.先添加各控件,添加后的对话框如下图:2.......

关键字:上位机 控制单片机 LED

[单片机应用] 用单片机做一个计算器

用单片机做一个计算器

硬件电路程序#include T89X51.H>#define DIN P1_0#define CLK P1_2#define LOAD P1_1unsigned char key_h,key_l,key_code;unsigned ......

关键字:单片机 计算器

[单片机应用] 串行口异步通信单片机程序设计实例

串行口异步通信单片机程序设计实例

org 0000HAJMP STARTORG 30HSTART:mov SP,#5fh ;mov TMOD,#20h ;T1: 工作模式2mov PCON,#80h ;SMOD=1mov TH1,#0FDH ;初始化波特率(参见表)mov ......

关键字:串行口 异步通信 单片机

[单片机应用] AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

1)那就是在之前的介绍中说过,在说一遍~~主机和从机的两个移位寄存器可以被认为是一个公开的16位环形移位寄存器,当数据从主机移向从机时,同时从机饿数据也向相反的放向移向主机。这就意味着在一个以为周期内,主机......

关键字:AVR单片机 ATMEGA16 同步串行接口 SPI

[单片机应用] 单片机轻松入门之三:蜂鸣器

单片机轻松入门之三:蜂鸣器

单片机轻松入门之三蜂鸣器该电路较简单,用PNP型三极管驱动蜂鸣器,当P3.7为低电平时,PN结正向偏置,三极管导通,蜂鸣器发声。程序如下:#include#define uchar unsigned charsbit sounder=P3^......

关键字:单片机 蜂鸣器

[消费类电子新闻] 抢发欧洲首款商用5G手机 一加与英国最大运营商合作

抢发欧洲首款商用5G手机 一加与英国最大运营商合作

12月6日消息,据美国科技新闻网站The Verge报道,周三,一加公司首席执行官(CEO)刘作虎在高通骁龙技术峰会上宣布,该公司已与英国最大移动运营商EE达成合作,明年推出欧洲首款商用5G手机。......

关键字:商用5G手机 一加 英国最大运营商EE

[单片机应用] 用 74HC595 把 LCD1602 改成串行数据接口

用 74HC595 把 LCD1602 改成串行数据接口

LCD1602的接口形式是并行的,它有8条数据线、3条控制线。这样就需要11条线来控制它的正常工作。虽然它还可以工作在4位数据线的形式,最精简的形式是6条线。有位网友想要使用74HC595进行串-并转换,想要......

关键字:接口 数据

[单片机应用] 在stm32中使用while循环导致程序卡死

在stm32中使用while循环导致程序卡死

今天在使用stm32的过程中发现这样一个问题,程序莫名卡死。先来看导致卡死的代码while(ReadRawRC(CommandReg)&0x10);1这是我们在程序中经常用到的写法,容易理解,程序的作用的读出一份数据,然后判断他的第......

关键字:stm32 while循环 程序卡死

[单片机应用] mini2440硬件篇之看门狗

mini2440硬件篇之看门狗

1.硬件原理看门狗类似定时器,它的原理是一定时间内要喂狗(实质是往某个寄存器写值),否则,它就会咬你(就是重启)。2.芯片手册3.mini2440电路图4.S3C2440寄存器看门狗时钟源是PCLK,通过预分频器后,会再次分配得......

关键字:mini2440 硬件篇 看门狗

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客