串口通信实验 - 图文

更新时间:2023-10-12 08:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机科学与技术系

实 验 报 告

专业名称 计算机科学与技术专业 课程名称 单片机应用设计 项目名称串口通信实验

班 级

学 号 姓 名

同组人员无

实验日期 2016年4月29日

实验六 串口通信实验

一、实验目的

掌握单片机串行口的工作原理,掌握串口通信程序设计方法,了解MAX232芯片的工作原理。

二、实验内容

1、利用PC机的串口调试助手(STC-ISP中有集成)通过串口向单片机发送一个数据(0-99)作为单片机倒计时的起始时间(秒),单片机收到该信号后启动倒计时程序,倒计时时间显示在LED数码管上,当倒计时完成后蜂鸣器响2-5s以起到提示作用,波特率自定。

2、倒计时过程中如果收到串口新数据,应该结束当前倒计时计数,以新数据重新开始计数。

3、同时单片机外部中断0外接一位独立按键,统计独立按键的单击次数,将单击次数显示在数码管上,显示范围为0-99。并每隔一段时间将单击次数发送给PC机,通过串口助手观察结果。

4、可以通过51汇编或C51编程实现。

三 原理图

四、连线说明

JP4(P3.0) —— JP8(RX1) JP4(P3.1) JP4(P1.0) JP2(P2.0) JP2(P2.1) JP2(P2.2) J70

—— JP8(TX1) —— JP22 —— JP26(STCP) —— JP26(SHCP) —— JP26(DS) —— 短路帽 五、演示程序

#include

unsigned char code wei[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01} ; unsigned char code num[]={

0xc0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ };

unsigned char code shuzi[10]=\

sbit STCP=P3^7; sbit SHCP=P3^6; sbit DS=P3^5;

sbit Bee=P1^0; //蜂鸣器 sbit key=P0^7; int xx;

unsigned char dat = 0; //全局变量 DAT

int count = 0; //倒计时的计数 int count_bee = 0; int number = 4; int flag=0;

void delay(int i) {

while(i--); }

void BeeS() {

int i;

for(i=0;i<300;i++) {

Bee=~Bee; } }

void WR_595(unsigned char x) {

int i;

for(i=0;i<8;i++) {

SHCP=0; DS=0x80&x; SHCP=1; x=x<<1; SHCP=0; } }

void OUT_595(unsigned char position ,unsigned char num) 入

{

WR_595(position); WR_595(num); STCP=0; STCP=1; STCP=0; }

void DisPlay(unsigned int z,int a,int b) 数码管显示

{

int x; int y;

//蜂鸣器

//数码管输入

//数码管输

//

x=z/10; //十位

y=(z-x*10); //个位 OUT_595(wei[a],num[y]); OUT_595(0x00,0xff); OUT_595(wei[b],num[x]); OUT_595(0x00,0xff); }

void recieve() interrupt 4 {

if(RI) //SBUF了1

{

count_bee=0; 计时器置零

dat = SBUF;

xx=dat/16*10+dat; RI = 0; } }

void send(unsigned char x) {

SBUF=x; TI=0;

while(!TI); TI=0; }

void clock()interrupt 1 {

TH0=(65536-50000)/256; TL0=(65536-50000)%6; count ++;

if(count==20) // {

count = 0;

//数据接收 接受完数据时 RI由硬件置为 //在接收到数据的同时把蜂鸣器的

//软件清零 //数据发送 //发送完硬件把TI置1 //软件把TI置0 //定时器0中断 每1s进入一次

本文来源:https://www.bwwdw.com/article/86lf.html

Top