数字方阵程序 单片机课程设计报告.docx

上传人:b****8 文档编号:9888970 上传时间:2023-05-21 格式:DOCX 页数:19 大小:85.59KB
下载 相关 举报
数字方阵程序 单片机课程设计报告.docx_第1页
第1页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第2页
第2页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第3页
第3页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第4页
第4页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第5页
第5页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第6页
第6页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第7页
第7页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第8页
第8页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第9页
第9页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第10页
第10页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第11页
第11页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第12页
第12页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第13页
第13页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第14页
第14页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第15页
第15页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第16页
第16页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第17页
第17页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第18页
第18页 / 共19页
数字方阵程序 单片机课程设计报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字方阵程序 单片机课程设计报告.docx

《数字方阵程序 单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字方阵程序 单片机课程设计报告.docx(19页珍藏版)》请在冰点文库上搜索。

数字方阵程序 单片机课程设计报告.docx

数字方阵程序单片机课程设计报告

合肥师范学院

实验报告册

2013/2014学年第2学期

系别

计算机科学与技术系

实验课程

单片机原理及应用

专业

2011计算机软件

班级

一班

姓名

学号

指导教师

实验名称

课时

实验报告成绩

实验

(一)——流水灯

2

实验

(二)——中断与定时/计数器

2

实验(三)——串行口实验

2

实验(四)——矩阵键盘输入识别

2

备注:

实验一——流水灯

一、实验目的

通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器

二、实验任务

通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器

三、实验原理图设计

图1.1

四、实验程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sfrx=0xb0;

voiddelay()

{unsignedchari,j;

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

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

}

voidfunction1()

{x=0xfe;

delay();

x=0xfd;

delay();

x=0xfb;

delay();

x=0xf7;

delay();

x=0xef;

delay();

x=0xdf;

delay();

x=0xbf;

delay();

x=0x7f;

delay();

}

voidfunction2()

{x=0x7e;

delay();

x=0xbd;

delay();

x=0xdb;

delay();

x=0xe7;

delay();

x=0xe7;

delay();

x=0xdb;

delay();

x=0xbd;

delay();

x=0x7e;

delay();

}

voidfunction3()

{x=0xff;

for(;x!

=0x00;)

{x=x-0x01;

delay();

}

}

voidfunction4()

{x=0x7f;

x=_cror_(x,1);

}

voidfunction5()

{x=0x7f;

x=_cror_(x,1);

delay();

x=0xfe;

x=_crol_(x,1);

}

voidmain()

{while

(1)

{function1();

function2();

function3();

function4();

function5();

}

}

五、实验结论

通过本次试验,我对单片机的一些性能有了大概的了解,学会了怎样控制LED灯的亮灭控制以及亮灭的顺序,亮度,时间等。

同时也了解了一些有关LED灯的使用方法和注意事项以及制图过程中所涉及的一些问题。

最终8个发光二极管从左到右流水依次点亮;LED灯亮的顺序先是先是按照LED0—>LED1—>……—>LED7的顺序依次点亮,然后是按照LED7—>LED6—>……—>LED0依次点亮,重复循环;LED灯先是全灭,然后按照LED0—>LED1—>LED0LED1—>LED2—>LED2LED0—>……—>LED7LED6LED5LED4LED3LED2LED1,然后全亮,实现用流水灯显示八位二进制加法计数器的结果。

六、总结与反思

在制图过程中对一些组件还是感觉挺陌生的,有的组件甚至要通过询问同学才能找到,这些都需要我在以后要多使用这些软件,做到熟练使用。

 

实验二——中断与定时器/计数器

一、实验目的

通过对P3.2、P3.3引脚的电平控制,实现外部中断处理,从而控制输出口P1的输出效果变化。

2、实验任务

1、实现中断控制的原理图(图一),通过对P3.2与P3.3的引脚控制,实现外部中断,实现对输出口P1的输出变化控制。

2、修改程序使用定时器T1的中断方式来控制P2.0、P2.1引脚的LED灯分别以200mshe800ms的周期闪烁。

(图二)

3、实验原理设计图

图2.1

图2.2

4、实验程序

代码一:

#include

#include

voidintt()

{EA=1;

IT0=0;

IT1=0;

EX0=1;

EX1=1;

PX0=0;//中断优先级0可改变优先级

PX1=1;//中断优先级1可改变优先级

}

voiddelay()

{unsignedinti,j;

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

for(j=0;j<255;j++);

}

voidmain()

{intt();

while

(1)

{P1=0xff;

delay();

P1=0x00;

delay();

}

}

voidaa()interrupt0

{unsignedchartemp=0xfe;

unsignedinti=0;

P1=temp;

delay();

i=7;

while(i--)

{temp=_crol_(temp,1);

P1=temp;

delay();

}

i=7;

while(i--)

{temp=_cror_(temp,1);

P1=temp;

delay();

}

}

voidbb()interrupt2

{P1=0xf0;

delay();

P1=0x0f;

delay();

}

代码二:

#include

sbitD1=P2^0;

sbitD2=P2^7;

unsignedcharCountor1;

unsignedcharCountor2;

voidmain()

{EA=1;

ET1=1;

TMOD=0x10;

TH1=(65536-15536)/256;

TL1=(65536-15536)%256;

TR1=1;

Countor1=0;

Countor2=0;

while

(1);

}

voidT()interrupt1using0

{Countor1++;

if(Countor1==2)

{D1=~D1;

Countor1=0;

}

Countor2++;

if(Countor2==8)

{D2=~D2;

Countor2=0;

}

TH1=(65536-15536)/256;

TL1=(65536-15536)%256;

}

5、实验结论

通过本次试验,我对定时器中断的基本功能有了一定的了解,对修改定时/计数器中断的优先级、类型以及LED的闪烁周期等也有一定的了解。

最终外部中断实验的中断通过开关SW1和SW2控制,且SW2控制的中断优先级高于SW1控制的中断优先级;定时器T1的中断方式控制的P2.0和P2.1引脚的LED灯分别以200ms、800ms周期闪烁

6、总结与反思

通过对该软件的熟练使用,我在组图过程中有了一定的速度,对其原理也有了一定的理解。

同时实验中仍然存在一些问题,在以后的实验中我会慢慢的改进自己的不足,争取早日做到精通使用。

 

实验三——串行口实验

1、实验目的

本实验要求单片机U1通过其串行口TXD向计算机发送一个数据“oxab”。

利用集成电路MAX232将单片机的输出信号转化成计算机能够识别的信号。

2、实验任务

单片机发送数据,计算机接收数据,控制LED的闪烁次序。

3、实验原理图设计

图3.1

四、实验程序

PC发送数据端代码:

#include

unsignedcharcodeTab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

voidSend(unsignedchardat)

{SBUF=dat;

while(TI==0);

TI=0;

}

voiddelay(void)

{unsignedcharm,n;

for(m=0;m<200;m++)

for(n=0;n<250;n++);

}

voidmain(void)

{unsignedchari;

TMOD=0x20;

SCON=0x40;

PCON=0x00;

TH1=0xfd;

TL1=0xfd;

TR1=1;

while

(1)

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

{Send(Tab[i]);

delay();

}

}

}

PC接受数据端代码:

#include

#defineuintunsignedint

#defineucharunsignedchar

#defineDT50000

ucharreceiver;

voiddelay(uinti)

{

uchart=0;

while(i--)

{

for(;t<=250;t++);

}

}

voidinit()

{

EA=1;

SCON=0x50;

PCON=0x00;

REN=1;

ET1=1;

TMOD=0x20;

TL1=0xfd;

TH1=0xfd;

TR1=1;

}

ucharreceive()

{

uchartemp;

temp=SBUF;

while(!

RI)

{

;

}

RI=0;

returntemp;

}

voidmain()

{

init();

while

(1)

{

receiver=receive();

P1=receiver;

}

}

4、实验结论

通过本次的实验使我更加深刻的认识到了以及对所学知识的掌握至少以及融合之笨拙,在编写接受端代码时总是出现各种各样的错误。

最后U1成功向U2发送数据,U2也成功接收U1发送的数据,并在LED灯上显示了出来。

5、总结与反思

通过本次实验,我加深了对串行口通信的认识,并成功的实现了两台单片机的串行通信,对串行口的通信机制有了一定的了解。

尽管在实验中遇到了困难,但通过同学之间的相互协作,对所遇到的问题进行了依次解决,本次实验对我的最大感触是自己对知识的掌握太混乱,在以后我要慢慢学会融会贯通。

 

实验四——矩阵键盘输入识别

1、实验目的

设计一个4X4的矩阵键盘,键盘的号码0~15,要求编写出一个键盘输入扫描程序,要求单片机能根据键盘排列顺序,能将按下去键盘号正确识别出来,并采用两个数码管分别键盘号码的个位和十位。

2、实验任务

实现查询方式下矩阵式键盘的动态显示。

3、实验原理图设计

图4.1

四、实验代码

#include

sbitP14=P1^4;

sbitP15=P1^5;

sbitP16=P1^6;

sbitP17=P1^7;

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

unsignedcharkeyval;

voidled_delay(void)

{unsignedcharj;

for(j=0;j<200;j++);

}

voiddisplay(unsignedchark)

{P2=0xbf;

P0=Tab[k/10];

led_delay();

P2=0x7f;

P0=Tab[k%10];

led_delay();

}

voiddelay20ms(void)

{unsignedchari,j;

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

for(j=0;j<60;j++);

}

voidmain(void)

{EA=1;

ET0=1;

TMOD=0x01;

TH0=(65536-500)/256;

TL0=(65536-500)%256;

TR0=1;

keyval=0x00;

while

(1)

{display(keyval);

}

}

voidtime0_interserve(void)interrupt1using1

{TR0=0;

P1=0xf0;

if((P1&0xf0)!

=0xf0)

delay20ms();

if((P1&0xf0)!

=0xf0)

{P1=0xfe;

if(P14==0)

keyval=1;

if(P15==0)

keyval=2;

if(P16==0)

keyval=3;

if(P17==0)

keyval=4;

P1=0xfd;

if(P14==0)

keyval=5;

if(P15==0)

keyval=6;

if(P16==0)

keyval=7;

if(P17==0)

keyval=8;

P1=0xfb;

if(P14==0)

keyval=9;

if(P15==0)

keyval=10;

if(P16==0)

keyval=11;

if(P17==0)

keyval=12;

P1=0xf7;

if(P14==0)

keyval=13;

if(P15==0)

keyval=14;

if(P16==0)

keyval=15;

if(P17==0)

keyval=16;

}

TR0=1;

TH0=(65536-500)/256;

TL0=(65536-500)%256;

}

4、实验结论

本次实验的最终结果是:

单片机能根据键盘排列顺序,能将按下去键盘号正确识别出来,并采用两个数码管分别显示键盘号码的个位和十位。

5、总结与反思

通过本次实验我对非编码键盘有了一些基础的了解,其包含独立式键盘和矩阵式键盘两种方式,并且对于矩阵式键盘的应用也有了一些认识。

本次实验使我学到了一些之前没有接触到的内容。

尽管如此本次实验过程中仍旧遇到了一些问题,最终在老师和同学的帮助下顺利解决并完成实验。

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2