单片机课程设计.docx

上传人:b****1 文档编号:23141878 上传时间:2023-05-08 格式:DOCX 页数:14 大小:218.13KB
下载 相关 举报
单片机课程设计.docx_第1页
第1页 / 共14页
单片机课程设计.docx_第2页
第2页 / 共14页
单片机课程设计.docx_第3页
第3页 / 共14页
单片机课程设计.docx_第4页
第4页 / 共14页
单片机课程设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机课程设计.docx

《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(14页珍藏版)》请在冰豆网上搜索。

单片机课程设计.docx

单片机课程设计

北京联合大学

实训报告

 

课程(项目)名称:

计算机原理及应用课程设计

学院:

自动化专业:

自动化

班级:

0910030206学号:

200910032638

姓名:

徐琪成绩:

 

2012年 07 月 05 日

一、任务与目的:

1.任务:

根据课堂教学内容设计一个电子钟;

2.教学目的:

(1)了解与掌握利用单片机开发产品的基本流程和方法,熟练的掌握开发工具的使用。

(2)通过实现一个完整的工程项目,加深学生对单片机知识的理解和运用能力,提高学生软硬件设计,编程,系统调试的综合实践能力。

(3)提高学生对设计方案调研,论证,修改及撰写说明文档的能力。

(4)实现验证性实验到设计性实验的过渡。

二、实验原理(条件)

实验环境及条件:

1.计算机及串口下载线;

2.软件环境:

万利仿真软件,killC或proteus

3.硬件电路:

51单片机教学实习最小系统板

4.ISP下载软件。

三.实验内容及步骤

(一)实验内容

1、基础部分:

1).用51的p1口作为数据输出口,p2口为共阴数码管位选信号,利用定时器0实现秒计时和显示。

2).上电复位后,显示00,

3).按键按下S2键后开始计数。

采用加法计数形式。

计到60停止。

蜂鸣器鸣响。

4).鸣响2秒后停止,恢复显示00,

5).当再次按下S2键后重复1-4过程。

2、提高部分:

1).利用S2,S4,S6完成进入设置;进行数字十位和个位设置;存储,启动等动作;

2).工作过程如下:

(1)第一次按下S2,进入十位数设置;此时,每按下S4一次,十位数码管显示加1,从0至9滚动显示;

(2)第二次按下S2,十位显示固定在当前值;进入个位数设置;此时,每按下S4一次,个位数码管显示加1,从0至9滚动显示;

(3)第三次按下S2,十位和个位显示数值固定;

(4)设置完成后按下S6,数码管显示00;系统从0计时,当计到设置值时,蜂鸣器响一秒钟;

(5)蜂鸣器停止后,系统显示设置值,再次按下S6可以重新开始计时;或不按下S6,按下S4则重复

(1)至(4)过程。

(二)实验步骤

1,显示区设置为30H至35H,秒计数器为40h,分计数器设为41h,。

2,编写定时器初始化程序:

3,编写中断处理程序,在中断中实现,计数,十进制调整,:

4,编写拆字,查表程序:

5,将指定内容送显:

6,利用串行通讯,在程序需要的地方设置通讯程序将关键寄存器内容传至ISP窗口,监测执行结果,修改以上程序直至正常工作。

(注:

本试验可以采用两种方法来做:

1软件计数法,2定时中断法)

四、硬件图:

1.实验硬件:

电工电子实验板;

2.实验原理图:

图一PLC图

 

五.程序流程图:

主程序框图:

中断程序框图:

串行发送程序:

设计方案:

1、秒计数器为40H,每到1秒40H单元内容加1.

2、显示区设置为30H至35H(存放LED显示字型码)

3、2EH单元的第0位、第1位、第2位为标志位,其位地址为75H、76H、77H

位地址77H76H75H74H73H72H71H70H

2EH单元

当75H=1,有键按下;当75H=0,无键按下

当76H=1,1秒到;当76H=0,1秒未到

当77H=1,蜂鸣开始;当77H=0,蜂鸣结束

4、p1口作为数据输出口,p2口为共阴数码管位选信号

 

(1)P1口经7407(同相OC驱动器,要接上拉电阻)控制数码管各个字段的亮灭,“1”时亮,为“0”时灭。

0~7的字形码为:

3FH,06H,5BH,4FH,66H,6DH,7DH,07H;

8~0FH的字形码为:

7FH,6FH,77H,7CH,39H,5EH,79H,71H;

(2)p2口线经7406(反相驱动器)后接共阴数码管位选段,故P2.0~P2.5为“1”时选中数码管,为“0”时未选中数码管。

,P2.0控制最左边的数码,P2.5控制最右边的数码。

5、P2.0、P2.1、P2.2作为键盘列选线,P0.0、P0.1作为键盘行选线,组成2*3=6个键。

6、P0.3控制蜂鸣器发声

P0.3=0,鸣响;P0.3=1,不鸣响。

六.结语:

体会与收获

通过本次试验,我掌握了利用单片机开发产品的基本流程和方法,并且熟练的掌握开发工具的使用。

我小组通过实现一个完整的工程项目,加深了对单片机知识的理解和运用能力,也提高了我们的综合实践能力。

在实验过程中,通过编写试验程序,提高了我对设计方案调研,论证,修改及撰写说明文档的能力。

这次实验也为我今后的学习打下了基础,并且提高了我们的团结协作能力。

 

附录:

一.程序清单:

(加注释)

ORG0000H

LJMPMAIN

ORG000BH

LJMPAAT

ORG0023H

LJMPBBU

MAIN:

MOV2EH,#00H;标志寄存器清零

MOV40H,#00H;计数器清零

MOV41H,#00H

MOV28H,#00H

MOV30H,#3FH;十位存入0

MOV31H,#3FH;个位存入0

MOV32H,#3FH;十位存入0

MOV33H,#3FH;个位存入0

MOVR0,#200;显示200次(5ms*200=1s)

MOVR3,#2

MOVTH0,#0ECH;定时器0计时5毫秒

MOVTL0,#78H

MOVTH1,#0FDH;波特率9600

MOVTL1,#0FDH

MOVTMOD,#00100001B;T1方式2计时,T0方式1定时

MOVIE,#10000010B;开定时器0和串口中断

SETBTR0

SETBTR1

MOVSCON,#01000000B;串口方式1工作

MOVP2,#01H;显示口初始化

MOVR7,#200;定时蜂鸣1秒,200*5ms=1s

AA:

JNB75H,AA1;若无键按下,调拆字显示程序

JNB76H,AA1;有键按下,且0.5s未到,调拆字显示程序

JB77H,AA1;2s到且蜂鸣开始,调拆字显示程序

MOVA,40H

ADDA,#1

DAA;对A进行十进制调整

MOV40H,A

CLR76H;76H请零,为下一个0.5秒做准备

CJNEA,#60H,AA1;判断A是否到60

CLRP0.3;启动蜂鸣

SETB77H;77H置1,蜂鸣开始

MOV40H,#00H

MOVA,#00H

MOVA,41H

ADDA,#1

DAA;对A进行十进制调整

MOV41H,A

CJNEA,#60H,AA1;判断A是否到60

SETB28H

AA1:

LCALLCHAIZI

AA2:

MOVSBUF,2EH;(2EH)标志位,向主机发送串口

WAIT1:

JNBT1,WAIT1

MOVSBUF,40H;(40H)秒计数值,串口向主机发送

WAIT2:

JNBT1,WAIT2

MOVSBUF,30H;(30H)十位显示代码,

WAIT3:

JNBT1,WAIT3

MOVSBUF,31H;(31H)个位显示代码,

WAIT4:

JNBT1,WAIT4

MOVSBUF,41H;(40H)秒计数值,串口向主机发送

WAIT5:

JNBT1,WAIT5

MOVSBUF,32H;(30H)十位显示代码,

WAIT6:

JNBT1,WAIT6

MOVSBUF,33H;(31H)个位显示代码,

WAIT7:

JNBT1,WAIT7

SJMPAA;返回

CHAIZI:

MOVA,40H

MOVR1,#50H

MOV@R1,#00

XCHDA,@R1;低半字节互换

MOVB,A

MOVA,@R1

LCALLCHABIAO

MOV30H,A;秒的低位送显示

MOVA,B

SWAPA;半字节交换

LCALLCHABIAO

MOV31H,A;秒的高位送显示

MOVA,#00H

MOVA,41H

MOVR1,#50H

MOV@R1,#00

XCHDA,@R1;低半字节互换

MOVB,A

MOVA,@R1

LCALLCHABIAO

MOV32H,A;秒的低位送显示

MOVA,B

SWAPA;半字节交换

LCALLCHABIAO

MOV33H,A;秒的高位送显示

RET

CHABIAO:

MOVDPTR,#TABL

MOVCA,@A+DPTR

RET

TABL:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

AAT:

JB70H,AAT4

JB71H,AAT1

JB77H,AAT3;T0中断程序

JB28H,AAT4

MOVTH0,#0ECH;重装初值,定时下一个5ms

MOVTL0,#78H

JNB75H,AAT1;无键按下显示00

DJNZR0,AAT1;定时未到显示原有内容,1s定时未到,转AAT1

MOVR0,#200;1s定时到,重置初值

SETB76H;秒标志置1

SJMPAAT1

AAT3:

MOVTH0,#0ECH;定时器0计时毫秒

MOVTL0,#78H

DJNZR7,AAT1;1s未到转AAT1

MOVR7,#200;1s到置初值

DJNZR3,AAT3

MOVR7,#200

MOVR3,#2

MOV30H,#3FH;回到初态

MOV31H,#3FH

MOV40H,#2

SETBP0.3;关蜂鸣

CLR77H;77H清零,蜂鸣结束,为下一个蜂鸣做准备

CLR70H

RETI

AAT4:

MOVTH0,#0ECH;定时器0计时毫秒

MOVTL0,#78H

MOVR7,#200;1s到置初值

MOVR0,#50

MOVR3,#2

MOV30H,#3FH;回到初态

MOV31H,#3FH

MOV40H,#00H

MOV32H,#3FH;回到初态

MOV33H,#3FH

MOV41H,#00H

SETBP0.3;关蜂鸣

CLR28H

CLR75H;75H清零,为下一个按键做准备

CLR77H;77H清零,蜂鸣结束,为下一个蜂鸣做准备

CLR70H

CLR71H

AAT1:

JNBP2.0,AAT11;判断送显

MOVP1,32H

MOVP2,#00000010B

JB75H,RET2;若20H=1,有键按下则返回

MOVA,P0;读取键值

ANLA,#00000010B

JNZRET2

SETB75H

SJMPRET2

AAT11:

JNBP2.1,AAT12;判断送显

MOVP1,31H

MOVP2,#00000100B

JB75H,RET2;若75H=1,有键按下则返回

MOVA,P0;读取键值

ANLA,#00000001B

JNZRET2

SETB75H

SJMPRET2

AAT12:

JNBP2.2,AAT13;判断送显

MOVP1,30H

MOVP2,#00001000B

SJMPRET2

AAT13:

MOVP1,33H

MOVP2,#00000001B

JB75H,RET2;若75H=1,有键按下则返回

MOVA,P0;读取键值

ANLA,#00000010B

JNZRET2

SETB75H

SJMPRET2

RET2:

RETI

BBU:

CLRTI;清发送标志

RETI

END

二.参考资料

《单片机初级教程》第二版张迎新等编著

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

当前位置:首页 > 初中教育 > 其它课程

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

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