历史上的今天
今天是:2024年12月23日(星期一)
2021年12月23日 | 51单片机串口通信数码管显示
2021-12-23 来源:eefocus
/*********************************************************************************
* 【外部晶振】: 11.0592MHZ
* 【主控芯片】: STC89C52
* 【程序功能】: 串口工作方式1,8位UART,比特率9600,接收串口数据,数码管以十 进制格式显示,并且把接收到的数据加1后通过串口发出
**********************************************************************************/
#include #include typedef unsigned int uint; typedef unsigned char uchar; sbit duanxuan = P2^6;//数码管段选 sbit weixuan = P2^7;//数码管段选 uchar num;//数码管显示的值 //共阴数码管段选表0-9 uchar code SMGduan[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,}; //数码管位选码 uchar code SMGwei[] = {0xfe, 0xfd, 0xfb}; /*==================================== 函数:数码管显示 ====================================*/ void display(uchar i) { static uchar wei; P0 = 0XFF;//清除断码 weixuan = 1;//打开位选锁存器 P0 = SMGwei[wei]; weixuan = 0;//锁存位选数据 switch(wei) { case 0: duanxuan = 1; P0 = SMGduan[i / 100]; duanxuan = 0; break; case 1: duanxuan = 1; P0 = SMGduan[i % 100 / 10]; duanxuan = 0; break; case 2: duanxuan = 1; P0 = SMGduan[i % 10]; duanxuan = 0; break; } wei++; if(wei == 3) wei = 0; } //定时器0初始化 void timer0Init() { EA = 1; //打开总中断 ET0 = 1;//打开定时器0中断 TR0 = 1; //启动定时器0 REN = 1;//允许串口接收 TMOD |= 0X01; //定时器工作模式1,16位定时模式 TH0 = 0xED; TL0 = 0xFF; //定时5ms } //串口初始化 void UARTInit() { EA = 1; //打开总中断 ES = 1; //打开串口中断 SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可变 REN = 1;//串口允许接收 TR1 = 1;//启动定时器1 TMOD |= 0x20;//定时器1,工作模式2 8位自动重装 TH1 = 0xfd; TL1 = 0xfd;//设置比特率9600 } void main()//main函数自身会循环 { timer0Init();//定时器0初始化 UARTInit();//串口初始化 while(1); } //定时器0中断函数 void timer0() interrupt 1 { TH0 = 0xED; TL0 = 0xFF; //定时5ms display(num); //数码管显示函数 } //串口中断函数 void UART() interrupt 4 { uchar temp; if(RI)//判断接收是否完成 { num = SBUF;//读SBUF,读出串口接收到的数据 RI = 0;//软件清零接收标志位 temp = num;// SBUF = ++temp;//写SBUF,把要发送的数据送给发送缓存器 } if(TI)//判断是否发送完成 TI = 0;//清零发送完成标志位 }
史海拾趣
|
动手准备元器件之前,最好对照电路原理图列出所需元器件的清单。为了保证在试制的过程中不浪费时间,减少差错,同时也保证制成后的装置能长期稳定地工作,待所有元器件都备齐后,还必须对其筛选检测。 在正规的工业化生产中,都设有专门的元器件筛 ...… 查看全部问答> |
|
智能大厦是人群高度集中、信息大量流通和传播、业务种类相当复杂、重要设施和档案资料非常集中的 场所,实现智能大厦的高度安全是达到智能大厦的总体智能目标的重要保障。 1.安防系统在智能大厦中的地位 1)安防 ...… 查看全部问答> |
|
winXP下,gprs modem,通过串口连的,同时PC上还有一个phone modem,每次设置“用拨号调制解调器连接”的时候,总是自动选择phone modem,请问应如何设置才能通过GPRS modem拨出去?… 查看全部问答> |
|
使用AVR单片机来实现SPI口的通信,使用两个片子通信,一个主机一个从机,可是SPI协议没有流控的设置啊,发送不管接收正确与否,老是乱码 加了控制也没有用,程序在实验室,没法贴上来 大家遇到的错码都是什么原因造成的啊,看看我有没有犯之类 ...… 查看全部问答> |
|
请教大家一个问题,当我的S3C44B0板子上的FLASH里没有任何程序,或者说我直接给它檫除了,这样我能使用AXD通过JTAG口在SDRAM里对他进行仿真调试吗?有人说不行,我尝试过,程序总是跑飞了,据说是因为硬件没有初始化,但我调试前在AXD里使用命令ob ...… 查看全部问答> |
|
一、 简介JMDM-WX32MB是深圳市精敏数字机器有限公司自主研发的一款支持无线控制、独立控制、电脑串口控制的多功能工业级高可靠IO控制器,可用于32点以内的IO控制、500米范围内的无线控制:16路光电隔离数字量输入、16路继电器输出。JMDM-WX32M ...… 查看全部问答> |
|
大家好,我一直在使用znFAT32,我遇到个很紧急的问题,大家能帮解答下吗? 我创建一个txt文件然后一直往里添加数据znFAT_Add_Dat(struct FileInfoStruct *pfi,UINT32 len,UINT8 *pbuf),但是添加到17.2 MB (18,064,053 字节)时,程序就出不来了 ...… 查看全部问答> |
|
R7F0C80212套件试用之开发环境搭建2---代码自动生成工具code generator 本帖最后由 yang_alex 于 2014-9-8 08:05 编辑 R7F0C80212套件试用之开发环境搭建2---代码自动生成工具code generator 我看过好几家嵌入式处理器厂家的自动代码生成工具,其实所谓的自动代码生成工具主要还是根据开发工程师的需 ...… 查看全部问答> |




