项目功能 单片机接收计算机发送的串行数据,并把接收到的数据送到P3口8位LED显示。 二、实验过程 (一)实验项目的方案分析 1.设计原理 STC12C5A60S2单片机内部包括微处理器、存储器(存放程序指令或数据的ROM、RAM等)、输入/输出口(I/O口)及其他功能部件如定时/计数器、中断系统等。它们通过地址总线、数据总线和控制总线连接起来。 本实验充分利用了8051芯片的I/O引脚。系统已采用STC12C5A60S2系列单片机为中心器件来设计数码管显示数字,实现从0~9依次显示 本实验在模拟阶段利用单片机模拟PC机发送程序,在设定时器T1为方式2,SCON的设置,为方式1,只发送不接收。单片机在设定过程中只接收不发送。接受PC的信息,来控制数码管
2.器件配置清单 表1器件配置表
(二)实验项目的硬件电路设计 通过Proteus仿真电路软件搭建电路,电路图如图所示。 图1 硬件设计图
(三)实验项目的程序设计 1、C51程序编写
2、keil软件调试截图 通过Keil软件进行C51控制程序的编写,通过不断调试修改,最终的调试好的Keil 程序。 图3调试无措的Keil程序 (四)实验项目的虚拟仿真 打开Keil C软件将上面程序输入,调试无误后编译输出".hex"文件,打开Proteus软件,将之前编译好的".hex"文件加入到芯片中,开始运行仿真,如图4所示。 图4虚拟仿真图 (五)实验项目的实际验证电路及验证结果 将单片机C51程序编译无误后,生成HEX文件,通过STC-ISP下载到单片机中,下载的软件界面如图5所示,搭建的实际电路如图5所示。 图5下载HEX文件到单片机 图6面包板搭建的实际电路 PC向单片机发送数据的截图以及效果图: 功能一:见图7-9所示:
图7发送c0 图8发送c0效果图 图9发送f9 图10发送f0效果图 (六)总结 一开始我设计的是单片机双向通信,在只剩下调试时,更换用PC控制,在这次实验中在连接实物时,将数码管的线接错了。在设置串口通信的时候要弄清楚串口的设置方式,以及清零的方式。
(1)PC机发送程序(用单片机串口模拟PC机串口发送数据)
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
- void delay(uint t)
- {
- uchar i;
- while(t--)
- {
- for(i=0;i<600;i--);
- }
- }
- void main()
- {
- uchar i;
- TH1=0xfd;
- TL1=0xfd;
- SCON=0x40;
- PCON=0x00;
- TR1=1;
-
- while(1)
- {
- for(i=0;i<8;i++)
- {
- SBUF=tab[i];
- while(TI==0);
- TI=0;
- delay(1000);
- }
- }
- }
复制代码
(2)单片机接收程序
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- void main()
- {
- uchar temp=0;
- TMOD=0x20;
- TH1=0xfd;
- TL1=0xfd;
- SCON=0x50;
- PCON=0x00;
- TR1=1;
- while(1)
- {
- while(RI==0);
- RI=0;
- temp=SBUF;
- P3=temp;
- }
- }
复制代码
全部资料51hei下载地址:
串口中断.rar
(12.74 MB, 下载次数: 48)
|