历史上的今天
今天是:2025年08月12日(星期二)
2021年08月12日 | 51单片机心形灯实现串口通信编程
2021-08-12 来源:eefocus

心形灯原理图
编译软件:Keil uVision5
(如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343174)
单片机程序下载软件:STC-ISP
(如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343157)
程序代码:
灯状态处于0亮1灭
发送方:
#include sbit k1=P3^2; sbit k2=P3^3; sbit k3=P3^4; sbit k4=P3^5; #define LED1 P0 #define LED2 P2 void UsartInit(){ SCON=0x50; TMOD=0x20; PCON=0x80; TH1=0xF4; TL1=0xF4; ES=1; EA=1; TR1=1; } void delay(unsigned int ms) { unsigned int i,j; for(i=0;i } unsigned char keyscan(void){ unsigned char key='.'; if (k1==0) { delay(1); if(k1==0) { key='1'; while(!k1); } } if (k2==0) { delay(1); if(k2==0) { key='2'; while(!k2); } } if (k3==0) { delay(1); if(k3==0) { key='3'; while(!k3); } } if (k4==0) { delay(1); if(k4==0) { key='4'; while(!k4); } } return key; } void Tras(unsigned char key) { SBUF=key; while(!TI); TI=0; } void main() { unsigned char key; UsartInit(); while(1) { key=keyscan(); if(key!='.') { Tras(key); key='.'; } } } 接收方: #include #define uchar unsigned char; #define uint unsigned int; uchar receiveData; uchar flag; uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; sbit LED17=P3^6; void UsartInit(){ SCON=0x50; TMOD=0x20; PCON=0x80; TH1=0xF4; TL1=0xF4; ES=1; EA=1; TR1=1; } void Delay(unsigned int a){ unsigned char b; for(;a>0;a--){ for(b=110;b>0;b--); } } void AllOn(){ P0=0x00; P2=0x00; LED17=0; } void AllDown(){ P0=0xff; P2=0xff; LED17=1; } void RFlow(){ int i; for(i=0;i<=7;i++){ P2=table[i]; Delay(300); } P2=table[8]; for(i=7;i>=0;i--){ P0=table[i]; //P2=table[i]; Delay(300); } P0=table[8]; LED17=0; Delay(300); LED17=1; } void LFlow(){ int i; for(i=0;i<=7;i++){ P0=table[i]; //P2=table[i]; Delay(300); } P0=table[8]; for(i=7;i>=0;i--){ //P0=table[i]; P2=table[i]; Delay(300); } P2=table[8]; LED17=0; Delay(300); LED17=1; } void main(){ UsartInit(); while(1) { switch(receiveData) { case '1': AllOn();break; case '2': AllDown();break; case '3': LFlow();break; case '4': RFlow();break; default:break; } } } void Usart() interrupt 4{ receiveData=SBUF; RI=0; P0=0xff; P2=0xff; LED17=1; }
史海拾趣




