登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
单片机开发论坛
›
C语言论坛
›
单片机串口通信求助
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版
单片机串口通信求助
[复制链接]
4018
0
单片机***
新手上路
发表于 2018-3-8 21:28:55
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
本人
单片机
小白,想入门单片机,串口通信遇到了问题望大神不吝赐教
这是我用的板子,和他串口通信的是一个扫码枪,想实现扫码枪扫描一个条形码,液晶显示屏上显示条形码上的数字
附上这个板子的原理图
TX-1C型单片机实验板原理图.pdf
(1015.98 KB, 下载次数: 0)
2018-3-8 21:14 上传
点击文件名下载附件
扫码枪是串口扫码枪
现在的情况是我在使用串口调试工具的时候送数据是没有问题的,液晶上也有显示,但是扫码枪扫码之后却完全没有反应,网上说要扫码枪和单片机分别供电需要共地,但我不是很懂啊,应该怎么实现呢。这个实验板上有焊接max232模块实现TTL与RS232的转换,是不是就默认共地了???
很懵逼啊
使用的是c语言,以下是我的代码
#include <REG52.H>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
uchar UART_buff;
uchar table[20];
int count;
bit New_rec = 0, Send_ed = 1;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
void delay(uint z) { //延时函数
uint x,y;
for(x=z; x>0; x--)
for(y=110; y>0; y--);
}
void write_com(uchar com) { //需要看操作时序
lcdrs=0;
P0=com; //P0送的指令码
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_dat(uchar dat) { //需要看操作时序
lcdrs=1;
P0=dat; //P0送的指令码
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init() {
dula=0; //关闭数码管锁存端
wela=0;
lcden=0;
write_com(0x38); //设置显示模式
write_com(0x0e); //设置光标
write_com(0x06); //设置字符指针
write_com(0x01); //清屏指令
write_com(0x80); //光标定位
}
//----------------------------------------------
void main (void) {
int num;
init();
SCON = 0x50; //串口方式1, 8-n-1, 允许接收.
TMOD = 0x20; //T1方式2
TH1 = 0xFD; //9600bps@11.0592MHz
TL1 = 0xFD;
TR1 = 1;
ES = 1; //开中断.
EA = 1;
while(1) {
if (New_rec == 1) { //如果收到新数据
ES=0;//关闭串口中断
SBUF = UART_buff; //发送数据
table[count++]=UART_buff;
while(!Send_ed); //等待数据发送完毕
if(!(table[9]==0)) { //如果缓存表满,给LCD送出数据
init(); //清屏及光标定位
for(num=0; num<10; num++) {
write_dat(table[num]);
}
count=0; //缓存表初始化
num=0;
memset(table, 0, 20*sizeof(char)); //缓存表清零
}
ES=1;//开启串口中断
New_rec = 0; //接收完数据,标记置0
Send_ed = 1; //发送完数据,标记置0
}
}
}
//----------------------------------------------
void ser_int (void) interrupt 4 {
if(RI == 1) { //处理接收中断
RI = 0; //接收中断标记置0
New_rec = 1; //通知主函数接收到新数据
UART_buff = SBUF; //取串口数据
}
if(TI == 1) { //处理发送中断
TI = 0; //发送中断标记置0
Send_ed = 1; //通知主函数数据发送完成
}
}
//----------------------------------------------
复制代码
举报
回复
28 个评论
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
为什么电动车会着火?原因是什么?电动车充
其实电动车起火的新闻我们也不是第一次看到了,让很多人对电动车的安全性产生质疑,但
性价比超高的国产单片机了解一下
hello大家好,我是无锡矽杰微电子的马甲小号 今天给大家介绍一颗单片机,我们的
上手简单,开发资料齐全的触摸单片机了解一
hello,各位工程师大大们新年快乐 我是无锡矽杰微电子的马甲号。 我司新推出了
国产单片机推荐XC8P9530 可广泛应用于 电量
位工程师朋友们,大家好,我是无锡矽杰微电子的马甲小号 给大家介绍一款我们23年底新
单元测试/集成测试自动化工具
CoverageMaster winAMS : 适用于嵌入式目标机代码的单元测试/集成测试工具 全面支
更多
精华推荐
低成本、高性能、带EEPROM了解一下
工控仪表/水电气表LCD驱动/抗干扰液晶段码
软件模拟2812通信协议导致的种种问题,你遇
适用于电子鞭炮、电子蜡烛灯等方案的单片机
为什么电动车会着火?原因是什么?电动车充
性价比超高的国产单片机了解一下
国产单片机推荐I 低功耗、强驱动、极具性价
上手简单,开发资料齐全的触摸单片机了解一
更多
社区学堂
为什么电动车会着火?原因是什么?电动
性价比超高的国产单片机了解一下
为什么电动车会着火?原因是什么?电动车充
其实电动车起火的新闻我们也不是第一次看到了,让很多人对电动车的安全性产生质疑,但
性价比超高的国产单片机了解一下
hello大家好,我是无锡矽杰微电子的马甲小号 今天给大家介绍一颗单片机,我们的
上手简单,开发资料齐全的触摸单片机了解一
hello,各位工程师大大们新年快乐 我是无锡矽杰微电子的马甲号。 我司新推出了
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表