⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stc232.c

📁 里面有源程序.下位机的程序可以验证上位机的全部功能.安装好后,程序在我的电脑---开始里面,数码管我用的P1和P2,流水灯我用的是P0. 温度显示我在程序中设置为了37度,你可以把这个换成你自己的实
💻 C
字号:
/*************************************************************
****************串口工具配套程序******************************
程序功能:1.通过PC端的串口调试工具,从PC端发出一个十六进制的数,
           通过串口传输到单片机,并有单片机通过
           LED数码管显示其ASII码,而且单片机又将
           这个数发回PC端,并在PC端显示出来,从而
           实现单片机与PC机的通讯
          2.可以实现对下位机数据实时采集(如温度)
          3.可以控制流水灯或继电器开关等
*******************谢谢关注www.ednchina.com/Blog/lg05128018/**********************/
#include <reg52.h>
#include <intrins.h>
unsigned char date;
code unsigned char seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
                               0x82,0xf8,0x80,0x90,0xff}; //共阳数码管段码

//char code str[] = "read is ok\n\rwww.ednchina.com/Blog/lg05128018/\n\r";
unsigned char k;
//***********************************************************

//                     延时子程序

//************************************************************
void delay1ms()
{
 unsigned char i;
 for(i=124;i>0;i--);  //延时124*8+10=1002us
}
// void delay10ms()
//{
//int i;
// for(i=1240;i>0;i--);  //延时124*8+10=1002us
//}
//**********************************************************//

//************显示函数,显示四位的date数据******************//

//*************P2口接段码,P1.0-P1.3接位选******************//

//**********************************************************//

void LED_display(int date)  //显示4位数
{
 P1=0xfd;                 //P1.1=0,选通第二位,百
 P2=seg7code[date%1000/100];
 delay1ms();
 P2=0xff;                 //消隐

 P1=0xfb;                 //P1.3=0,选通第三位,十
 P2=seg7code[date%100/10];
 delay1ms();
 P2=0xff;                 //消隐

 P1=0xf7;                 //P1.3=0,选通第四位,个
 P2=seg7code[date%10];
 delay1ms();
 P2=0xff;                 //消隐
}

//************************************************************//

//******************串口初始化函数****************************//

//************************************************************//
Initial_com()
{
 EA=1;        //开总中断
 ES=1;        //允许串口中断
 ET1=1;        //允许定时器T1的中断
 TMOD=0x20;   //定时器T1,在方式3中断产生波特率
 PCON=0x00;   //SMOD=0
 SCON=0x50;   
 TH1=0xfd;    //波特率设置为9600
 TL1=0xfd;
 TR1=1;       //开定时器T1运行控制位
}
//************************************************************//
//************************主函数******************************//
//************************************************************//
main()
{
Initial_com();
while(1)
 {	  
  if(RI)
  {
  		
   date=SBUF;
   if(date!=0x39)
   SBUF=date;	
	switch (date)
	    {
		    case 0x30: P0=0xff;  break;   //LED全灭
			case 0x31: P0=0xfe;  break;   //LED1亮
			case 0x32: P0=0xfd;  break;   //LED2亮
			case 0x33: P0=0xfb;  break;   //LED3亮
			case 0x34: P0=0xf7;  break;   //LED4亮
			case 0x35: P0=0xef;  break;   //LED5亮
			case 0x36: P0=0xdf;  break;   //LED6亮
			case 0x37: P0=0xbf;  break;   //LED7亮
			case 0x38: P0=0x7f;  break;   //LED8亮
	        case 0x39: SBUF=37;	 break;
			default: break;
		}
   RI=0;  //清除接收中断标志
  }
   LED_display(date);
  }
}			
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -