基于stc15f2k60s2芯片单片机编程(温度时间距离串口按键长短按)

这篇博客介绍了一种使用STC15F2K60S2单片机实现的功能,上电时数码管显示时间,S7按键切换显示测量距离,S6按键切换显示温度,松开按键则恢复显示时间。同时,通过串口通信,当接收到'send'指令时,单片机将发送当前的时间、距离和温度数据到串口助手。

上电数码管显示时间,按下S7显示测量距离,松开显示时间;按下S6显示温度,松开显示时间。向串口助手发送send,串口助手接受时间,测量距离,和当前温度。
main.c

#include <stc15f2k60s2.h>
#include <ds1302.h>
#include <intrins.h>
#include "onewire.h"

sbit s7=P3^0;
sbit s6=P3^1;
sbit TX=P1^0;
sbit RX=P1^1;


unsigned char c1,c2;
unsigned char mingling;
unsigned char code tab[]={
   
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char display[]={
   
   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned int wendu,ti,distance;
unsigned char shou[]="send";



void Timer0Init(void);
void UartInit(void);
void SendByte(unsigned char dat);
void Send_Wave();
void xianshi();
void Delay10ms();	
void anjian();
void mdistance();
void Delay12us();  
void SendStr(unsigned char *s);
void working();  



void main()
{
   
   
	UartInit();ES=1;
	EA=1;ET0=1;Timer0Init();
	P2=(P2&=0X1F)|0XA0;P0=0X00;P2&=0X1F;
	DS_init();
	SendStr("	请");SendStr("输");SendStr("入");SendStr("	:");SendStr("\r\n"); 
		while(1)
		{
   
   	
			working(); 
			anjian();
			xianshi();
			DS_get();
	
		}	


}

void xianshi()
{
   
   
		display[0]=tab[TIME[2]/16];
		display[1]=tab[TIME[2]%16];
		display[3]=tab[TIME[1]/16];
		display[4]=tab[TIME[1]%16];
		display[6]=tab[TIME[0]/16];
		display[7]=tab[TIME[0]%16];	


}


void Timer0Init(void)		//2毫秒@11.0592MHz
{
   
   
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x9A;		//设置定时初值
	TH0 = 0xA9;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
}

void shuma() interrupt 1
{
   
   
	unsigned char i;
	unsigned int p;

	P2=(P2&0X1F)|0XE0;
	P0=0XFF;
	P2&=0X1F;
	
	P2=(P2&0X1F)|0XC0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值