选用芯片:AT89S52
函数功能:见如下代码。
/*******************************************************************
函数功能:PC机发送数据给单片机,每次发送3个字节(每字节为8位)的数据,
每个字节的内容为0~99无符号整数中的一个;单片机接收PC机串口发送过来的
这3个字节数据,并将它们依次以十进制方式显示在6位数码管中(每两个数码管
显示一个字节数据,例如发送数据为11,9,70,则数码管上显示11 09 70);
显示采用共阳极数码管,采用动态扫描显示方式。
作者:Crazy Wind
日期:2020.10.22
version:1.0.0
********************************************************************/
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //段码:0~9
uchar code smgwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码
uchar b;
uchar k=0;
uchar y[9]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; //给数组y[]一组初始值
/*****************************************************
函数功能:ms延时
******************************************************/
void delayms(uint ms) //毫秒延时
{
uint i,j;
for(i=0;i for(j=115;j>0;j--); } } /***************************************************** 函数功能:发送数据x ******************************************************/ void send_char(uchar x) { SBUF=x; //SBUF是数据缓冲寄存器(暂存数据),把数据x输入到SBUF while(!TI); //等待数据发送 TI=0; //每发送8位数据TI就自动置1,需软件清零 } /***************************************************** 函数功能:串口初始化、T1作波特率发生器初始化、打开串口中断 ******************************************************/ void init() { TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率 TH1=0xFD; //波特率9600 TL1=0xFD; SCON=0x50; //串口工作方式1 允许接收 PCON=0x00; //波特率不倍增 TR1=1; //启动定时器1 EA=1; //打开总中断 ES=1; //打开串口中断 } /***************************************************** 函数功能:把接收到的数据转换十进制,再转换成对应的段码 ******************************************************/ void quduanma() { y[k]=smgduan[b/16]; y[k+1]=smgduan[b%16]; y[k+2]=smgduan[10]; } void main() { uint n; init(); //串口初始化 while(1) { for(n=0;n<8;n++) { P2=smgwei[n]; P0=y[n]; delayms(1); P0=0xff; } } } /***************************************************** 函数功能:串口接收的中断函数 ******************************************************/ void TNT_Uart() interrupt 4 { RI=0; //每接收8位数据RI就自动置1,需软件清零 b=SBUF; //SBUF是数据缓冲寄存器(暂存数据),把数据输出到b quduanma(); send_char(b); //传给电脑接收到的数据 k=k+3; if(k==9) //装满8位就重装 { k=0; } }
上一篇:51单片机串口通信数码管显示
下一篇:51单片机实验1——串行通信(TX/RX)
推荐阅读最新更新时间:2024-11-09 11:41
推荐帖子
- msp430f5529双路输出pwm波
- #includemsp430.hexternunsignedintperiod,period1;intpwm1(period,period1)调节占空比{P2DIR|=BIT0+BIT5;//P2.0andP2.1outputP2SEL|=BIT0+BIT5;//P2.0andP2.1optionsselectTA1CCR0=1000-1;
- fish001 微控制器 MCU
- 设计灵活、高性能的嵌入式系统
- 您的下一个嵌入式系统设计项目需要的是什么:是可以让您轻松地定制设计的灵活的系统元件,还是额外的性能空间,以便您在设计周期中加入更多的功能?为什么要让自己承受过度的开发压力,并且只能舍此取彼呢?软处理和IP定制能够为同时确保灵活性和高性能提供了最佳的解决方案,将定制设计的概念和协处理带来的性能加速结合起来。分立处理器只能提供固定的外设选择,并且一些性能受到时钟频率的限制。在嵌入式FPGA所提供的平台上,您可以创建一个具有大量定制处理器核、灵活的外设、甚至协处理减负引擎的系统。现在,您能设计出
- jioeio 嵌入式系统
- 雷达测量 功率、频谱及其相关参数的测量
- 雷达系统应用广泛,不同类型的雷达应用场景也不同,它需要综合考虑性能、尺寸、成本等一系列因素。比如警用雷达常使用连续波雷达来简单测量运动车辆的速度而不需关注距离信息。因此,低成本和小尺寸就比先进性能和特性更重要。另一种极端情况下,复杂的相控阵雷达,可能有上千个收发组件同时工作,另外他们可能依靠复杂的技术来提升性能,比如说,旁瓣调零,参差PRI,捷变频、实时波形优化等。一起来看看雷达参数的测量。功率/频谱的测量通常,雷达发射机是系统中成本最高的部件,它具有最高的功耗,最严
- 火辣西米秀 模拟与混合信号
- msp430f149 usart 谁能告诉我这个程序是什么意思啊
- //*****************************************************************************//MSP-FET430P140Demo-USART0,Ultra-LowPwrUART19200EchoISR,32kHzACLK////Description:Echoareceivedcharacter,USART0RXISRathigh-speedused//withultr
- yanqitwins 微控制器 MCU
- MicroPython中新增蓝牙的文档
- MicroPython中新增了蓝牙部分的文档,可以初步进行使用了。http://docs.micropython.org/en/latest/library/bluetooth.htmlMicroPython中新增蓝牙的文档 这个IC图片很酷
- dcexpert MicroPython开源版块
- 【2024 DigiKey 创意大赛】基于树莓派的空巢老人监护系统
- 一、项目简介1、设计名称基于树莓派的空巢老人监护系统2、项目照片环境监测部分:跌倒监测部分:3、项目用到的板卡(1)RaspberryPi5处理器:2.4GHz4核64位Cortex-A76内存:4GBLPDDR4X-4267通讯接口:Wi-Fi6(802.11ac)支持2.4GHz和5GHz频段Bluetooth5.2支持低功耗蓝牙连接1个2.5Gbps1000MEthern
- 空耳- DigiKey得捷技术专区
设计资源 培训 开发板 精华推荐
- AD8177-EVALZ,基于 AD8177 三路视频交叉点开关的评估板
- 使用 LTC3637HMSE 5V-76V 输入至 5V 输出、具有软启动功能的 1A 稳压器的典型应用
- 使用 TB62757FUG 升压 DC-DC 转换器用于 4 个白光 LED 驱动器的典型应用
- MC10XS4200 双路 24V 高边开关典型应用电路
- LT1372IS8 具有直接反馈的正负转换器的典型应用
- 单相电表
- DC2423A-B,基于具有遥测功能的 LTM9100 隔离式 380V 开关控制器的演示板
- OP249FZ瞬态输出阻抗测试治具典型应用电路
- LT1084CT-5、5V/5A LDO 稳压器的典型应用电路
- BR262AD001GEVK、BELASIGNA R262 模拟演示器评估板