单片机嵌入式实验报告51秒表Word格式文档下载.docx

上传人:b****6 文档编号:16138013 上传时间:2022-11-20 格式:DOCX 页数:9 大小:90.01KB
下载 相关 举报
单片机嵌入式实验报告51秒表Word格式文档下载.docx_第1页
第1页 / 共9页
单片机嵌入式实验报告51秒表Word格式文档下载.docx_第2页
第2页 / 共9页
单片机嵌入式实验报告51秒表Word格式文档下载.docx_第3页
第3页 / 共9页
单片机嵌入式实验报告51秒表Word格式文档下载.docx_第4页
第4页 / 共9页
单片机嵌入式实验报告51秒表Word格式文档下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

单片机嵌入式实验报告51秒表Word格式文档下载.docx

《单片机嵌入式实验报告51秒表Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机嵌入式实验报告51秒表Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。

单片机嵌入式实验报告51秒表Word格式文档下载.docx

三、使用的系统平台

软件平台:

keil51

keil51是美国keilsoftware出品的51系列兼容单片机C语言软件开发系统,是众多单片机开发软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真于一体,同时还支持PLM、汇编、和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有强大的功能。

硬件平台:

STC89C52单片机、1602液晶显示器、按钮、发光二极管

STC89C52单片机:

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:

8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。

另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35MHz,6T/12T可选。

1602液晶显示器:

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

四、系统总体设计

如下图所示,整个秒表以STC89C52为核心,按下停止键或启动键控制秒表的停止和开始,同时反映给STC89C52,再经过处理显示在1602液晶显示器上,进行计时。

五、系统的详细设计

硬件:

系统总的原理图如上图所示,按下暂停和启动按键,秒表开始计时并显示在LCD1602液晶显示器上。

对于STC89C52单片机,其内部带有定时/计数系统,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能。

对于LCD1602通过指令来控制它的读写操作。

软件流程图:

六、系统的软件实现

主要函数:

延时函数:

voiddelay1ms()

{

unsignedchari,j;

for(i=0;

i<

10;

i++)

for(j=0;

j<

33;

j++);

}

voiddelay(unsignedcharn)

{

unsignedchari;

n;

delay1ms();

忙状态测试:

unsignedcharBusyTest(void)

bitresult;

RS=0;

//根据规定,RS为低电平,RW为高电平时,可以读状态

RW=1;

E=1;

//E=1,才允许读写

_nop_();

//空操作

//空操作四个机器周期,给硬件反应3时间

result=BF;

//将忙碌标志电平赋给result

E=0;

//将E恢复低电平

returnresult;

voidWriteInstruction(unsignedchardictate)

{

while(BusyTest()==1);

//如果忙就等待

RS=0;

//根据规定,RS和R/W同时为低电平时,可以写入指令

RW=0;

//E置低电平(根据表8-6,写指令时,E为高脉冲,

//就是让E从0到1发生正跳变,所以应先置"

0"

//空操作两个机器周期,给硬件反应时间

P0=dictate;

//将数据送入P0口,即写入指令地址

//空操作四个机器周期,给硬件反应时间

//E置高电平

//当E由高电平跳变成低电平时,液晶模块开始执行命令

voidWriteAddress(unsignedcharx)

WriteInstruction(x|0x80);

//显示位置的确定方法规定为"

80H+地址码x"

voidWriteData(unsignedchary)

RS=1;

//RS为高电平,RW为低电平时,可以写入数据

P0=y;

//将数据送入P0口,即将数据写入液晶模块

voidLcdInitiate(void)

delay(15);

//延时15ms,首次写指令时应给LCD一段较长的反应时间

WriteInstruction(0x38);

//显示模式设置:

16×

2显示,5×

7点阵,8位数据接口

delay(5);

//延时5ms ,给硬件一点时间

//连续三次,确保初始化成功

delay(5);

WriteInstruction(0x0c);

显示开,无光标,光标不闪烁

WriteInstruction(0x06);

光标右移字符移动

WriteInstruction(0x01);

//清屏幕指令将以前的显示内容清除

voidDisplaySecond()

i=s/10;

//取整运算,求得十位数字

j=s%10;

//取余运算,求得各位数字

WriteAddress(0x46);

//写显示地址,将十位数字显示在第2行第11列

WriteData(digit[i]);

//将十位数字的字符常量写入LCD

WriteData(digit[j]);

//将个位数字的字符常量写入LCD

WriteData(46);

WriteData(digit[count/2]);

voidmain(void)

{unsignedchari;

LcdInitiate();

//调用LCD初始化函数

TMOD=0x01;

//使用定时器T0的模式1

TH0=(65536-46083)/256;

//定时器T0的高8位设置初值

TL0=(65536-46083)%6;

//定时器T0的低8位设置初值

EA=1;

//开总中断

ET0=1;

//定时器T0中断允许

TR0=1;

//启动定时器T0

count=0;

//中断次数初始化为0

s=0;

//秒初始化为0

WriteAddress(0x00);

//写地址,从第1行第4列开始显示

i=0;

//从字符数组的第1个元素开始显示

while(string[i]!

='

\0'

)//只要没有显示到字符串的结束标志'

,就继续

WriteData(string[i]);

//将第i个字符数组元素写入LCD

i++;

//指向下一个数组元素

}

//将分号的字符常量写入LCD

while

(1)//无限循环

DisplaySecond();

//显示秒

//给硬件一点反应时间}}

voidTime0(void)interrupt1using1//定时器T0的中断编号为1,使用第1组工作寄存器

count++;

//每产生1次中断,中断累计次数加1

if(count==20)//如果中断次数计满20次

{

count=0;

//中断累计次数清0

s++;

//秒加1

}

if(s==60)//如果计满60秒

{

s=0;

//秒清0

}

TH0=(65536-46083)/256;

//定时器T0高8位重新赋初值

//定时器T0低8位重新赋初值

}

七.系统的测试结果

程序烧写进52单片机,单品机控制1602显示,可显示出“stopwatch”字样。

当按下S1键,计数启动。

当按下S2键,计数暂停。

当按下S3键,计数置0,重新等待计数。

初步完成计数功能。

七、总结

经过两个星期的的秒表设计,我认识到自己还有很多不足,一方面,动手能力较差,需要提高;

另一方面,之前学的知识很多都忘记了,为了更好的完成这次秒表设计,必须要温习相关的内容。

但更重要的是经过这两周的学习,我不仅对单片机的理论有了更好的了解,也成功的将理论知识运用到了实践中,提高了我各方面的能力,虽然有一些方面没有达到老师的要求,但是我会吸取经验,下次一定会做得更好。

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

当前位置:首页 > 小学教育 > 语文

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

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