历史上的今天
返回首页

历史上的今天

今天是:2025年03月06日(星期四)

正在发生

2020年03月06日 | 51单片机-串口-串口发送显示

2020-03-06 来源:eefocus

1. 视频

bilibili视频地址:


https://www.bilibili.com/video/av92932152


51单片机-串口-串口发送显示


2. 文件

文件下载链接:


https://download.csdn.net/download/weixin_43130546/12203484


3. 串口

PCON电源管理寄存器


SCON串口控制寄存器


模式&波特率(宋雪松P183)

SCON主要用模式1,的波特率

对应的,要用定时器T1&T2的模式2


TH1 = TL1 = 256 - 晶振值/12/2/16/波特率

(256是TL1的溢出值,12指12个时钟周期,16是硬件因素)


SBUF

两个SBUF寄存器,分别负责接收和发送缓冲


4. 串口配置代码


EA = 1;


void ConfigUART(unsigned long baud)

{

TH1 = 256 - (11059200 / 12 / 32) / baud;

TL1 = TH1;

SCON = 0x50;

TMOD &= 0x0F;

TMOD |= 0x20;

ET1 = 0;

ES = 1;

TF1 = 0;

TR1 = 1;

}


void InterruptUART(void) interrupt 4

{

if(RI)

{

RI = 0;

UARTNum = SBUF;

SBUF = UARTNum;

}

if(TI)

{

TI = 0;

}

}


5. 例程代码

串口助手发送0xXX,在单片机数码管上以十进制&十六进制显示



#include


sbit DULA = P2^6;

sbit WELA = P2^7;


unsigned char code DUTable[16] = 

{

0x3F,0x06,0x5B,0x4F,

0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,

0x39,0x5E,0x79,0x71

};


unsigned char code WETable[8] = 

{

~0x80,~0x40,~0x20,~0x10,

~0x08,~0x04,~0x02,~0x01

};


unsigned char LedBuff[8] = 

{

0x3F,0x3F,0x3F,0X40,

0X3F,0X3F,0X08,0X3F

};


unsigned char T0RH,T0RL;

unsigned char UARTNum;


void ConfigTimer0(unsigned char ms);

void ConfigUART(unsigned long band);

void ShowNum(unsigned char num);


void main(void)

{

EA = 1;

ConfigTimer0(1);

ConfigUART(9600);

while(1)

{

ShowNum(UARTNum);

}

}


void ConfigTimer0(unsigned char ms)

{

unsigned long tmp;


tmp = 11059200 / 12;

tmp = tmp * ms / 1000;

tmp = 65536 - tmp;

tmp += 12;


T0RH = (unsigned char)(tmp>>8);

T0RL = (unsigned char)tmp;


TH0 = T0RH;

TL0 = T0RL;

TMOD &= 0xF0;

TMOD |= 0x01;

ET0 = 1;

TF0 = 0;

TR0 = 1;

}


void ConfigUART(unsigned long baud)

{

TH1 = 256 - (11059200 / 12 / 32) / baud;

TL1 = TH1;

SCON = 0x50;

TMOD &= 0x0F;

TMOD |= 0x20;

ET1 = 0;

ES = 1;

TF1 = 0;

TR1 = 1;

}


void ShowNum(unsigned char num)

{

LedBuff[0] = DUTable[num/1%10];

LedBuff[1] = DUTable[num/10%10];

LedBuff[2] = DUTable[num/100%10];


LedBuff[3] = 0x40;


LedBuff[4] = DUTable[num & 0x0F];

LedBuff[5] = DUTable[num >> 4];

LedBuff[6] = 0x08;

LedBuff[7] = 0x3F;

}


void LedScan(void)

{

static unsigned char i = 0;


P0 = 0x00;

DULA = 1;

DULA = 0;

P0 = WETable[i];

WELA = 1;

WELA = 0;

P0 = LedBuff[i];

DULA = 1;

DULA = 0;


i++;

i &= ~0xF8;

}


void InterruptTimer0(void) interrupt 1

{

TH0 = T0RH;

TL0 = T0RL;


LedScan();

}


void InterruptUART(void) interrupt 4

{

if(RI)

{

RI = 0;

UARTNum = SBUF;

SBUF = UARTNum;

}

if(TI)

{

TI = 0;

}

}

推荐阅读

史海拾趣

百蓉(ECE)公司的发展小趣事

面对智能制造的浪潮,百蓉公司积极拥抱变革。他们引进了先进的自动化设备,对生产线进行了全面升级,实现了从手工制造向智能制造的转变。这一转型不仅提高了生产效率,还大幅提升了产品质量和产品的一致性,使得百蓉的产品在市场上更具竞争力。

CINCH公司的发展小趣事

CINCH公司深知人才是企业发展的核心竞争力。因此,公司高度重视人才培养和团队建设。公司设立了完善的培训体系,为员工提供了广阔的晋升空间和发展机会。同时,公司还积极引进优秀人才,打造了一支高素质、专业化的团队。这支团队在公司的各项业务发展中发挥了重要作用,为公司的长远发展奠定了坚实基础。

Amulet Technologies公司的发展小趣事

在快速发展的同时,CINCH公司也注重质量管理体系的建设。公司引进了国际先进的质量管理理念和方法,建立了完善的质量管理体系,并通过了ISO9001等质量管理体系认证。这一举措不仅提升了公司的产品质量和服务水平,还增强了客户对公司的信任度和满意度。

Advanced Energy公司的发展小趣事

在电子行业快速发展的同时,AE公司也面临着来自市场竞争、技术更新等多方面的挑战。然而,AE公司凭借其敏锐的市场洞察力和强大的研发实力,成功应对了这些挑战。公司不断调整战略方向,优化产品结构,提升服务质量,以适应市场的变化。同时,AE公司也积极关注未来技术的发展趋势,加大在新兴领域的投入,为公司的未来发展奠定了坚实的基础。

以上只是AE公司在电子行业中的部分发展故事概述,每个故事都体现了AE公司在技术创新、市场拓展、合作伙伴关系等方面的努力和成就。这些故事不仅展示了AE公司的成长历程,也反映了整个电子行业的发展变迁。

Galaxy ( Bel )公司的发展小趣事

Advanced Energy公司成立于1981年,总部位于美国科罗拉多州的丹佛市。在成立之初,AE公司便专注于电源技术的研发与创新。当时,电子行业的电源技术正处于快速发展阶段,AE公司凭借其前瞻性的技术视野和扎实的研发实力,迅速在市场中崭露头角。公司不断推出具有创新性的电源产品,满足了当时电子行业对高效、稳定电源的需求,逐渐在行业内建立了良好的声誉。

BROTHER公司的发展小趣事

随着全球环保意识的提高,BROTHER公司也积极践行环保理念,推动绿色生产。公司注重节能减排和资源循环利用,采用环保材料和生产工艺,减少对环境的影响。同时,BROTHER还开展了一系列环保公益活动,宣传环保理念,提高公众环保意识。通过践行环保理念,BROTHER不仅赢得了社会的认可和尊重,还为公司的可持续发展奠定了坚实基础。

以上五个故事只是BROTHER公司在电子行业发展历程中的一部分缩影。实际上,BROTHER的发展还涉及更多的细节和方面。但无论如何,BROTHER始终坚持创新、质量、服务和环保的理念,不断追求卓越和完美,为电子行业的发展做出了重要贡献。

问答坊 | AI 解惑

dsp2812评估板 LCD例程

dsp2812评估板 LCD例程…

查看全部问答>

KBDHID 键盘布局定制问题(USAGE-TO-SCANCODE)

在kbdhid.cpp文件下 有3个USAGE-TO-SCANCODE类型的数组,不清楚顺序是根据什么来的?请大家指点下…

查看全部问答>

怎么修改对话框的边界?

我在对话框上加了个Picutre Control,里面显示了一张宽度为240的位图,可是对话框两边始终有一些空白,怎么消除掉? 谢谢…

查看全部问答>

想把A主机显示的图像发送到B主机上,除了抓屏还有什么效率比较高的方法

如题,好多天了,没有找到比较好的解决方法。想从底层的驱动来考虑,不知道怎么弄,也没有驱动基础。大家给点建议,谢谢了…

查看全部问答>

ST让我如何相信你?

                                 申请 付费 的样片几个月了(答应3月底)还是音信全无啊?!…

查看全部问答>

【低功耗】Xilinx的FPGA低功耗相关文章下载(四)

这是我的一些Xilinx的FPGA的论文,传上来给大家分享一下!大家多多支持啊! 我会分批上传,方便大家选择性的交流与下载! [ 本帖最后由 jjkwz 于 2011-11-16 17:08 编辑 ]…

查看全部问答>

基于单片机原理的数字直流电压源设计。

要求输出电压的范围为0V~9.9V,纹波不大于10mV,步进0.1v,输出电流大于500mA,能预制置输出初值,输出电压值由数码管显示。单片机选用51系列的。DA转换电路芯片网上看了下DAC0832最简单普遍。有朋友能指导我做下吗?…

查看全部问答>

用ftp下载vxworks镜像到目标机的时候,网络有问题,求助各位前辈

通过ftp将vxworks镜像从PC机下到目标机的时候,是通过ftpXfer这个函数从PC机读取文件,每次读完镜像之后关闭套接字,但套接字指定的端口变成就会time_wait状态,就要等一段时间才能通过这个函数,从PC机再次通过ftp下载镜像,但这段时间有一分半钟 ...…

查看全部问答>

求一个S3C2440 WINCE6.0 的BSP

求一个S3C2440   WINCE6.0 的BSP,我网上下载了一个  总是编译出错,哪位高人那里有通过编译的BSP,发我一份吧! 感激不尽! eyob@163.com  …

查看全部问答>

大家看下这个 到底哪错了

#include #include #define         F_CPU        7372800                                  &nb ...…

查看全部问答>