上电数码管显示时间,按下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

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

被折叠的 条评论
为什么被折叠?



