单片机程序火箭发射,倒计时和推送都有,用C语言编写

单片机程序火箭发射,倒计时和推送都有,用C语言编写,第1张

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

int is_right(int a[],int k)

{

int jian_ge=a[1]-a[0];

int count_num=0;

for(int i=0; i<<a href=">

#include<reg51h> // 包含51单片机寄存器定义的头文件

unsigned char code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//数码管显示0~9的段码表

unsigned char int_time; //记录中断次数

unsigned char second; //储存秒

/

函数功能:快速动态扫描延时,延时约06毫秒

/

void delay(void)

{

unsigned char i;

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

}

/

函数功能:显示秒

入口参数:k

出口参数:无

/

void DisplaySecond(unsigned char k)

{

P2=Tab[k/10]; //显示十位

P3=0x01; //P30引脚输出高电平, 点亮 十位

delay();

P3=0xfc; //关闭所有数码管

P2=Tab[k%10]; //显示个位

P3=0x02; //P31引脚输出高电平, 点亮 个位

delay();

P3=0xfc; //关闭所有数码管

}

void main(void) //主函数

{

TMOD=0x01; //使用定时器T0

TH0=(65536-5000)/256; //将定时器计时时间设定为50毫秒

TL0=(65536-5000)%256;

EA=1; //开启总中断

ET0=1; //定时器T0中断允许

TR0=1; //启动定时器T0开始运行

int_time=0; //中断次数初始化

second=99; //秒初始化

while(1)

{

DisplaySecond(second); //调用秒的显示子程序

while(second==0)

DisplaySecond(second);

}

}

//

//函数功能:定时器T0的中断服务程序

//

void interserve(void ) interrupt 1 using 1

{

TR0=0; //关闭定时器T0

int_time ++; //每来一次中断,中断次数int_time自加1

if(int_time==20) //够20次中断,即1秒钟进行一次检测结果采样

{

int_time=0; //中断次数清0

second--; //秒减1

}

TH0=(65536-5000)/256; //重新给计数器T0赋初值

TL0=(65536-5000)%256;

TR0=1; //启动定时器T0

if(second==0) //如果 倒计时 0 停止定时器T0

TR0=0;

}

#include<reg52h>

#include <intrinsh> //内部包含延时函数 _nop_();

#define uchar unsigned char

#define uint unsigned int sbit d1=P2^0; sbit key1=P0^4;

sbit SDATA_595=P0^0; //串行数据输入 ----接板卡上的SPI 数据信号输入端

sbit SCLK_595=P0^1; //移位时钟脉冲(输入口) ---接板卡上的SPO----串行时钟线----SHcp移位时钟信号输入端

sbit RCK_595=P0^2; //输出锁存器控制脉冲 ----接板卡上SPK STcp锁存信号输入端

uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar num=60;

void delay(uint z);

void aa595_in(uchar Data) {

uchar i;

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

{SCLK_595=0; Data<<=1; SDATA_595=CY;

SCLK_595=1; SCLK_595=0;

}

}

void a595_in(uchar Data) {

uchar i;

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

SCLK_595=0; Data<<=1; SDATA_595=CY;

SCLK_595=1; SCLK_595=0;

}

}

void aa595_out(void) {

RCK_595=0;

_nop_(); _nop_();

RCK_595=1;

_nop_(); _nop_();

RCK_595=0;

}

void main() {

uchar ge,shi;

while(1) {

if(key1==0) {

delay(10);

if(key1==0)

{d1=0; num--;

if(num==0)

num=60;}

while(!key1);//松手检测

delay(10);//延时10ms

while(!key1);//再松手检测

}

else d1=1;

// aa595_in(duan[num]);

// aa595_in(wei[3]);

shi=num/10;

ge=num%10;

a595_in(duan[shi]);

aa595_in(wei[3]);

aa595_out();

delay(10);

aa595_in(duan[ge]);

aa595_in(wei[2]);

aa595_out();

delay(10);}

}

void delay(uint z) {

uint x,y;

for(x=100;x>0;x--) for(y=z;y>0;y--);

}//延时子程序,延时Zms

#include <AT89X51H>

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00};

unsigned char second;

unsigned char tcount;

void main(void)

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

tcount=0;

second=0;

P0=dispcode[second/10];

P2=dispcode[second%10];

while(1)

{

if(TF0==1)

{

tcount--;

if(tcount==0)

{

tcount=15;

second--;

if(second==0)

{

second=15;

}

P0=dispcode[second/10];

P2=dispcode[second%10];

}

TF0=0;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}

}

}

假设P0 P2接数码管,静态驱动,程序如下:

include<reg52h>

#define uchar unsigned char

#define uint unsigned int

uchar num=100;

uchar time=0;

//共阴数码管七段码

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

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

{

uint j;

for(;i>0;i--)

{

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

{;}

}

}

void main(void )//主程序

{

TMOD=0X01;

ET0=1;

EA=1;

TH0=(65536-50000)/256;//定时50ms

TL0=(65536-50000)%256;

TR0=1;

while(1)

{

P0=table[num/10];

Delay1ms(2);

P2=table[num%10];

Delay1ms(2);

}

}

void TIMER0()interrupt 1//中断程序

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

time++;

if(time==20)

{

time=0;

num--;

}

if(num==0)

{

num=100;

}

}

以上就是关于单片机程序火箭发射,倒计时和推送都有,用C语言编写全部的内容,包括:单片机程序火箭发射,倒计时和推送都有,用C语言编写、用51单片机C语言版设计秒表倒计时、单片机求助C语言编程 实现99秒倒计时到0秒停止! 求好心人哪!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9307919.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存