一位电子秒表的程序设计过程中主要难点是什么

一位电子秒表的程序设计过程中主要难点是什么,第1张

一位电子秒表程序设计过程中主要难点如下。

1、程序运用定时器产生50ms定时功能,50ms循环定时两次即可达到100ms(即0.1s)的精度要求。

2、利用毫秒与秒的进位十进制关系,秒于分钟六十进制的进位关系,从而设计秒表的工作方式。

3、将30H作为0.1秒的存储单元,31H作为秒的存储单元,32H作为分钟的存储单元,逐次进行显示。

根据以下程序稍做修改,就可以了 下面程序启动和暂停共用一个按键

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit key1=P1^0

sbit key2=P1^1

sbit wei1=P1^2//四个个数码管的位驱动(阳极)

sbit wei2=P1^3

sbit wei3=P1^4

sbit wei4=P1^5

uint a=0

//共阴数码管七段码,转成共阳的需取反,程序中已这样做了

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

void Delay1ms(uint i) //1ms延时程序

{

uint j

for(i>0i--)

{

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

{}

}

}

void display(uint m)//4位显示子程序,第二位后面有个小数点

{

uchar a1,a2,a3,a4

a1=m/1000

a2=m/100%10

a3=m/10%10

a4=m%10

P0=~(table[a1])

wei1=0

Delay1ms(2)

wei1=1

P0=~(0x80|table[a2])

wei2=0

Delay1ms(2)

wei2=1

P0=~(table[a3])

wei3=0

Delay1ms(2)

wei3=1

P0=~(table[a4])

wei4=0

Delay1ms(2)

wei4=1

}

void main(void )//主程序

{

TMOD=0x01// 定时器1工作方式一

ET0=1

EA=1

TH0=(65536-10000)/256//定时10ms

TL0=(65536-10000)%256

TR0=0//上电先不启动

while(1)

{

if(key1==0)//判断按键是否按下

{

Delay1ms(10)//延时消抖

if(key1==0)

{

while(key1==0)//等待按键抬起

TR0=!TR0

}

}

if(key2==0&&TR0==0)//判断按键是否按下及是否在走时

{

Delay1ms(10)//延时消抖

if(key2==0)

{

while(key2==0)//等待按键抬起

a=0

}

}

display(a)

}

}

//中断子程序

void Timer0(void) interrupt 1

{

TH0=(65536-10000)/256

TL0=(65536-10000)%256

a++

if(a==60000) a=0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12040968.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存