广工单片机实验报告Word文档下载推荐.docx

上传人:b****6 文档编号:20168154 上传时间:2023-01-17 格式:DOCX 页数:16 大小:292.34KB
下载 相关 举报
广工单片机实验报告Word文档下载推荐.docx_第1页
第1页 / 共16页
广工单片机实验报告Word文档下载推荐.docx_第2页
第2页 / 共16页
广工单片机实验报告Word文档下载推荐.docx_第3页
第3页 / 共16页
广工单片机实验报告Word文档下载推荐.docx_第4页
第4页 / 共16页
广工单片机实验报告Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

广工单片机实验报告Word文档下载推荐.docx

《广工单片机实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《广工单片机实验报告Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

广工单片机实验报告Word文档下载推荐.docx

ucharcodefun[]={0xfe,0x7f,0x01};

voiddelay()//延时函数

{

uchari,j;

for(i=0;

i<

250;

i++)

for(j=0;

j<

j++);

}

voidfun1()//逐个点亮、熄灭

{

ucharj,i=0;

uchartemp;

temp=fun[i];

for(j=0;

8;

j++)

P0=temp;

temp=temp<

<

1;

temp|=0x01;

delay();

}

P0=0xff;

temp=fun[i];

P1=temp;

P1=0xff;

P2=temp;

P2=0xff;

P3=temp;

P3=0xff;

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

ucharj,i=1;

temp=temp>

>

voidfun3()//逐次熄灭

ucharj,i=2;

temp=0x00;

P0=temp;

P1=temp;

P2=temp;

P3=temp;

voidmain()//主函数

while

(1)

fun1();

fun2();

fun3();

}

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

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

实验题目定时器实验

1.实验目的:

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

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

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

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

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

2.编写程序实现:

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

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

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

要求:

按“启动”按钮后,计时器开始工作;

安“暂停\继续”按钮后,计时器停止计时,再按“暂停\继续”按钮后,计时器在此基础上开始计时;

按“清0”|按钮后,计时器变0;

按“退出”按钮后,退出计时器模式。

四.实验源代码:

#include<

reg51.h>

#include"

miao_code.h"

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

//延时函数xms

voiddelayms(uintxms)

uinti,j;

for(i=xms;

i>

0;

i--)

for(j=110;

j>

j--);

//各变量定义

uintminute=0,second=0,millisecond=0;

//定义分,秒,毫秒

ucharpacket=0;

//计数模式选择:

0为正计时,1为倒计时

sbitstart=P0^0;

//启动项

sbitpause=P0^1;

//暂停项

sbitclear=P0^2;

//清零项

sbitquit=P0^3;

//退出项

//数码管显示函数

voiddisplay()

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

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

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

//定时器初始化

voidinit()

//确定模式此处一上电便是0x00故而可以省略

TMOD=0x01;

//装载初值

TH0=0xd8;

TL0=0xf0;

//开启中断

EA=1;

ET0=1;

//键盘扫描控制函数

voidkey_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==0){minute=second=millisecond=0;

//主函数

voidmain()

{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();

//中断服务程序

voidT0_time()interrupt1

//重新装载初值

if(packet==0)millisecond++;

if(packet==1)millisecond--;

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

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

实验题目键盘与显示实验

1.学习并掌握行列式肩旁的设计方法和工作原理。

2.掌握单片机系统行列式键盘驱动程序的编写方法。

3.学习并掌握LED数码管的接口设计。

4.掌握多位LED数码管动态扫描显示驱动程序的编写方法。

二.实验内容:

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

(1)两步扫描判别法识别16个按键,并讲获取的键值在数码管上的显示。

(2)将16个按键的13个定义为:

0~9、取消、设置、确认。

设单片机所用晶振为12MHz,编写程序实现电子钟,上电启动后初始时钟为09年3月20日。

用户可自由修改时钟,修改方法如下:

按【设置】键,然后依次输入时分秒(HHMMSS)。

按【确认】键确认修改,之前任何一步按【取消】键,退出修改。

code.h"

uchardate[]={2,0,1,2,1,2,0,2};

//定义日期

ucharcodeextra_date[]={2,0,1,2,1,2,0,2};

//辅助日期数组

uinti,j=0,key=16,label=0;

//年月日显示函数

voiddisplay_date(uinti,uintnum)

P2=table2[i];

P0=table[num];

delayms(5);

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

//键盘控制函数

voidkey_scan()//定位每一个按键值

//列扫描

P1=0xf0;

delayms

(1);

temp=P1>

4^0x0f;

switch(temp)

case1:

key=0;

break;

case2:

key=1;

case4:

key=2;

case8:

key=3;

default:

key=16;

//行扫描

P1=0x0f;

temp=P1^0x0f;

key+=0;

key+=4;

key+=8;

key+=12;

//数码管显示

for(i=0;

8;

display_date(i,date[i]);

//扫描键盘获取按键序号key

P1=0xf0;

if(P1!

=0xf0)key_scan();

switch(key)

case0:

if(label==1)date[j++]=7;

delayms(200);

case1:

if(label==1)date[j++]=8;

case2:

if(label==1)date[j++]=9;

case4:

if(label==1)date[j++]=4;

case5:

if(label==1)date[j++]=5;

case6:

if(label==1)date[j++]=6;

case7:

if(j==0){date[0]=extra_date[0];

else{date[j--]=extra_date[j];

date[j]=10;

}delayms(200);

case8:

if(label==1)date[j++]=1;

case9:

if(label==1)date[j++]=2;

case10:

if(label==1)date[j++]=3;

case11:

date[j]=10;

j=0;

label=1;

case12:

if(label==1)date[j++]=0;

case15:

j=0;

label=0;

if(label==1&

&

j!

=0)date[j]=10;

key=16;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1