物理机电学院课程设计报告。
课程名称: 单片机原理
专业班级: 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 二 课程设计...