完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、使用串口助手;
2、按键控制单片机P2^1,当P2^1==0时,发送数据0x57,串口助手收到0x57,有去抖功能。 3、串口助手发送数据0x01,单片机可以收到,P1_0口动作。 4、89C52单片机,22.1148晶振,9600波特率, 方式一发送。 以上,请帮忙写个程序吧。 收取数据我调试没问题了。但是发送一致搞不成。烦请写一下代码实现以上功能,烦请带注释,谢谢,谢谢。 |
|
相关推荐
6个回答
|
|
把你的程序发出来,提出问题在哪吧
|
|
|
|
|
|
|
|
请上QQ525291581送资料给你
|
|
|
|
以下内容来源于《51单片机轻松入门—基于STC15W4K系列》第4章,请参考。 4.1.4 单片机与计算机通信的简单例子 例4.1 单片机向电脑发送0~255范围内不断增大的数据,使用串口1,定时器T1作波特率发生器,波特率9600/22.1184MHz。单片机串口1接收引脚是RXD/P3.0,串口1发送引脚是TXD/P3.1,也就是默认的程序下载引脚,程序下载完毕即可通过串口助手进行测试。 #include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定义头文件 void delay500ms(void) { // 由第一章介绍的软件计算得出 } void UART_init(void) { // 下面代码设置定时器1 TMOD = 0x20; // 0010 0000 定时器1工作于方式2(8位自动重装方式) TH1 = 0xFA; //波特率:9600 /22.1184MHZ TL1 = 0xFA; //波特率:9600 /22.1184MHZ TR1 = 1; // 下面代码设置定串口 AUXR =0x00; // 很关键,使用定时器1作为波特率发生器,S1ST2=0 SCON = 0x50; //0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允许接收) } void UART_send_byte(unsigned char dat) { SBUF = dat; while(!TI); TI=0; // 此句可以不要,不影响后面数据的发送,只供代码查询数据是否发送完成 } void main() { unsigned char num=0; UART_init(); while(1) { UART_send_byte(num++); delay500ms(); } } 运行结果如图4-4所示。 |
|
|
|
很好很好,谢谢,学习了
|
|
|
|
串行通讯是计算机与其他机器之间通讯的一种常用方法,在Windows操作系统中提供了实现了各种串行通讯的API函数。通常可按以下步骤实现串行通讯:打开串口、设置串口、监视串口事件、发送数据、接收数据和关闭串口。
3.1 打开串口 将串口设备作为文件以独占方式打开。 m_hComm = CreateFile(" \\.\COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); if (m_hComm == INVALID_HANDLE_VALUE) { // 打开串口失败 } 3.2 设置串口 在Windows的SDK中定义了一个DCB结构,其中的成员是对串口设备的设置,常用的有以下几个: DWORD BaudRate; // 波特率 DWORD fParity; // 奇偶校验 BYTE ByteSize; // 字节长度 BYTE StopBits; // 停止位 实例: if (!GetCommState(m_hComm, &m_dcb)) { // 获取串口设置失败 } m_dcb.BaudRate = lBaudRate; m_dcb.ByteSize = cByteSize; m_dcb.Parity = cParity; m_dcb.StopBits = cStopBits; if (!SetCommState(m_hComm, &m_dcb)) { // 设置串口失败 } 3.3 监视串口事件 开辟一个监视线程循环监测串口事件的发生,当有事件发生时,发送相应的消息。 OVERLAPPED os; ZeroMemory(&os, sizeof(OVERLAPPED)); PurgeComm(m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT); while (m_hComm != NULL) { dwEvtMask = 0; ClearCommError(m_hComm, &dwErrorFlags, &ComStat); if (!WaitCommEvent(m_hComm, &dwEvtMask, &os)) { if ((dwEvtMask & EV_RXCHAR) == EV_RXCHAR) { SendMessage(m_hWnd, WM_SERIAL_READ, (WPARAM) 0, (LPARAM) &pSerialComm->m_nPort); } } WaitForSingleObject(m_hEvent, 50); } 3.4 发送数据 WriteFile(m_hComm, pBuffer, dwLength, &dwBytesWritten, &os); 3.5 接收数据 ReadFile(m_hComm, pBuffer, dwBytesRead, &dwBytesRead, &os); 3.6 关闭串口 SetCommMask(m_hComm, 0); // 停止发送和接收数据,并清除发送和接收缓冲区 PurgeComm(m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); CloseHandle(m_hComm); m_hComm = NULL; |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
828 浏览 0 评论
824 浏览 0 评论
861 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
836 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1292 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11824 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 16:02 , Processed in 0.914226 second(s), Total 53, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号