求单片机通过串口控制LED小灯亮灭的程序,求源码,谢谢?
题意没说的太清楚,随便写一个吧。
#include
sbit led=P1^0;
main()
{
unsigned char dat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
while(1)
{
if(RI)
{
RI=0;
dat=SвUF;
if(dat==0x5a)led=0;
if(dat==0xa5)led=1;
}
}
}
串口通信的原理?
串行通信的基本原理:串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。在Windows环境(WindowsNT、Win98、Windows2000)下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。
52单片机串口控制tc35i接受短信问题
- 我用单片机控制tc35i在接受短信后能读取短信内容。。现在我向tc35i发送了AT指令。能在接受串口读取到tc35i返回的值,按理说是返回ok的。可是不是,也不是ERROR或者Unicode码。请问这是怎么回事。。。注,我能控碃福官核擢姑规太海咖制tc35i发送短信。。。
- 虽然学过单片机,但是我忘了。。
51单片机步进电机通过串口通信控制转速
- #include reg51.h 单片机头文件包含文件#include intrins.h 单片机头文件包含文件#define uchar unsigned char#define uint unsigned int本例4相步进电动机工作于8拍方式正转励磁序列为B-BC-C-CD-D-DA-A-ABuchar code FFW[]={0x02,0x06,0x04,0x0C,0x08,0x09,0x01,0x03};反转励磁序列为A-DA-D-CD-C-BC-B-ABuchar code REV[]={0x01,0x09,0x08,0x0C,0x04,0x06,0x02,0x03};延时void delay(uint x){ uchar i; while(x–) for(i=0;i120;i++);}正转一圈void SETP_MOTOR_FFW(){ uchar i,j; for(i=0;i5;i++) { for(j=0;j8;j++) { P1=FFW[j]; delay(80); } }}反转一圈void SETP_MOTOR_REV(){ uchar i,j; for(i=0;i5;i++) { for(j=0;j8;j++) { P1=REV[j]; delay(80); } }}转动方向标志,如果orientation=0xEE,则正转如果orientation=0xFF,则反转uchar orientation; 圈数标志uchar times; 接收的字节计数uchar serial_count=0;X机点动命令标志uchar flag;单片机串口中断处理程序,用于接收PC机控制信息void receive() interrupt 4 { ES=0; RI=0; flag=1; 接收转动方向标志 if(serial_count==0) { orientation=SвUF; serial_count++; }接收圈数标志 else { times=SвUF; serial_count=0; } ES=1; }uchar present_times;单片机向PC机发送信息void send(){ ES=0; SвUF=~P0; while(!TI); TI=0; SвUF=present_times; while(!TI); TI=0; ES=1; }主程序void main(){ uchar i;设置定时器T1的工作模式为2 TMOD=0x20; 通过给T1设置初值,固定时钟波特率为9600bps(11.0592HZ) TH1=0xfd; TL1=0xfd;设置串口通讯模式为1,允许接收 SCON=0x50; ES=1; EA=1;开放中断 TR1=1; T1启动,为串行通讯提供时钟 while(1) { present_times=0; P0=0xFB; 停止指示灯亮 delay(8); 每个一个时间间隔,发送一组字节 send(); 否则会造成字节发送顺序的混乱 if(flag==1) { if(orientation==0xEE) { present_times=times; P0=0xFE; 正转指示灯亮 send(); for(i=0;itimes;i++) 电机正转 { SETP_MOTOR_FFW(); present_times–; P0=0xFE; 正转指示灯亮 send(); } flag=0; } else if(orientation==0xFF) { present_times=times; P0=0xFD; 反转指示灯亮 send(); for(i=0;itimes;i++) 电机反转 { SETP_MOTOR_REV(); present_times–; P0=0xFD; 反转指示灯亮 send(); } flag=0; } else { b
- 我 可以 完成 的
想要msp430g2553与舵机控制板串口通信
- 要求是波特率为115200。初始化的代码基肌掸岗废瞢肚哥莎工极本写出来了,但是不知道哪里有点问题,舵机无法移动。有人能帮忙写个串口通信发送字符串的程序吗
- 可以给你写一份
控制串口的时候,遇到一个问题
- 现在做一个十几年前的项目改造,用工作站的串口控制飞利浦sm40分区控制器,发送一条命令可以控制,但发送第二条就控制不了了,要把工作站重启一次,才能再控制,但也只能控制一次,就又不行了,还有个现象,每次工作肠梗斑妓职幻办潍暴璃站重启开机的时候,会把重启前没有发出的命令,自动发出。兄弟们遇到过这样的问题吗?
- 都是撒反对或个人他回过头
可以模拟出多条的I2C总线 (像CPLD一样),同时自身有串口功能可以供PC控制,有这样的IC或者CPLD?
- 模拟出的I2C总线可以去访问多个其他的IC,急用,高分悬赏姬叮灌顾弑该鬼双邯晶哈!拜托。问题补充: 求大神指点啊!
- 关注这个问题
wifi转串口模块可以连接51单片机吗,做成手机wifi控制开发板。
- 可以的,好多模块转成rs232,可以和单片机相连,去x宝上找
stc11f02e串口控制程序不运行
- 在STC89c52上正常运行 但用在STC11f02e上不运行
- 需要给你完成吗
求个口串口助手控制51单片机LED亮与灭程序
- 求个口串口助手控制51单片机LED亮与灭程序,2个LED(一个接P1.1,另一个接P2.1),低电平亮。晶振11.0592。 程序说明:在串口助手上发关指令控制LED亮与灭(可以分别控制,指令由您定,告诉我就行了),还在串口助手上的 波特率 我要选多少? 谢谢程序最好能给加上说明,谢谢
- 我的百度空间有类似的电路和程序。
stc12C5A60S2单片机控制32路舵机控制器,实现串口通信,控制舵机,32路舵机控制器如下图
- 程序如下,刚接触单片机看的不是很明白,往大侠解释一下此程序运行的过程:#include STC12C5A60S2.h#define uint unsigned int#define uchar unsigned char#include string.h sbit p1=P1^0;sbit p2=P1^1;void UART_init (void){ EA = 1; ES = 1; PCON |= 0x80; 使能波特率倍速位SCON = 0x50; 8位数据,可变波特率 AUXR |= 0x40; 定时器1时钟为Fosc,即1T AUXR &= 0xfe; 串口1选择定时器1为波特率发生器 TMOD &= 0x0f; 清除定时器1模式位TMOD |= 0x20; 设定定时器1为8位自动重装方式 TL1 = 0xFA; 设定定时初值 TH1 = 0xFA; 设定定时器重装值 ET1 = 0; 禁止定时器1中断 TR1 = 1; 启动定时器1} void DELAY_MS (uint z){ uint x,y;for(x=z;x0;x–)for(y=110;y0;y–);}void UART_R (void) interrupt 4 using 1{ unsigned char UART_data; RI = 0; UART_data = SвUF; }void UART_T (unsigned char UART_data){ SвUF = UART_data; while(TI == 0); TI = 0; }void UART_TC (unsigned char *str){ while(*str != 0) { UART_T(*str); *str++; } *str = 0; }void main (void){ UART_init(); while(1) { if(p1==0) {UART_TC("#16P1000#24Р2000T2000rn"); DELAY_MS (1500);} if(p2==0) {UART_TC("#16P1800#24Р1000T2000rn"); DELAY_MS (1500);} }}问题补充:
- 单片机控制32路舵机控
pc机和单片机串口通信去控制led灯只能接收一次数据,数据如果改一下在发送led不会有任何变化?
- #include"stc15.h"#define uint8 unsigned char#define uint16 unsigned intuint8 receive_buffer[5]; uint8 i,a;void UartInit(void) { P_SW1 |=0x00; SCON = 0x50; AUXR |= 0x40; AUXR &= 0xFE; TMOD &= 0x0F; TL1 = 0xE0; TH1 = 0xFE; ET1 = 0; TR1 = 1; ES=1;}void main(){ P0=0xff; UartInit(); EA=1; while(1){ if((receive_buffer[0] == 0x88)) { if((receive_buffer[1] == 0xFB)) { if((receive_buffer[2] == 0xAF)) { if((receive_buffer[4] == receive_buffer[5])) { switch(receive_buffer[3]) { case 0x00: P0=0xFE; break; case 0x01: //????LED?? P0 = 0xFD; break; case 0x02: //LED???? P0 = 0xFB; break; case 0x03: P0=0xF7; break; case 0x04: P0=0xEF; break; case 0x05: P0=0xDF; break; case 0x06: P0=0xBF; break; case 0x07: P0=0x7F; break; } } } } } } }void uart_int() interrupt 4{ if(RI) { RI = 0; receive_buffer[i] = SвUF; i++; if(i == 5) { i = 0; } }}
- 这个书记的话是可以改一下的,关于你自己的设置来进行修改就可以了