历史上的今天
返回首页

历史上的今天

今天是:2025年01月21日(星期二)

正在发生

2021年01月21日 | 51单片机向PC电脑发送汉字的方法

2021-01-21 来源:eefocus

简介:最近看到有朋友在网上问单片机怎么向电脑发送一串汉字这个问题,其实这个问题也不难.呵呵.只要把相关的参数设置好一些,然后把汉字定义成一组字符向电脑发送就可以.

为了让大家更明确的了解,我就写了下面的一个程序来演示一下.


操作条件:


1.XP操作系统.


2.XP的超级终端显示.


3.WJ-V4.0开发板.


4.单片机STC89C52.


5.晶振11.0592M


操作步骤:


1.设置TMOD设置波特率和定时器1的工作方式.


2.设置定时器的初始值.


3.设置串行口工作方式.


4.设置波特率不加倍.


5.打开TR1允许发送.


6.启动定时器.


7.串行中断打开.


8.打开EA中断.


现在发上源代码:


#include


#define uchar unsigned char


#define uint unsigned int


bit FS_Bit = 0; //发送标志位


codeucharTEXT0[] = "********************************rnn";


codeucharTEXT1[] = "电子爱好者社区欢迎您!rnn";


codeucharTEXT2[] = "www.wang1jin.com!rnn";


codeucharTEXT3[] = "51免费开发板PCB赠送!rnn";


codeucharTEXT4[] = "赠送地址http://www.wang1jin.com/shop/goods.php?id=2rnn";


codeucharTEXT5[] = "********************************rnnnnn";


void Delay_Ms(uint i); //延时函数


void Uart_Char(uchar Value); //发送一个数据


void Prints(uchar *Value);//发送一组数据


void main(void)


{


TMOD = 0x20; //设置波特率为9600和定时器1工作方式


TL1 = 0xFD; //设置初始值


TH1 = 0xFD;


SCON = 0x50; //设置串行口工作方式


PCON = 0x00;


TR1 = 1; //允许发送


ET0 = 1; //启动定时器


ES = 1; //串行中断允许


EA = 1;


while(1)


{


Prints(TEXT0); //发送数据


Prints(TEXT1);


Prints(TEXT2);


Prints(TEXT3);


Prints(TEXT4);


Prints(TEXT5);


Delay_Ms(60000); //延时


}


}


void INIT_Uart(void) interrupt 4


{


if(RI) //如果收到数据


{


RI = 0;


}


else


{


TI = 0; //发送完一个数据


FS_Bit = 0; //清标志位


}


}


void Uart_Char(uchar Value)


{


SBUF = Value; //发送数据


FS_Bit = 1; //设置发送标志位


while(FS_Bit);


}


void Prints(uchar *Value)


{


while((*Value) != '') //如果没有发送完毕


{


Uart_Char(*Value); //发送一位数据


Value++; //指针指向下一位数据


}


}


void Delay_Ms(uint i)


{


while(--i );


}


最后给大家看看程序工作的效果图片:

推荐阅读

史海拾趣

Altus Technology Inc公司的发展小趣事

随着公司规模的不断扩大,Altus开始实施全球化战略,积极拓展海外市场。公司通过与国际知名企业的合作,成功将产品打入国际市场,并建立了完善的销售网络和客户服务体系。同时,Altus还积极参与国际电子行业的交流和合作,不断吸收和引进国际先进技术和管理经验,提升了公司的整体竞争力。

ACL staticide公司的发展小趣事

Altus深知人才是企业发展的根本。因此,公司一直注重人才培养和引进工作。通过建立完善的培训体系和激励机制,Altus吸引了大量优秀人才加入公司,并为他们提供了广阔的发展空间和职业晋升机会。这些人才在公司的各个岗位上发挥着重要作用,推动了公司的技术创新和市场拓展。同时,Altus还注重员工的福利待遇和文化建设,营造了积极向上、团结和谐的工作氛围。

Eutech公司的发展小趣事

在全球化的浪潮下,EUtech公司积极寻求国际合作。他们与德国的氢探新能源公司建立了长期稳定的合作关系,共同研发燃料电池系统控制技术。通过共享资源、互补优势,双方不仅提高了产品的竞争力,还推动了整个行业的技术进步。

H&D Wireless公司的发展小趣事

高创深知不同行业对于运动控制解决方案的需求存在差异,因此始终关注行业应用的发展趋势。通过深入了解客户需求和行业工艺特点,高创能够为客户提供量身定制的解决方案。例如,在锂电行业,高创针对电池生产线的特殊需求开发了高性能伺服系统和运动控制器;在光伏行业,则提供了高精度、高稳定性的跟踪系统解决方案。这些定制化解决方案不仅满足了客户的实际需求,还帮助高创在行业中树立了良好的口碑。

DYMO公司的发展小趣事

随着市场需求的不断变化,DYMO公司不断推出新的产品线,以满足不同消费者的需求。除了传统的标签打印机外,DYMO公司还推出了便携式打印机、工业级打印机等多种类型的产品。这些产品不仅功能强大,而且设计精美,深受消费者的喜爱。通过产品线的多样化,DYMO公司进一步巩固了其在标签打印领域的领先地位。

ABECO公司的发展小趣事

在1950年代的英国,ABECO的创始人凭借对电子行业的热爱和对手工工具的独特见解,开始了他的创业之路。初创时期,资金匮乏,人员稀少,但创始人凭借着对品质的执着和对创新的追求,不断研发出满足市场需求的高质量工具。他亲自走访客户,了解需求,不断完善产品,逐渐在电子行业中树立起了良好的口碑。

问答坊 | AI 解惑

本文介绍目前性价比最高的先进锂电池充电管理芯片CN3052/CN3056

1 引言 CN305X系列是美国硅谷留学回来创办的半导体公司生产的先进锂电池充电管理芯片,CN305X系列芯片适合单节(4.1V或4.2V)和锂聚合物(Li-Pol)电池的充电需要,同时根据不同的应用提供了SOP和MSOP的可选封装形式,利用该芯片设计的充电器外围电路 ...…

查看全部问答>

UCOS II的深层学习,还请指教

大家好,小弟初学UCOS移植CORTEX-M3,根据写好的移植模板,编写了2,3个任务跑跑,无非是LED闪亮,BEEP鸣叫,UART传输字符串等。 当中只涉及到SEM,QUEEN,FLAG,MBOX这些传输机制的简单应用,也尝试了中断,中断优先级,中断嵌套功能。 但是我感觉 ...…

查看全部问答>

问个udp广播的问题

我的设备有两个网卡驱动,一个是物理网口驱动,另一个是虚拟网口的驱动,物理网口的ip是192.168.110.4 ,虚拟网口的ip是192.168.11.6.我写了个udp广播的程序,发送广播,但是每次都是从物理网口发出去的,我怎样才能让他从虚拟网口发出去呢?是不是我的程序 ...…

查看全部问答>

如何实现从中断ISR到IST的时间比较恒定,或者小于某一特定时间。

编驱动时,发现。一般情况下,中断ISR到IST的响应时间很快,几十个US足够了。但是偶有这么一两次,响应速度极慢。大概有几十个MS。这个是由于有更高优先级中断抢先了,还是由于系统调度产生的原因? 我要是想做到,中断ISR到IST的响应时间无论在什 ...…

查看全部问答>

紧急求助:WINCE 初始化NandFlash FMD_Init Done后不能停止不动!

Load Kernel... Skipped bad block at 0x6880 run 0x30201000... Windows CE Kernel for ARM (Thumb Enabled) Built on Jun 24 2004 at 18:25:00 ProcessorType=0920  Revision=0 sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc80 ...…

查看全部问答>

I2C会不会被写坏?

问题如上,我同事说I2c能被写坏,可我一直查不到资料.是不是I2c真的会被写坏?…

查看全部问答>

freescale Kinetis教程之时钟配置

这是我们最近写的kinetis教程第一篇,时钟配置。分享…

查看全部问答>

TI Simplelink无线连接解决方案概述

德州仪器(TI)Simplelink 系列易用型无线连接解决方案可为无线连接提供一个更便捷的捷径。SimpleLink解决方案旨在通过最大程度减少以无线方式支持多种应用所需的射频专业知识量来简化无线开发和认证。TI 提供的 SimpleLink 解决方案适用于多种无线 ...…

查看全部问答>

Beaglebone怎么操作八位并口?

在Linux中当然可以一位一位地写,但是怎么直接操作一个8位并口呢?…

查看全部问答>