📄 stc232.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 + -