標(biāo)題:
單片機(jī)串口通信發(fā)送PC機(jī)學(xué)號(hào)與實(shí)時(shí)時(shí)間的proteus仿真與源碼
[打印本頁(yè)]
作者:
Blades97
時(shí)間:
2018-6-13 09:42
標(biāo)題:
單片機(jī)串口通信發(fā)送PC機(jī)學(xué)號(hào)與實(shí)時(shí)時(shí)間的proteus仿真與源碼
壓縮包內(nèi)含源程序與仿真圖
0.png
(20.77 KB, 下載次數(shù): 29)
下載附件
2018-6-14 04:04 上傳
單片機(jī)源程序如下:
#include <reg51.h>
#include "intrins.h"
#define SEG P1
void Delay1ms(unsigned int N);
unsigned char code DIG_CODE[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽(yáng)極
void SendChar(unsigned char c);
void SendString(unsigned char *s);
unsigned char Num;
unsigned char Sec,Secs,Secg; //Secg代表個(gè)位,Secs代表十位,下面Min、Hour同上
unsigned char Min=14,Mins,Ming;
unsigned char Hour=8,Hours,Hourg;
unsigned char RcvStr[2];
unsigned int NumRcv=0;
bit FlagRcv=0;
unsigned char Str[]="學(xué)號(hào):160805101";
void main( ) /*主程序*/
{
//初始化
TMOD=0x21;
TH1=0xf3;//2400bps
TL1=0xf3;
TR1=1;
SCON=0x50;//方式1允許接收
IE=0x92;//EA=1 ES=1
IP=0x10;//PS=1
TH0=(65536-50000)/256;//定時(shí)50ms
TL0=(65536-50000)%256;//定時(shí)50ms
TR0=1;
ET0=1;
while (1)
{
if(FlagRcv==1)
{
FlagRcv=0;
if(RcvStr[0]=='S' && (RcvStr[1]=='J'))
{
SendChar(Hours+0x30);
SendChar(Hourg+0x30);
SendChar(':');
SendChar(Mins+0x30);
SendChar(Ming+0x30);
SendChar(':');
SendChar(Secs+0x30);
SendChar(Secg+0x30);
SendString(Str);
SendChar(0x0D);//發(fā)送回車
SendChar(0x0A);//發(fā)送換行
Delay1ms(1000);
}
else
SendString("ERR");
}
}
}
void ISRUSART() interrupt 4
{
if(RI==1)
{
RcvStr[NumRcv]=SBUF;
NumRcv++;
RI=0;
if(NumRcv==2)
{
NumRcv=0;
FlagRcv=1;
}
}
}
void ISRTimer0() interrupt 1
{
TH0=(65536-50000)/256;//定時(shí)50ms
TL0=(65536-50000)%256;//定時(shí)50ms
Num++;
if(Num==20)
{
Sec++;
Num=0;
Secs=Sec/10;
Secg=Sec%10;
}
if(Sec==60)
{
Sec=0;
Secs=Sec/10;
Secg=Sec%10;
Min++;
Mins=Min/10;
Ming=Min%10;
}
if(Min==17)
{
Min=0;
Mins=Min/10;
Ming=Min%10;
Hour++;
Hours=Hour/10;
Hourg=Hour%10;
}
if(Hour==24)
Hour=0;
}
void SendChar(unsigned char c)
{
SBUF=c;
while(TI==0);
TI=0;
}
void SendString(unsigned char *s)
{
while(*s!='\0')
{
SendChar(*s);
s++;
}
}
void Delay1ms(unsigned int N) //@12.000MHz
{
unsigned char i, j;
while(N--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
復(fù)制代碼
所有資料51hei提供下載:
實(shí)驗(yàn)9 串行通信實(shí)驗(yàn).zip
(123.85 KB, 下載次數(shù): 51)
2018-6-13 09:41 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1