单片机课程设计报告

发布 2022-10-06 08:06:28 阅读 9128

物理机电学院课程设计报告。

课程名称: 单片机原理

专业班级: 12电气。

学号: 2012049544

学生姓名: 张祺祺

指导教师: 温发林。

完成时间。报告成绩。

单片机原理》课程设计。

一、设计任务与要求。

1.数字电子时钟:

设计基本要求:

1)以24h(小时)计时方式;

2)分别用四位或六位led数码管显示时、分、(秒);

3)使用按键开关可实现时、分调整;

2.**倒数计数器。

设计基本要求:

(1)做任意时间倒计数,当倒计数为0时,则发出报警声,通知倒计数终止。

2)分别用四位led数码管显示分、(秒);

3)使用按键开关可实现倒计时的分、秒调整;

3. 其它自选题目。

二、方案设计与论证。

1.数字电子时钟:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。

该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。

2.**倒数计数器。

方案设计:一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。干电路系统由秒信号发生器、“时、分、秒、”计数器、译码器及显示器、电路组成。

方案一:首先构成一个cb555定时器产生**周期为一秒的标准秒脉冲,由74ls160采用清零法分别组成六十进制的秒记数器、六十进制分记数器、二十**制时记数器。使用cb555定时器的输出作为秒记数器的cp脉冲,把秒记数器地进位输出作为分记数器地cp脉冲,分记数器的进位输出作为时记数器的cp脉冲。

使用74ls48为驱动器, bs201a数码管作为显示器,。

方案二:首先构成一个cb555定时器产生**周期为一秒的标准秒脉冲,由74ls160采用置数法分别组成六十进制的秒记数器、六十进制分记数器,二十**制时记数器采用清零法。使用cb555定时器的输出作为秒记数器的cp脉冲,把秒记数器地进位输出作为分记数器地cp脉冲,分记数器的进位输出作为时记数器的cp脉冲。

使用74ls48为驱动器, bs201a数码管作为显示器。

论证:方案一和方案二的设计都很正确,但是方案二在60进制计数器上采用的是置数法,比方案一效果要好。因为清零法在计数进位上不稳定,需要加一个触发器,效果就会非常好,但是本着设计简单,效果稳定的前提下采用方案二。

通过数字钟方框图和原理图可以看出,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现,在此我们用555定时器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”、计数器的输出状态送到七段显示译码器译码,通过七位led七段显示器显示出来。

三、硬件电路设计。

四、软件设计。

1] 数字电子时钟程序。

org 0000h;程序入口地址

ljmp start

org 000bh;定时器0中断入口地址

ljmp timer_0

org 0300h

***程序开始,初始化***

start:

setb 48h;使用一个bit位用于调时闪烁标志。

setb 47h;使用一个bit位用于产生脉冲用于调时快进时基。

mov r1,#0;调整选择键功能标志:0正常走时、1调时、2调分、3调秒。

mov 20h,#00h;用于控制秒基准时钟源的产生

mov 21h,#00h;清零秒寄存器。

mov 22h,#00h;清零分寄存器。

mov 23h,#00h;清零时寄存器。

mov 24h,#00h;用于控制调时闪烁的基准时钟的产生。

mov ip,#02h;ip,ie初始化

mov ie,#82h

mov tmod,#01h;设定定时器0工作方式1

mov th0,#3ch

mov tl0,#0b0h;赋定时初值,定时50ms ??

setb tr0;启动定时器0

mov sp,#40h;重设堆栈指针。

***主程序***

main:

lcall display;调用显示子程序

lcall key_scan;调用按键检测子程序

jz main;无键按下则返回重新循环。

lcall set_key;调用选择键处理子程序。

jb 46h,main;如果已进行长按调整(调时快进),则不再执行下面的单步调整。

lcall add_key;调用增加键处理子程序,加一。

lcall dec_key;调用减少键处理子程序,减一

ljmp main;重新循环

***定时器中断服务程序***

timer_0:

push acc

push psw;保护现场。

mov th0,#3ch

mov tl0,#0b0h;重新赋定时初值

cpl 47h;产生脉冲用于调时快进时基。

inc 24h

mov a,24h

cjne a,#10,add_time;产生0.5秒基准时钟,用于调时闪烁。

cpl 48h;取反调时闪烁标志位。

mov 24h,#00h

add_time:;走时。

inc 20h

mov a,20h

cjne a,#20,reti1;产生1秒基准时钟

mov 20h,#00h ;一秒钟时间到,清零20h

mov a,21h

add a,#01h

da a;作十进制调整。

mov 21h,a

cjne a,#60h,reti1

mov 21h,#00h ;一分钟到

mov a,22h

add a,#01h

da a mov 22h,a

cjne a,#60h,reti1

mov 22h,#00h ;一小时到

mov a,23h

add a,#01h

da a mov 23h,a

cjne a,#24h,reti1

mov 23h,#00h ;到24点,清零小时。

reti1:

pop psw

pop acc ;恢复现场。

reti ;中断返回。

***显示处理***

display:

mov a,21h;秒。

anl a,#0fh

mov 2fh,a;转换出秒个位,存入2fh

mov a,21h

anl a,#0f0h

swap a

mov 2eh,a;转换出秒十位,存入2eh

jb 46h,min;如果长按按键(调时快进),则跳过闪烁处理程序。

cjne r1,#3,min;如果r1为3,闪烁秒位待调整。

jb 48h,min

mov 2fh,#0ah;使该位为10,查表得到使该位不显示的输出。

mov 2eh,#0ah

min:mov a,22h ;分

anl a,#0fh

mov 2dh,a;转换出分个位,存入2dh

mov a,22h

anl a,#0f0h

swap a

mov 2ch,a;转换出分十位,存入2ch

jb 46h,hour;如果长按按键(调时快进),则跳过闪烁处理程序。

cjne r1,#2,hour;如果r1为2,闪烁分位待调整

jb 48h,hour

mov 2dh,#0ah;使该位为10,查表得到使该位不显示的输出。

mov 2ch,#0ah

hour:mov a,23h ;时

anl a,#0fh

mov 2bh,a;转换出时个位,存入2bh

mov a,23h

anl a,#0f0h

swap a

mov 2ah,a;转换出时十位,存入2ah

jb 46h,disp;如果长按按键(调时快进),则跳过闪烁处理程序。

cjne r1,#1,disp;如果r1为1,闪烁时位待调整。

jb 48h,disp

mov 2bh,#0ah;使该位为10,查表得到使该位不显示的输出。

mov 2ah,#0ah

***数码管动态扫描显示***

disp:mov dptr,#table ;16位常数装送到数据指针。

mov a,2fh

movc a,@a+dptr

mov p0,a

clr p2.7

lcall delay

setb p2.7;显示秒个位。

mov a,2eh

movc a,@a+dptr

mov p0,a

clr p2.6

lcall delay

setb p2.6;显示秒十位。

mov a,#40h

mov p0,a

clr p2.5

lcall delay

setb p2.5;显示“-”

mov a,2dh

movc a,@a+dptr

mov p0,a

clr p2.4

lcall delay

setb p2.4;显示分个位。

mov a,2ch

movc a,@a+dptr

mov p0,a

clr p2.3

lcall delay

setb p2.3;显示分十位。

mov a,#40h

mov p0,a

clr p2.2

lcall delay

setb p2.2;显示“-”

mov a,2bh

movc a,@a+dptr

mov p0,a

clr p2.1

lcall delay

setb p2.1;显示时个位。

mov dptr,#table1;该位使用table1以消除前置0

mov a,2ah

movc a,@a+dptr

mov p0,a

clr p2.0

lcall delay

setb p2.0;显示时十位。

ret***按键检测子程序***

key_scan:

clr 46h;关闭长按调整(调时快进)标志。

mov p1,#0ffh;将p1口设置成输入状态

mov a,p1

cpl a

anl a,#07h;p1口低3位连接3个按键,只判断该3位

jz exit_key;无键按下则返回

lcall delay;延时去抖动。

mov a,p1;重新判断

单片机课程设计报告

单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....

单片机课程设计报告

韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...

单片机课程设计报告

南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...