单片机课设pc与单片机串口通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈 尔 滨 理 工 大 学 荣 成 学 院
单片机 课程设计
题目:PC 与单片机的串口通信 班级:电气 姓名: 学号:
一、题目简介
如今,在很多场合中,要求单片机不仅能独立完成单机的控制任 务,还要能与其他数据控制设备(单片机、PC 机等)进行数据 交换。串口通讯对单片机而言意义重大,不但可以实现将单片机 的数据传输到电脑端,而且也能实现电脑对单片机的控制。 89C52 有一个全双工的串行通讯口,所以单片机和电脑之间可以 方便地进行串口通讯。 串行口是计算机与外部设备之间进行数 据交换的重要介质,所以串行通信在工程中有着广泛的应用。这 种通信的实现,主要是靠上位 PC 机与下位单片机组成的二级系 统通过 RS232 进行通信。 此次设计通过计算机输入数据通过串口 传送给单片机进而在 LED 上显示。
二、实现方案
将程序写好后生成.HEX 文件,将其发送至 AT89C52 单片机上, 应用串口助手调好通讯端口与波特率后,打开串口助手实现 PC 发送字符给单片机,单片机接受到后即在 LED 屏幕上进行显示, 同时将其回发给 PC 机。
磁
磁
三、电路原理图
珠
珠
千
百
十
个
四、软件流程图
开始
初始化定时/计数器 1 和串口控制寄存器
启动定时/计 数器 1
取存储区数据并 启动串行口发送
N
发送完毕
Y
所有数据发送 完毕
N
等待 PC 机发送 命令数据
结束
五、软件设计源程序 #include
#define uchar unsigned char #define uint unsigned int
sbit LCD_RS = P2^2; sbit LCD_RW = P2^1; sbit LCD_EN = P2^0;
uchar Recv,m,n;
void DelayMs(uchar n) { uchar j; while (n--) { for (j = 0; j < 113; j++); } }
void Delay4Us(void) { }
void LCD_Busy(void) { bit busy=1; while(busy) { LCD_RS=0; LCD_RW=1; LCD_EN=1; busy=(bit)(P0&0x80); Delay4Us(); } LCD_EN=0; }
void LCD_Wcmd(uchar cmd) { LCD_Busy(); LCD_RS=0;
LCD_RW=0; LCD_EN=1; P0=cmd; Delay4Us(); LCD_EN=0; }
void LCD_Wdat(uchar dat) { LCD_Busy(); LCD_RS=1; LCD_RW=0; LCD_EN=1; P0=dat; Delay4Us(); LCD_EN=0; }
void LCD_Init(void) { DelayMs(10); LCD_Wcmd(0x38);
DelayMs(10); LCD_Wcmd(0x0c); DelayMs(10); LCD_Wcmd(0x06); DelayMs(10); LCD_Wcmd(0x01); DelayMs(10); }
void LCD_GoXY(uchar x,uchar y) { if(y==0x01) LCD_Wcmd(x|0x80); if(y==0x02) LCD_Wcmd(x|0xc0); }
void LCD(uchar show) { if(n==16) { m=0;
n=0; LCD_Wcmd(0x01); } if(m<16) { LCD_GoXY(m,1); LCD_Wdat(show); m++; } else { LCD_GoXY(n,2); LCD_Wdat(show); n++; } } void Uart_WByte(uchar out) { SBUF=out; while (!TI); TI=0; }
void Uart_Init(void) { SCON=0x50; PCON=0x00; TMOD=0x20; TL1=0xfd; TH1=0xfd; EA=1; ES=1; //IE=0x90; TR1=1;
}
void main(void) {
Uart_Init(); LCD_Init(); while(1); }
void Uart_Isr(void) interrupt 4
{
while (!RI);
RI=0;
Recv=SBUF;
Uart_WByte(Recv);
LCD(Recv);
Recv=0;
六、总结
通过本次课设《PC与单片机的串口通信》这一课题让我进一步熟悉了89C52单片机的原理以及对串口助手的操作。通过设计PC与单片机的串口通信进一步加深了89C52单片机的工作原理。课设过程中遇到问题时与同组同学共同探讨,认真观察单片机原理图,认真的对待每一个设计过程中的细节以及老师的帮助顺利完成本次课设。
七、参考文献
《单片机原理及应用》