求一段STC89C52单片机c语言程序,要求能通过串口通信由电脑向单片机发送数据,当发送的数据和前一个不一

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-25
求一个51单片机程序,通过串口发送“hello,I'm STC89C52!”一行字符,通过电脑接收

其实很简单的帮你写一个参考程序:晶振:11.0592 波特率9600
/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
**/
#include "REG52.H"


/*
* 按键定义
*/

//
unsigned char TABLE[] = "hello,I'm STC89C52";
unsigned char UARTByte;



//
void UART_Send_Byte(unsigned char Byte);

//延时
void Delay_1ms(unsigned int time)
{
unsigned int a, b;
for(a=time; a>0; a--)
for(b=110; b>0; b--);
}

/*
* 主函数
*/
int main(void)
{
unsigned char i;

PCON&= 0x7F;
TCON = 0x00;
SCON = 0x50;
//
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
ES = 1;
EA = 1;
//
while(1)
{


for(i = 0; i < 17; i++)
{
UART_Send_Byte(TABLE[i]);
}
UART_Send_Byte('
');
Delay_1ms(1000);
}
}

// 向串口发送一个字节数据
void UART_Send_Byte(unsigned char Byte)
{
ES = 0;
TI = 0;
SBUF = Byte;
while(!TI);
TI = 0;
ES = 1;
}


你按我的程序试试,自己观察一下为什么,如果有不明白的,再问我:
void ser() interrupt 4
{
if(RI)

{
table1[aa++]=SBUF;
if(aa>=5)
{
aa=0;
tt = 0;
SBUF=' ';
}
RI=0;
}

if(TI)
{
if(tt<5)
{
SBUF=table1[tt++];
}
TI=0;
}

}

#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
//---------------------------------------------------
sbit led = P1^0;

sbit key = P0^0;
sbit out1= P0^1;
sbit out2= P0^2;
uint run_cnt;
uchar temp;
//---------------------------------------------------
void send_one_byte(unsigned char tad )
{
TI=0;

SBUF=tad; //发送数据 os_wait2(K_TMO,1);
while(TI==0);
TI=0;

}
//---------------------------------------------------
void init_uart(void)
{

TMOD|=0x20;
TH1=0Xfd;
TL1=0Xfd;
SCON=0X50;
TR1=1;
ES=1;
}
//---------------------------------------------------
void main(void )
{

run_cnt=0;

init_uart();
EA=1;
//------------------------------
while(1)
{
run_cnt++;
if(run_cnt>1000)
{
send_one_byte(temp++);
led = ~led; //每次发送数据都不一样
run_cnt=0;

}
key=1;
if(key==0)
{
out1=1;
out2=1;
}
else
{
out1=0;
out2=0;
}
}
}

  • 求用stc89c52单片机控制蜂鸣器发出音乐的c语言程序。最好有详解。谢谢...
    答://关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;//所以拿出谱子, 试探编吧!sbit Beep = P1^5 ;unsigned char n=0; //n为节拍常数变量 unsigned char code music_tab[] ={ 0x18, 0x30, 0x1C , 0x10, //格式...
  • stc89c52单片机8个led灯从两边往中间跑c语言程序
    答:/ 程序名称:hc595.c 程序功能:595的应用文件 程序作者:吴鉴鹰 创建时间:2014-3-10 修改时间:程序版本:V0.1 / / 包含头文件 / include "inc/hc595.h"include "reg51.h"/ 定义引脚 / /* 时钟信号线引脚定义 */ sbit HC595CLK = P0^5;/* 片选信号线引脚定义 */ sbit HC595RCK =...
  • STC89C52单片机数字温度传感器设计 (温度传感器是DS18B20) 寻高手帮...
    答:include<reg52.h> include <intrins.h> define uchar unsigned char define uint unsigned int define upzero 1 define downzero 0 uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar code seg[]={0xfe,0xfd,0xfb}; //加了PNP的情况下的段选 sbit DQ=...
  • STC89C52 的单片机C语言实现数码管显示任意的一个四位数包括小数点_百 ...
    答:include<reg52.h> define uchar unsigned char define uint unsigned int sbit wr=P1^0;sbit cs1=P1^1;sbit cs2=P1^2;uchar q,w,a[8];uchar code zm[]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,} void wx(uchar xx){ wr=0;cs2=0;P0=xx;wr=1;cs2=1;} v...
  • 速求STC89C52单片机控制流水灯程序以及电路图?
    答:给你这个双向流水灯C语言程序,经过调试成功的,按程序的内容配置硬件即可。include<reg52.h> void delay(unsigned int i);char led;main(){ unsigned char i;while(1){ led=0xfe;for(i=0; i<8; i++){ P2=led;delay(500);led=led<<1;led=led|0x01;if(led==0x7f) break;} for(i...
  • 我想问一下~那个~用STC89C52单片机产生一个PWM波的C语言程序怎么写啊...
    答:首先89C52内部没有硬件PWM发生器,只能通过定时器模拟!你可以通过两个定时器,T0控制周期,T1控制占空比。例如:实现周期为1000us,占空比为20%的PWM,用P1.0实现 首先你设置T0为65536-1000 (12M晶振)T1为65536-200 首先初始化P1.0=1,两个定时器同时打开,在定时器T1中断时拉低P1.0,在定时器...
  • 求一段STC89C52单片机将数值通过串口输出的代码
    答:可以利用print函数或者sprint函数 程序如下:include "reg52.h" //此头文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16;typedef unsigned char u8;void UsartInit(){ SCON=0X50; //0101 000设置串行口控制寄存器sm0,sm1为01,即为工作方式1 TMOD=0X20; //设置计数器 PC...
  • 求一个关于单片机STC89C52的程序?高分悬赏!
    答:1、程序就时间帮你敲了,大概给你讲下原理,先定义一个位数据类型bit RecFlag(注意是bit不是sbit)和一个整形unsigned int Num还有一个用来记录接收信号的unsigned char Data。2、主函数初始化定时器0,每1ms或者10ms进中断重置TH0TL0 3、当接受到信号之后给把接受到的信号赋值给Data,同时给RecFlag...
  • 求一个STC89C52单片机在P2.0引脚输出方波的C语言程序
    答:sbit P20=P2^0;void delay() //延时 { for循环语句程序,根据时间定 } main(){ while(1){ P20=0;delay();P20=1;delay();} } 最好是用定时器做,那样会更精确,不会影响到mcu执行其他程序。
  • STC89c52单片机c语言编程。想用4*4矩阵键盘输入一个数(包括两位数...
    答://delay1(uint x)void delay1(uint x){ uint i, j;for(i = x; i > 0; i--){ for (j = 19; j > 0; j--);} } uchar getkey(){ uchar PP1=0XFF;uchar key=0xFF;KEYPORT=0XF0;PP1=KEYPORT;key=(PP1&0XF0);KEYPORT=0X0F;PP1 = KEYPORT;key=(key|(PP1&0X0F));...