历史上的今天
返回首页

历史上的今天

今天是:2024年12月24日(星期二)

正在发生

2021年12月24日 | 51单片机实验1——数码管显示串行口接收的字符的ASCII码

2021-12-24 来源: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”,如图下:

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


推荐阅读

史海拾趣

Aplus Flash Technology Inc公司的发展小趣事

近年来,电子行业面临着原材料价格上涨、贸易壁垒增多等挑战。Aplus Flash Technology Inc公司也受到了这些因素的影响,生产成本上升,市场竞争压力加大。为了应对这些挑战,公司及时调整了发展战略,加大了对技术研发的投入,提高了生产效率和质量。同时,公司还积极开拓国际市场,通过参加国际电子展会、建立海外销售网络等方式,拓展海外市场份额。这些举措使公司在面对市场挑战时保持了稳健的发展态势。

Advanced Microelectronic Products Inc公司的发展小趣事

AMP公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和团队建设。公司建立了一套完善的人才培养机制,通过内部培训、外部引进等方式,不断提升员工的专业技能和综合素质。同时,公司还注重团队建设,鼓励员工之间的合作与交流,营造积极向上的工作氛围。这些举措为AMP公司的持续发展提供了有力的人才保障。

D1 International Inc公司的发展小趣事

随着技术的不断成熟,D1 International Inc公司开始积极拓展市场。公司不仅在国内市场取得了显著的成果,还成功打入国际市场。与此同时,D1 International Inc公司也注重与其他企业的战略合作。通过与知名电子制造商的合作,D1 International Inc公司的产品线得到了极大的丰富,同时也提升了公司的品牌影响力。

Bourns公司的发展小趣事

随着公司的不断发展,Bourns在1952年取得了世界上第一个可调式电阻的专利,即TrimpotR。这一技术突破标志着Bourns在电子元器件领域的领先地位,也为公司的产品线增添了核心竞争力。可调电阻的广泛应用推动了Bourns在电子行业的快速发展。

Agere System(LSI Logic)公司的发展小趣事

Bourns公司一直以来都注重技术研发与创新。不论是自行研发的产品,还是通过并购或特许所取得的技术,Bourns都持续投入于开发新产品。例如,Bourns推出的最新型旋转式电位器,具备绝缘塑料轴、高额定旋转周期以及宽泛的工作温度范围等特性,这些创新产品在市场上取得了良好的反响。

EMC Technology RF Labs公司的发展小趣事

在追求经济效益的同时,RF Labs也注重可持续发展和环保责任。他们积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。同时,RF Labs还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了RF Labs的社会责任感,也为公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

嵌入式通信设备开发

通过介绍二层交换机、7信令分析仪、ATM信元收发卡和GSM信令测试仪等真正的通信设备的开发来说明MPC8260在通信设备开发过程,市面上非常少见。 辅以大量代码、分析和注释,使读者很快能进行嵌入式通信设备的开发。信令分析仪动辄几万,有的甚至几十 ...…

查看全部问答>

各位高手,最近在做一个大型PC软件移植到WINCE平台的项目,请教几个问题!

公司项目需要,最近一直在准备将公司原来的PC平台的一个软件移植到WINCE5.0下,由于软件很大,今天移植了一个模块,发现原来软件需要的winbase.h里的_lopen()函数在Wince的相应库里面没有实现,还有就是PC平台的setupapi.h在Wince平台下没有找到这 ...…

查看全部问答>

stc下载线用不了

stc单片机xtal2和xtal1为什么没有电压…

查看全部问答>

简单的创意——年发电量4720万千瓦

一个简单的想法,可以存储不少能量   2月25日消息,桥梁始终暴露在自然环境下,经受着各种气候条件和天气状况的考验。令人感到不解的是,一直以来人们未曾想过借助这些巨大的人造结构利用生态友好型天然能源。现在,意大利设计师提出了建造 ...…

查看全部问答>

MSP430UIF 有特价促销,需要的进来看看(确实不错)

我知道打广告不好,但是确实是非常不错的活动。 需要的同志们去买吧。 不是那么实惠我也不会发。 原价500的,目前特价限量促销中,一个208 2个-3个198 http://item.taobao.com/item.htm?id=15010483611…

查看全部问答>

第二周beaglebone试用开发板芯片测试单桨时发现是假了

板子做好一段时间了之前没怎么理会它上的全性能测试M3 M4 系列它是兼优了无刷电机projcet的所以就没多大理会 结果今天应用它下载单桨测试程序是发现有问题老提示。。警告提示但我们买的芯片的型号是没问题的啊但想起以前我们遇到的问题一想起我觉的 ...…

查看全部问答>

最近学ti的C2000遇到一个问题,关于片内ADC的

我用的是ti给的例程,在调的时候用CCS看变量的值,发现变量的值根本没变,我先看了一下变量的值,然后让他跑一会,再看。两个数组变量里面的值,根本没变。求哪位大神,给我指点一下,这个例程到底怎么用? #include \"DSP28x_Project.h\"  & ...…

查看全部问答>

好书分享-Altera FPGA/CPLD设计(基础篇)

Altera FPGA/CPLD设计(基础篇) 编辑 本书可作为高等院校通信工程、电子工程、计算机、微电子与半导体等专业的教材,也可作为硬件工程师和IC工程师的实用工具书,结合作者多年工作经验,系统地介绍了FPGA/CPL的基本设计方法。在介绍FPGA/CPLD ...…

查看全部问答>

基于FPGA的高速AD采样

用FPGA设计高速采样控制器的时候要注意些什么问题哇?求大神!!! …

查看全部问答>

MSP430电表设计资料

MSP430ESP430中文资料MSP430电表设资料 …

查看全部问答>