教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 资料大全 >

广工单片机实验报告

来源:网络收集 时间:2025-12-25
导读: 计算机 学院 计算机科学与技术 专业 5班 学号 3110006054 姓名 谭威 协作者______________ 教师评定________________ 实验题目 单片机I/O口—流水灯实验 一.实验目的: 1.学习单片机各I/O口的结构特点及相关寄存器的使用方法。 2.掌握一个简单的具体的单片

计算机 学院 计算机科学与技术 专业 5班 学号 3110006054

姓名 谭威 协作者______________ 教师评定________________

实验题目 单片机I/O口—流水灯实验

一.实验目的:

1.学习单片机各I/O口的结构特点及相关寄存器的使用方法。

2.掌握一个简单的具体的单片机项目的开发流程。

3.了解Proteus ISIS 软件及实用方法。

4.熟悉Proteus ISIS 与uVision2 IDE 的开发环境的互连调试。

二.实验内容:

1.打开 ISISProfessional,参照“实验电路”绘制仿真电路的原理图。

2.编程实现:

(1)从VD1~VD32逐次点亮每个LED,然后熄灭。每个LED亮灯时间约为200ms。

(2)点亮VD32,200ms后再点亮VD31····最后点亮VD1,直到全部灯被点亮。

(3)在全部灯亮的情况下,从VD1~VD32逐次熄灭LED,熄灭VD1,延时200ms;然后熄灭VD2,延时200ms····熄灭VD32,全部灯被熄灭。

(4)重复上述过程。

三.实验电路:

四.实验源程序:

#include <REG52.H>//片内寄存器定义

#define uchar unsigned char

#define uint unsigned int

uchar code fun[]={0xfe,0x7f,0x01};

void delay()//延时函数

{

uchar i,j; for (i=0;i<250;i++) for (j=0;j<250;j++);

}

void fun1()//逐个点亮、熄灭

{

uchar j,i=0; uchar temp; temp=fun[i]; for (j=0;j<8;j++) { P0=temp; temp=temp<<1 ; temp|=0x01;

} P0=0xff; temp=fun[i]; for (j=0;j<8;j++) { P1=temp; temp=temp<<1 ; temp|=0x01; delay(); } P1=0xff; temp=fun[i]; for (j=0;j<8;j++) { } P2=0xff; temp=fun[i]; for (j=0;j<8;j++) { P3=temp; temp=temp<<1 ; temp|=0x01; P2=temp; temp=temp<<1 ; temp|=0x01; delay(); delay(); } P3=0xff;

}

void fun2()//逐个点亮,最后全部点亮

{

uchar j,i=1;

uchar temp; temp=fun[i]; for (j=0;j<8;j++) { P3=temp; temp=temp>>1 ; delay(); } temp=fun[i]; for (j=0;j<8;j++)

} P2=temp; temp=temp>>1 ; delay(); temp=fun[i]; for (j=0;j<8;j++) { } P1=temp; temp=temp>>1 ; delay(); temp=fun[i]; for (j=0;j<8;j++) { } P0=temp; temp=temp>>1 ; delay();

}

void fun3()//逐次熄灭

{

uchar j,i=2;

uchar temp;

temp=0x00;

P0=temp; P1=temp; P2=temp; P3=temp; temp=fun[i]; for (j=0;j<8;j++) { } P0=0xff; temp=fun[i]; for (j=0;j<8;j++) { P1=temp; temp=temp<<1 ; temp|=0x01; P0=temp; temp=temp<<1 ; temp|=0x01; delay();

} P1=0xff; temp=fun[i]; for (j=0;j<8;j++) { P2=temp; temp=temp<<1 ; temp|=0x01; delay(); } P2=0xff; temp=fun[i]; for (j=0;j<8;j++) { } P3=0xff; P3=temp; temp=temp<<1 ; temp|=0x01; delay();

}

void main()//主函数

{

}

while (1) { } fun1(); fun2(); fun3();

实验题目 定时器实验 计算机 学院 计算机科学与技术 专业 5 班 学号3110006054 姓名 谭威 协作者______________ 教师评定______________

一.实验目的:

1.学习80c51单片机的定时器的使用和编程。

2.熟悉定时器中断处理程序的编程。

3.掌握编写数据处理程序。

4.掌握具体的单片机嵌入式系统的软硬件设计方法。

二.实验内容:

1.打开ISISProfessional,参照“实验电路”设计仿真电路原理图。

2.编写程序实现:

(1)计时监督百分之一秒的田径比赛电子计时器。

(2)计时精度百分之一秒的篮球比赛电子计时器。

(3)计时精度1ms的电子计时器,可实现正在计时和倒计时。

要求:按“启动”按钮后,计时器开始工作;安“暂停\继续”按钮后,计时器停止计时,再按“暂停\继续”按钮后,计时器在此基础上开始计时;按“清0”|按钮后,计时器变0;按“退出”按钮后,退出计时器模式。

三.实验电路:

四.实验源代码:

#include<reg51.h>

#include"miao_code.h"

#define uint unsigned int

#define uchar unsigned char

//--------------------------

//延时函数 xms

//--------------------------

void delayms(uint xms)

{

} uint i,j; for(i = xms;i > 0;i--) for(j = 110;j > 0;j--);

//--------------------------

//各变量定义

//--------------------------

uint minute = 0,second = 0,millisecond = 0;//定义分,秒,毫秒

uchar packet = 0;//计数模式选择:0为正计时,1为倒计时

sbit start = P0^0; //启动项

sbit pause = P0^1; //暂停项

sbit clear = P0^2; //清零项

sbit quit = P0^3; //退出项

//--------------------------

//数码管显示函数

//--------------------------

void display()

{

P3 = table1[minute/10] | table[minute%10];

P2 = table1[second/10] | table[second%10]; P1 = table1[millisecond/10] | table[millisecond%10];

}

//--------------------------

//定时器初始化

//--------------------------

void init()

{

//确定模式 此处一上电便是0x00 故而可以省略 TMOD = 0x01; //装载初值 TH0 = 0xd8; TL0 = 0xf0; //开启中断 EA = 1; ET0 = 1;

}

//--------------------------

//键盘扫描控制函数

//--------------------------

void key_scan()

{

}

//--------------------------

//主函数

//-------------------------- if(start == 0) TR0 = 1; if(pause == 0) TR0 = TR0 ^ 1; if(clear == 0) { } if(packet == 1){minute = second =59; millisecond= 99;} if(packet == 0){minute = second = millisecond = 0;} if(quit == 0) { } packet = packet ^ 1; if(packet == 1){minute = second =59; millisecond= 99;} if(packet == 0){minute = second = millisecond= 0;}

void main()

{init();

while(1)

{

if(packet == 0)

} { if(millisecond == 100) { millisecond = 0; second++; } if(second == 60) { } second = 0; minute++; if(minute == 60) minute = 0; } if(packet == 1) {if(millisecond == 0) { millisecond = 99; second--; } if(second == 0) { second = 60; minute--; } if(minute == 0) minute = 60; } display(); key_scan();

}

//--------------------------

< …… 此处隐藏:4849字,全部文档内容请下载后查看。喜欢就下载吧 ……
广工单片机实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/2123137.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)