历史上的今天
返回首页

历史上的今天

今天是:2024年12月23日(星期一)

正在发生

2021年12月23日 | 51单片机实验1——串行通信(TX/RX)

2021-12-23 来源:eefocus

仿真电路图如下:
图1

代码如下:


#include "reg51.h"

#define uint unsigned int 

#define uchar unsigned char


uint code segcode[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D, 0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; 

uchar code weicode[4]={0x0e,0x0d,0x0b,0x07};  

uchar disbuf[4]={0,0,0,0};  //定义并初始化数码管数据缓冲区


void delayms(uint x)   //延时1ms函数

{

                          uchar i;

                          while(x--)

                          {

                            for(i=0;i<125;i++);

                           }

}


void usart_Init( ) //串行中断初始化程序

{

                         TMOD=0x20;     

                         TH1=0xfa;

                         TL1=0xfa;     // 配置串口波特率为 9600

                         SCON=0x50;  //设置串口工作在方式1,8位数据位

                         PCON=0x80;    // 配置为波特率倍增

                         IE=0x90;      // 打开中断

                         TR1=1;        // 启动定时/计数器

}


void segdisplay() //数码管显示函数

{

                            uchar i;

                            for(i=0;i<4;i++)

                            {

                              P1=weicode[i];

                              P0=segcode[disbuf[i]];  

                              delayms(1);

                              P0=0x00;

                            }

}


void main( ) //主函数

{

                             usart_Init( );   //串口初始化

                             while(1) { segdisplay(); } //CPU循环执行显示函数

}


void usart_Int( ) interrupt 4 //串行中断服务程序

{

                             if(RI==1)  //判断是否为接收中断

                             {

                               uint temp;   //临时开辟一段内存空间,用以存放接收到的数据

                               RI=0;         //将RI及时置0,防止数据丢失 

                           temp=SBUF;    //读取接收数据缓冲器的内容到指定内存空间中

                           SBUF=temp; //将输入的数据重新发送到上位机,回显

                           while(TI==0);

                           TI=0;      //等待发送完成将TI复位

                           disbuf[3]=disbuf[1];

                           disbuf[2]=disbuf[0];

                           disbuf[1]=temp/0x10;

                           disbuf[0]=temp%0x10;   //修改显示缓冲区

                            }

}

 

运行仿真后,输入字符‘1’,数码管显示“31”,如图下:

图2

依次输入其他字符会相应显示他们的ASCII码,输入第二个字符‘2’,数码管显示“3132”;输入第三个字符‘5’的话,数码管显示“3235”(将之前的31顶掉了),连续输入字符后依次类推。


推荐阅读

史海拾趣

e2v technologies公司的发展小趣事

在医疗领域,e2v也积极发挥其作用。公司针对放射治疗系统提供了价格合理、易于运输和安装的国内制造设备,支持中国各地医院和诊所的放射治疗工作。这些设备不仅提高了放射治疗的效果和效率,也为患者带来了更好的治疗体验。

BALLUFF公司的发展小趣事

随着自动化技术的不断进步,传感器技术的需求也日益增长。BALLUFF公司紧跟时代潮流,不断推出创新的传感器产品。从1968年开始生产感应式接近开关BES,到1978年光学开关BOS的面世,再到后来由微型处理器控制的转换机构与角度编码器的加入,BALLUFF在传感器领域的技术实力不断增强。此外,公司还陆续推出了旋转传感器BRG、识别系统BIS和超声波位移传感器BTL等产品,进一步丰富了其传感器产品线,满足了不同行业的需求。

Fenwal Controls公司的发展小趣事

Fenwal Controls深知,只有与合作伙伴携手共进,才能实现共赢。因此,公司积极寻求与产业链上下游企业的合作机会。通过与原材料供应商、设备制造商、分销商等合作伙伴的紧密合作,Fenwal Controls不仅降低了采购成本、提高了生产效率,还拓展了销售渠道、增强了品牌影响力。这些合作关系的建立,为Fenwal Controls的长期发展奠定了坚实基础。

CSR plc(剑桥硅晶无线电)公司的发展小趣事

CSR plc的创始人们怀揣着对音频技术的热情与追求,在剑桥这个科技创新的摇篮中开始了他们的征程。初创时期,公司的主要业务集中在音频领域,他们研发出了一系列创新的音频技术,为当时的移动设备市场带来了前所未有的听觉体验。这些技术的成功应用,不仅让CSR plc在行业内崭露头角,也为公司的后续发展奠定了坚实的基础。

Filtran Ltd公司的发展小趣事

Filtran Ltd成立于2000年代初,初期专注于滤波器技术的研发。在无线通信领域,滤波器是确保信号纯净度的关键组件。公司研发团队经过数年不懈努力,成功研发出一种新型高性能陶瓷滤波器,该滤波器不仅体积更小,而且能在更宽的频率范围内保持优异的性能。这一创新技术迅速吸引了手机制造商的注意,Filtran Ltd迅速成为多家国际手机品牌的核心供应商,市场份额显著提升。

AAC [American Accurate Components]公司的发展小趣事

近年来,AAC公司一直致力于技术创新和产品研发。在声学、光学、触感、传感器及半导体等领域,AAC积累了近三十年的技术经验。这些技术积累使得AAC能够不断推出具有创新性和竞争力的新产品。例如,AAC在某次创新峰会上发布了超宽频音质的Opera高低音分频方案、旗舰级体验大众化的声学触觉一体化Combo方案以及安卓触感“天花板级”的仿生振感马达等三大技术新品。这些新品的发布不仅彰显了AAC在电声元器件领域的技术实力,也为智能手机等消费电子行业注入了新的活力。

这五个故事只是AAC公司发展历程中的一部分,但它们足以展现AAC在电子行业中的不断进取和创新精神。从一个合资企业起步,到如今成为全球著名的电声元器件制造商之一,AAC凭借敏锐的市场洞察、坚定的发展决心以及持续的技术创新,在电子行业书写了自己的传奇篇章。

请注意,以上内容仅是基于参考文章的事实性描述,并未涉及对AAC公司的任何评价或判断。同时,由于我无法获取AAC公司的实时信息,因此以上内容可能与AAC公司的最新发展情况有所出入。如需了解更多关于AAC公司的最新信息,建议查阅相关新闻或访问AAC公司官方网站。

问答坊 | AI 解惑

MMU地址映射表问题!

目前在做一个SRAM驱动,写成的是流驱动,驱动写好了! 但是在做MMU地址映射表时出问题了!具体如下: 原来的g_oalAddressTable[DATA] 表为 g_oalAddressTable         DCD     0x80000000, ...…

查看全部问答>

方法和技术——《使用2790型数字源表开关系统测试双安全气囊充气机模块》

机械臂接口 – 数字I/O 2790内置的数字接口能够直接控制器件机械臂。数字接口包含五路TTL兼容数字输出和两路输入,以及外部供电的继电器和地线连接。五路输出提供测试通过/失败通知。可以定义两个上限和两个下限用于任何数字万用表测试。每个测 ...…

查看全部问答>

有谁用过CC430及CC1111的吗?

本帖最后由 paulhyde 于 2014-9-15 03:39 编辑 有谁用过CC430及CC1111的吗?有没有相关的资料,最好是中文的  …

查看全部问答>

求教FPGA程序JTAG及AS口加载问题

今天调新板子,程序从JTAG和AS口都下不进去,且提示不同。 加载JTAG,程序烧到48%,出ERROR:  CFG_DONE pin failed to go high. 用万用表测,CFG_DONE 角经电阻10K接到3.3V,且 CFG_nCE 已接地。 换成AS口,在选择目标POF文件时就出错 ...…

查看全部问答>

有关zigbee板块的话题发表的一个小建议

最近在zigbee板块发表帖子时发现选项只有问题讨论,已解决等,是否可以在增加一个经验分享呢?因为有时发帖子时搞个问题讨论或者已解决有点不伦不类,望采纳!…

查看全部问答>

关于单片机时钟频率的问题

想请教大家一个问题,我用的是atmega128最小系统板,每次我编好一个程序,然后用Programmers Notepad [WinAVR] 调试,用makefile选择F_CPU频率,有时候选择8M,有时候选择1M,程序调试好后用AVR Studio 4 下载到单片机都可以运行。我想问一下,用ma ...…

查看全部问答>

我想用单片机制作一个比较大音乐显示屏,

我想用单片机制作一个比较大音乐显示屏,但是我只是初学者。求大神给点电路图和材料列表。谢谢…

查看全部问答>

出售二手书,价格好商量,联系qq972758172

出售二手书,价格好商量,联系qq972758172 …

查看全部问答>