单片机最小系统实验报告.docx

上传人:b****7 文档编号:9063152 上传时间:2023-02-03 格式:DOCX 页数:17 大小:231.96KB
下载 相关 举报
单片机最小系统实验报告.docx_第1页
第1页 / 共17页
单片机最小系统实验报告.docx_第2页
第2页 / 共17页
单片机最小系统实验报告.docx_第3页
第3页 / 共17页
单片机最小系统实验报告.docx_第4页
第4页 / 共17页
单片机最小系统实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机最小系统实验报告.docx

《单片机最小系统实验报告.docx》由会员分享,可在线阅读,更多相关《单片机最小系统实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

单片机最小系统实验报告.docx

单片机最小系统实验报告

长沙学院

电子工艺实习报告

姓名:

潘舟

学号:

2009044211

系别:

电子与通信工程

时间:

2011.11.14-2011.11.25

专业:

电子信息工程

指导老师:

龙英、刘辉、王新辉、刘亮、马凌云

 

目录

1、引言

2、目的

3、任务

4、要求

5、主要原理图

6、主要程序

7、程序实现的功能

8、系统调试

9、总结

 

目的:

通过对单片机最小系统的研究,掌握单片机各引脚功能,理解单片机工作过程及原理,以及与各种外部扩展器件的连接,能够自己运用单片机来解决实际问题。

任务:

1、单片机实验板的设计与制作

2、声光控延时开光的焊接与调试

要求:

1、

(1)功能要求

单片机最小系统(晶振、复位电路);

按键输入部分,可以做简单按键输入实验;

键盘输入部分,可做矩阵式键盘扫描输入实验;

RS-232串行接口部分,可进行单片机与计算机通信实验;

LCD显示部分,可做LCD显示实验;

LED数码管显示器部分,可进行定时计数等数据显示实验;

喇叭发音部分,可做单片机发声实验;

LED发光二极管部分,可做基本输出功能实验;

稳压电源部分,可提供5V电源;

(2)设计要求

   进行元器件及参数选择;画出电路原理图;PCB图,焊接电路并调试。

(3)制作要求

自行装配和调试,并能发现问题和解决问题。

(4)程序调试要求

编写秒表程序和彩灯控制程序,利用自己制作的实验板进行程序调试。

2、

(1)、能实现以下功能:

a、能够实现光控声控控制灯的点亮;

b、能够使灯包点亮后一段时间自动熄灭。

(2)设计要求

   进行元器件及参数选择;画出电路原理图;PCB图,焊接电路并调试。

(3)制作要求

自行装配和调试,并能发现问题和解决问题。

主要原理图:

 

主要程序:

1)编写一程序,达到按键加减的功能。

按一下+1键,显示加一,加到255时,显示归零按。

按下-1键,显示减1,当减到零时,显示变为255。

程序:

#include

#include

#defineucharunsignedchar

sbitk1=P3^0;

sbitk2=P3^1;

sbitA1=P2^0;

sbitA2=P2^1;

sbitA3=P2^2;

sbitA4=P2^3;

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voiddelay(ucharj)

{

uchari;

for(i=0;i<100;i++)

{

_nop_();

j--;

}

}

voidxianshi(uchary)

{

ucharm,n,x,i;

m=y%10;

n=y/10%10;

x=y/100;

for(i=0;i<4;i++)

{

A1=0;

P0=table[m];

delay

(1);

A1=1;

A2=0;

P0=table[n];

delay

(1);

A2=1;

A3=0;

P0=table[x];

delay

(1);

A3=1;

}

}

main()

{

chart;

P2=0;

P0=0x80;

while

(1)

{

if(k1==0)

{

delay(10);

if(k1==0)

{

delay(10);

while(!

k1);

t++;

if(t>255)

t=0;

xianshi(t);

}

}

if(k2==0)

{

delay(10);

if(k1==0)

{

delay(10);

while(!

k1);

t--;

if(t<0)

t=255;

xianshi(t);

}

}

}

}

2)编写程序,实现跑秒功能。

程序:

#include

#defineucharunsignedchar

//******************************特殊位定义*******************************

sbitp30=P3^0;

sbitp31=P3^1;

sbitp32=P3^2;

sbitp33=P3^3;

sbitsten=P3^4;//P3.4用来控制计时器的走与停(复位清零)

sbitstoreshow=P3^5;//p3.4用来存计数与读计数

sbitp37=P3^7;

//*****************存放点量数码管的码(0~9)**************************

ucharcodetab1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//存放点量数码管的段选码(0~9)

ucharcodetab2[4]={0x0fe,0x0fc,0x0fb,0x0f7};//存放点量数码管的位选码(3~0位)

//********************************变量定义****************************

uchartab3[10][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};//预存10个计时

uchartab4[4]={0,0,0,0};//用来放四位数即分、十秒、个秒、1/10秒//

ucharn,s,S1,m,k,a;//定义变量

//****************子程序申明//////////////////

voidinitT0(void);//定时器0的初始化

voiddisplay1(void);//数码管显示程序

voiddisplay2(void);//显示存入的计时数

voiddelay5ms(uchari);//延时5ms程序

voidspeak2(void);//按键提示音

voidspeak(void);//开机提示音

 

//*************子程序内容///////////////

voidspeak2(void)//***************************************按键提示音**********************

{

uchari;

for(i=0;i<5;i++)

{

p37=0;

delay5ms

(1);

p37=1;

delay5ms

(1);

}

}

voidspeak(void)//*********************开机提示音***********************

{

uchari;

for(i=0;i<5;i++)

{

p37=0;

delay5ms

(2);

p37=1;

delay5ms

(2);

}

}

voidinitT0(void)//****************************定时器0的初始化程序、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

{

TMOD=0x01;

TH0=0x63;

TL0=0x0c0;//定时50ms

EA=1;

ET0=1;

TR0=1;

}

voidtimer0(void)interrupt1//***************************************定时中断程序、、、、、、、、、、、、、、、、、、、、、、

{

TF0=0;

TH0=0x63;

TL0=0x0c0;//定时50ms

n++;

if(n==2)

{

n=0;//定时中断次数清0

s++;//十分之一秒加1

if(s==10)//***秒

{

s=0;

S1++;//秒加1

if(S1==60)//***分

{

S1=0;

m++;//分加1

}

}

tab4[0]=m;//将分存入数组

tab4[1]=S1/10;//取得秒十位

tab4[2]=S1%10;//取得秒个位

tab4[3]=s;

}

if(tab4[0]==9&tab4[1]==5&tab4[2]==9&tab4[3]==9)

{

speak();

delay5ms(10);

speak2();

TR0=0;

}

}

voiddisplay1(void)//*******************数码管动态显示程序、、、、、、、、、、、、、、、、、、、、、、、、、、、、

{

uchari;

while

(1)

{

for(i=0;i<4;i++)

{

P3=tab2[i];//选正位

P0=tab1[tab4[i]];//点量对应位的段码

delay5ms

(1);

}

if(!

sten)

{

delay5ms

(2);//消抖

if(!

sten)

{k++;

speak2();//按键提示音

while(!

sten);//等待sten按键释放

break;//按sten键k加1表示停止计时

}

}

if(!

storeshow)

{

delay5ms

(2);//消抖

if(!

storeshow)

{

a++;

speak2();//按键提示音

while(!

storeshow);//等待按键storeshow释放

break;//按storeshow表示存入一个当前计时数到tab3数组中

}

}

}

}

 

voiddisplay2(void)//*************************显示存入的计时数、、、、、、、、、、、、、、、、、、、、、、、

{

uchari;

while

(1)

{

while

(1)

{

for(i=0;i<4;i++)

{

P3=tab2[i];//选正位

P0=tab1[tab4[i]];//点量对应位的段码

delay5ms

(1);

}

if(!

storeshow)break;

if(!

sten)break;

}

delay5ms

(2);//消抖

if(!

sten)

{

k++;

speak2();//按键提示音

while(!

sten);

break;

}

if(!

storeshow)

{

speak2();//按键提示音

while(!

storeshow);//等待按键storeshow释放

break;//打断跳回显示下一个计时数

}

}

}

 

voiddelay5ms(uchari)//**********************延时5ms秒程序*、、、、、、、、、、、、、、、、、、、、、、、、

{

ucharj,f,g;

for(j=0;j

{

for(g=19;g>0;g--)

for(f=130;f>0;f--);

}

}

//************************************************************主程序段************************************************

voidmain()

{

ucharb;

speak();//开机提示音

while

(1)

{

a=0;

k=0;

n=0,s=0,S1=0,m=0;//变量初始化

while(sten);//等待开始按键

delay5ms

(2);

if(!

sten)//按键sten开始

{

speak2();//按键提示音

while(!

sten);//等待按键松开就开始计时

initT0();//定时器0初始化开始计时

while(k==0|k==1)

{

display1();//调用动态显示程序)

if(k==1)//按键sten

{

TR0=0;//按键sten表示关计时

display1();//按键sten后显示最后计时数

if(k==1)//按的是storeshow键即显示存入计时数(从最后一个开始)

{

a--;

while(a)

{

a--;

for(b=0;b<4;b++)

tab4[b]=tab3[a][b];//从tab3数组中取出之前存入的计时数

display2();//显示存入的计时数

}

}

}

if(k==0&a<=10)//k=0,按键storeshow表示存入一个当前计时数到tab3数组中

{

for(b=0;b<4;b++)

tab3[a-1][b]=tab4[b];//将当前计时数存入tab3数组中

}

if(k==2)

{

P3=0x0ff;//关位选(即清显示)

tab4[0]=0;//清零

tab4[1]=0;

tab4[2]=0;

tab4[3]=0;

n=0,s=0,S1=0,m=0;//清零

}

}

}

}

总结:

单片机最小系统经过我一段时间的调试,终于能够达到预定的功能,虽然只是简单的调试,但从中我也接触了不少的关于单片机的知识。

此次课程设计让我对单片机有了初步的认识,能够了解单片机工作的模式和具体过程,明白了怎样利用单片机来设计满足自己设定功能的作品,怎样利用单片机来控制系统。

同时,这也让我了解到怎样进行单片机编程。

掌握了这些就可以在大学期间利用单片机最小系统来拓展功能,制作自己想做的东西,对科研立项等活动有很大的帮助。

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

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

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

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