第一篇:单片机课程设计
单片机课程设计报告
专业:电气工程及其自动化 班级:电0901-4班 姓名:代红新 学号:20092444 指导老师:石彦辉
电气与电子工程学院
2012/6/22
一、设计题目:电子时钟
二、设计要求:
1.通过键设置当前时间(时分秒)2.可切换显示年月日
3.可设定闹钟,到时报警,一个发光管闪烁(1次/秒),有复位键停止报警 4.可切换显示闹钟时间和当前时间
5.本机地址为02H,当接到上位机发的02H时,则回发02H 当接到上位机发的AAH时,则将当前时间发给上位机 当收到上位机发的55H时,则修改当前时间(时分秒)
三、设计思路
经过思考,该电子时钟试验须有六个八段数码管,分别指示时分秒,切换指示年月日,由指示灯指示闹钟提醒,以及上位机对下位机的控制,更改时间。
硬件设计思路:下位机显示时间和日期,以及闹钟指示灯,时间日期的更改由两个中断实现,一个位选,一个加一。上位机显示发送的数据和接受显示,仅由一个外部中断来切换方式。
软件设计思路:通过之前的单片机实验的练习,加上对本实验的理解,知道该由数码管显示时间,日期,进位转换,定时器计数器的应用,将数字转换为24进制,60进制,30进制以及365进制,并通过位选和片选实现显示。
四、硬件设计
五、软件设计
(一)上位机编程设计
SOK EQU 24H;fasongdezhonglei HOUR EQU 25H;xiangcongjifade hour MIN EQU 26H
;xiangcongjifade min SOK1 EQU 27H
;weixuanze HOUR1 EQU 28H
;zhujijieshoude hour MIN1 EQU 29H
;zhujijieshoude min ORG 0000H AJMP MAIN ORG 0003H AJMP X0IN;zhongleigaibian ORG 000BH AJMP T0IN
;zhujixiugaicongji ORG 0013H AJMP X1IN
;weixuanze
ORG 0030H MAIN:MOV SOK,#01H
MOV HOUR,#00H
MOV MIN,#00H
MOV SOK1,#01H
MOV HOUR1,#00H
MOV MIN1,#00H
MOV 21H,#02H
MOV 22H,#0AAH
MOV 23H,#55H
MOV TMOD,#26H
MOV TH1,#0FAH
MOV TL1,#0FAH
MOV TH0,#0FFH
MOV TL0,#0FFH
MOV PCON,#00H
MOV SCON,#50H
SETB PX0
CLR PS
CLR PT1
CLR PT0
CLR PX1
CLR ET1
SETB TR1
CLR ES
CLR TI
SETB IT0
SETB IT1
SETB EX0
SETB EX1
SETB ET0
SETB TR0
SETB EA ccc:MOV A,SOK
CJNE A,#1,aaa
LCALL DISP1
SJMP ccc aaa:MOV A,SOK
CJNE A,#2,eee
LCALL DISP2
SJMP ccc
eee:MOV DPTR,#8004H
MOV A,#6DH
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#6DH
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP ccc
;XIANSHI;WAIT3:JNB TI,WAIT3
;CLR TI
;cc:MOV A,SOK
;CJNE A,#03H ,aa
;MOV A,23H
;MOV SBUF,A
;WAIT13:JNB TI,WAIT13
;CLR TI
X0IN:INC SOK
MOV A,SOK
CJNE A,#04H,dd
MOV SOK,#01H
SJMP ddd
dd:MOV A,SOK
CJNE A,#02H,qqq
MOV A,#0AAH
MOV SBUF,A WAITa:JNB TI,WAITa
CLR TI
WAIT4:JNB RI,WAIT4
CLR RI
MOV A,SBUF
MOV MIN1,A WAIT5:JNB RI,WAIT5
CLR RI
MOV A,SBUF
MOV HOUR1,A ddd: RETI qqq:MOV A,#55H
MOV SBUF,A WAITB:JNB TI,WAITB
CLR TI
RETI X1IN:INC SOK1
MOV A,SOK1
CJNE A,#03H,ee
MOV SOK1,#01H
ee:RETI T0IN:MOV A,SOK1
CJNE A,#1,ff
MOV A,SOK1
MOV SBUF,A WAIT6:JNB TI,WAIT6
CLR TI
MOV A,HOUR
CJNE A,#23,hh
MOV HOUR,#00H
MOV A,HOUR
MOV SBUF,A WAIT7:JNB TI,WAIT7
CLR TI
RETI
hh:INC HOUR
MOV A,HOUR
MOV SBUF,A WAIT8:JNB TI,WAIT8
CLR TI
RETI
ff: MOV A,SOK1
MOV SBUF,A WAIT9:JNB TI,WAIT9
CLR TI
MOV A,MIN
CJNE A,#59,ii
MOV MIN,#00H
MOV A,MIN
MOV SBUF,A WAIT10:JNB TI,WAIT10
CLR TI
RETI
ii:INC MIN
MOV A,MIN
MOV SBUF,A WAIT11:JNB TI,WAIT11
CLR TI
RETI DISP1:MOV DPTR,#8004H
MOV A,#3FH
MOVX @DPTR,A
MOV A,#04H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#5BH
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#76H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#3FH
MOVX @DPTR,A
MOV A,#20H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#5BH
MOVX @DPTR,A
MOV A,#10H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#76H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
RET
DISP2:MOV DPTR,#8004H
MOV A,#77H
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#77H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#TAB
MOV A,HOUR1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 40H,A
MOV A,B
MOVC A,@A+DPTR
MOV 41H,A
MOV A,MIN1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 42H,A
MOV A,B
MOVC A,@A+DPTR
MOV 43H,A
MOV DPTR,#8004H
MOV A,40H
MOVX @DPTR,A
MOV A,#20H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,41H
MOVX @DPTR,A
MOV A,#10H
MOV DPTR,#8002H
MOVX @DPTR,A(二)下位机编程设计
SOK2 BIT 20H.0;秒标志位 SOK5 BIT 20H;秒标志位
SEC EQU 30H
;秒
MIN EQU 31H
;分
HOUR EQU 32H
;时
DAY EQU 33H
;天
MON EQU 34H
;月
YEAR EQU 35H
;年
SEC1 EQU 36H
;闹钟的秒
MIN1 EQU 37H
;闹钟的分
HOUR1 EQU 38H;闹钟的时
SOK1 EQU 57H
;模式切换
SOK3 EQU 58H;位选择标志
SOK4 EQU 59H;模式表示
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP X0IN
ORG 000BH
LJMP T0IN
ORG 0013H
LCALL DEL
MOV DPTR,#8004H
MOV A,42H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,43H
MOVX @DPTR,A
MOV A,#04H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
RET
;XIANSHI
DEL:MOV R1,#750
zzz:DJNZ R1,zzz
RET
TAB:DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH
END
LJMP X1IN
ORG 0023H
LJMP ESIN
ORG 0070H MAIN:MOV SOK1,#00H
MOV SOK3,#01H
MOV SEC,#00H
MOV MIN,#11
MOV HOUR,#11
MOV DAY,#21
MOV MON,#06
MOV YEAR,#12
MOV SEC1,#00H
MOV MIN1,#00H
MOV HOUR1,#00H
MOV R0,#10
MOV TMOD,#21H
MOV TL1,#0FAH
MOV TH1,#0FAH
MOV TH0,#3CH
MOV TL0,#0B0H
MOV PCON,#00H
MOV SCON,#50H
CLR TI
SETB ES
SETB PS
CLR PT1
CLR PX1
CLR PT0
CLR PT1
SETB P1.1
SETB EX0
SETB EX1
SETB IT0
SETB IT1
SETB ET0
CLR ET1
SETB TR0
SETB TR1
SETB EA
aa:JNB SOK2,ff
CLR SOK2
MOV A,SEC
CJNE A,#59,gg
MOV SEC,#00H
MOV A,MIN
CJNE A,#59,hh
MOV MIN,#00H
MOV A,HOUR
CJNE A,#23,ii
MOV HOUR,#00H
MOV A,DAY
CJNE A,#30,jj
MOV DAY,#01
MOV A,MON
CJNE A,#12,kk
MOV MON,#01
INC YEAR
gg:INC SEC
AJMP ff
hh:INC MIN
AJMP ff
ii:INC HOUR
AJMP ff
jj:INC DAY
AJMP ff
kk:INC MON
AJMP ff
ff:MOV A,HOUR
CJNE A,HOUR1,zz
MOV A,MIN
CJNE A,MIN1,zz
JNB SOK5,xx
CLR SOK5
SETB P1.0
LJMP zz
xx:CLR P1.0
zz:MOV A,SOK1
CJNE A,#00H,bb
AJMP DISP1
bb:CJNE A,#01,cc
AJMP DISP2
cc:AJMP DISP3
DISP1:MOV SOK4,#01H
MOV DPTR,#TAB
MOV A,DAY
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 45H,A
MOV A,B
MOVC A,@A+DPTR
MOV 46H,A
MOV A,MON
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 47H,A
MOV A,B
MOVC A,@A+DPTR
MOV 48H,A
MOV A,YEAR
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 49H,A
MOV A,B
MOVC A,@A+DPTR
MOV 50H,A
MOV DPTR,#8004H
MOV A,49H
MOVX @DPTR,A
MOV A,#20H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP aa
DISP2:MOV SOK4,#02
MOV DPTR,#TAB
MOV A,HOUR
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 43H,A
LCALL DEL
MOV DPTR,#8004H
MOV A,50H
MOVX @DPTR,A
MOV A,#10H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,47H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,48H
MOVX @DPTR,A
MOV A,#04H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,45H
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,46H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
MOV A,B
MOVC A,@A+DPTR MOV 44H,A MOV A,MIN MOV B,#10 DIV AB
MOVC A,@A+DPTR MOV 41H,A MOV A,B
MOVC A,@A+DPTR MOV 42H,A MOV A,SEC MOV B,#10 DIV AB
MOVC A,@A+DPTR MOV 39H,A MOV A,B
MOVC A,@A+DPTR MOV 40H,A MOV DPTR,#8004H MOV A,43H MOVX @DPTR,A MOV A,#20H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,44H MOVX @DPTR,A MOV A,#10H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,41H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,42H
MOVX @DPTR,A
MOV A,#04H
MOV 54H,A
MOV A,SEC1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 51H,A
MOV A,B
MOVC A,@A+DPTR
MOV 52H,A
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,39H
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,40H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP aa
DISP3:MOV SOK4,#03
MOV DPTR,#TAB
MOV A,HOUR1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 55H,A
MOV A,B
MOVC A,@A+DPTR
MOV 56H,A
MOV A,MIN1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 53H,A
MOV A,B
MOVC A,@A+DPTR
MOV DPTR,#8004H MOV A,55H MOVX @DPTR,A MOV A,#20H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,56H MOVX @DPTR,A MOV A,#10H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,53H MOVX @DPTR,A MOV A,#08H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,54H MOVX @DPTR,A MOV A,#04H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,51H MOVX @DPTR,A MOV A,#02H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL
MOV DPTR,#8004H
MOV A,52H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP aa
X0IN:INC SOK1
CJNE A,#12,uu
MOV MON,#1
RETI
uu:INC MON
RETI
tt:INC YEAR
RETI
vv:MOV A,SOK4
CJNE A,#02H,ww
MOV A,SOK1
CJNE A,#3,dd
MOV SOK1,#00H
dd:RETI
T0IN:MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,ee
SETB SOK2
SETB SOK5
MOV R0,#10
ee:RETI
X1IN:JNB P1.1,kkk
MOV A,HOUR
CJNE A,HOUR1,aaa
MOV A,MIN
CJNE A,MIN1,aaa
INC MIN
aaa:INC SOK3
MOV A,SOK3
CJNE A,#4,ll
MOV SOK3,#01H
ll:RETI
kkk:MOV A,SOK4
CJNE A,#01H,vv
MOV A,SOK3
CJNE A,#01H,www
MOV A,DAY
CJNE A,#30,ss
MOV DAY,#1
RETI
ss:INC DAY
RETI
www:MOV A,SOK3
CJNE A,#2,tt
MOV A,MON
MOV A,SOK3
CJNE A,#1,nn
MOV A,SEC
CJNE A,#59,mm
MOV SEC,#00H
RETI mm:INC SEC
RETI nn:MOV A,SOK3
CJNE A,#2,pp
MOV A,MIN
CJNE A,#59,oo
MOV MIN,#00H
RETI oo:INC MIN
RETI pp:MOV A,HOUR
CJNE A,#23,qq
MOV HOUR,#00H
RETI qq:INC HOUR
RETI ww:MOV A,SOK4
CJNE A,#03H,bbb
MOV A,SOK3
CJNE A,#1,ccc
MOV A,SEC1
CJNE A,#59,ddd
MOV SEC1,#00H
RETI ddd:INC SEC1
RETI ccc:MOV A,SOK3
CJNE A,#2,eee
MOV A,MIN1
CJNE A,#59,ggg
MOV MIN1,#00H
RETI
ggg:INC MIN1
RETI
eee:MOV A,HOUR1
CJNE A,#23,fff
MOV HOUR1,#00H
RETI
fff:INC HOUR1
bbb:RETI
ESIN: CLR RI;很容易被忽略
MOV A,SBUF
CJNE A,#02H,aaaa
MOV A,#02H
MOV SBUF,A WAIT1:JNB TI,WAIT1
CLR TI
RETI aaaa:
CJNE A,#0AAH,bbbb
MOV A,MIN
MOV SBUF,A
WAIT2:JNB TI,WAIT2
CLR TI
MOV A,HOUR
MOV SBUF,A
WAIT3:JNB TI,WAIT3
CLR TI
RETI
bbbb: CPL P1.7
;WAIT7:JNB RI,WAIT7
;
CLR RI
;
MOV A,SBUF
;
CJNE A,#01H,cccc
;WAIT4:JNB RI,WAIT4
;
CLR RI
;
MOV A,SBUF
;
MOV HOUR,A
;cccc: NOP
;WAIT5:JNB RI,WAIT5
;
CLR RI
;
MOV A,SBUF
;MOV MIN,A
RETI
DEL:MOV R1,#750
zzz:DJNZ R1,zzz
RET
TAB:DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH
END
六、设计总结。
单片机已渗透到我们生活的各个领域,几乎很难找到没有单片机足迹的领域。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说全自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。科技越发达,智能化的东西就越多。因此学习单片机是社会发展的必然需求。
为期十天的单片机课程设计结束了,回想起这十天的设计过程,有紧张激烈的构思讨论过程,有忙碌甚至绞尽脑汁的编程调试阶段。有久久实现不了的无奈,也有灵机一动的兴奋,更有老师的肯定和鼓励。
几天的单片机课程设计,较之前的实验上机实现了更多的功能,使得单片机实力有更充分的发挥,硬件设计还算简单,但是其编程技巧有了更深更高的要求,软件编程是本课程设计的难点和重点,通过对题目要求的仔细研究,外加之前实验的经验,加上老师的悉心指点,并提出了宝贵的意见,我们的“时钟“功能得以实现。在这里,我必须要感谢老师的悉心指导,同学们的互相帮助,谢谢你们!
第二篇:单片机课程设计
设计题目: 单片机课程设计
学生姓名:
学
院: 电气与信息工程学院
班
级: 电子111班 指导教师:
日 期: 2014年9月20日
一、课程设计目的:
了解电子元器件的功能与原理,掌握单片机的结构和原理,学会使用单片机应用开发技术的相关软件如 keill、STC_ISP_V394等,能够使用c语言的语言编程简单的功能。
二、设计的思想:
利用所提供的单片机和开发板的原理图用keill软件编程程序以实现一些功能。然后用STC_ISP_V394.exe软件将编译完全正确的程序生成的hxe文件下载到开发板上,再调试编译的程序能否实现其所设计的功能。
1、对蜂鸣器的了解:
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,它由振荡器、电磁线圈、磁铁、振动膜片及外壳组成,接通电源后,振荡器产生的音频信号由电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。
2、设计:
我们所使用的开发板实物图如图一,单片机对右上角蜂鸣器的控制是加入三极管接入vcc,单片机的第22引脚和负极上,以此来控制蜂鸣器工作。单片机我们选择STC89C52RC+1602液晶来实现对蜂鸣器的控制及显示所需要的信息。
图一 调试说明:
首先用Keil软件创建一个工程,将程序源代码输入并编译生成单片可执行的.hex文件。其次,打开单片机实践板的电源,接好串口线,用STC-ISP烧录软件,将.hex文件烧录入单片机中。程序下载完毕后,单片机会自动执行程序功能。最后,观察程序功能的执行情况,看是否达到了设计要求。
如果单片机实践板硬件电路的执行结果与设计结果一致,则说明设计过程及流程没有问题,完全符合设计要求。否则,先检查单片机实践板的硬件电路是否完好,是否有断点、漏焊、虚焊以及元器件是否完好等情况,排除故障重新连接后重新进行调试。如果仍然无法正
常实现,则说明程序编写有误,需要认真检查程序流程,然后经过反复的修改与调试排除故障,实现设计要求的各项功能。编译和烧写该程序到单片机:
(1)用Keil编译上面的代码,并设置产生16进制代码文件*.hex.(2)用专用下载线,连接好实验板和电脑串口(DB9)(2)运行hex文件烧写软件STC_ISP_V394.exe
选单片机的型号,并打开编译产生好的hex文件
点击下载,给开发板上电。
3、实现的功能:使用单片机将歌曲《八月桂花》的调子通过蜂鸣器播放出来,用1602液晶将想要表达的信息有步骤地显示在液晶显示屏上,并且调子与显示内容可以任意通过修改的程序烧录到单片机内,实现设计产品的使用性与灵活性。
三、实验程序:
/************************************************************************
[主题] C51音乐程序《八月桂花》
[功能]
通过单片机演奏音乐,显示一些内容
/**********************************************************************/
#include
#include
//本例采用89C52, 晶振为11.0592MHZ
//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
//所以拿出谱子, 试探编吧!
unsigned char i=0;sbit Beep = P2^7;
unsigned char p,m;
//m为频率常数变量
unsigned char n=0;//n为节拍常数变量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00
};
void int0()interrupt 1
//采用中断0 控制节拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay(unsigned char m)
//控制频率延时
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a)//豪秒延时子程序
{
while(--a);
//采用while(--a)不要采用while(a--);各位可编译一下看看汇编结果就知道了!
}
typedef unsigned char BYTE;typedef bit BOOL;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;sbit LCD_EP = P2^2;
BYTE code dis1[] = {“
WLCOME TO
”};BYTE code dis2[] = {“
DanPianJi ”};BYTE code dis3[] = {“
111iZnaiD
”};BYTE code dis4[] = {“
eiXeiX ”};
delays(int ms){
// 延时子程序 int i;while(ms--){
for(i = 0;i< 250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
} } }
BOOL lcd_bz(){
// 测试LCD忙碌状态 BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result =(BOOL)(P0 & 0x80);LCD_EP = 0;return result;}
lcd_wcmd(BYTE cmd){
while(lcd_bz());LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;
}
lcd_pos(BYTE pos){
lcd_wcmd(pos | 0x80);
// 写入指令数据到LCD //设定显示位置
}
lcd_wdat(BYTE dat)
{
//写入字符显示数据到LCD while(lcd_bz());LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}
lcd_init(){
lcd_wcmd(0x38);
delays(1);lcd_wcmd(0x0c);
delays(1);lcd_wcmd(0x06);
delays(1);lcd_wcmd(0x01);
delays(1);}
void main()
{
BYTE j;
lcd_init();
delays(10);
//LCD初始化设定
//16*2显示,5*7点阵,8位数据//显示开,关光标 //移动光标 //清除LCD的显示内容
// 初始化LCD
lcd_wcmd(0x06);
//向右移动光标
lcd_pos(0);
//设置显示位置为第一行的第1个字符
j = 0;
while(dis1[ j ]!= ' ')
{
//显示字符“Welcome TO”
lcd_wdat(dis1[ j ]);
j++;
delays(30);
//控制两字之间显示速度
}
lcd_pos(0x40);
j = 0;
while(dis2[ j ]!= ' ')
{
lcd_wdat(dis2[ j ]);
j++;
delays(30);
}
delays(800);
lcd_wcmd(0x01);
delays(1);
lcd_wcmd(0x04);
lcd_pos(15);
j = 0;
while(dis3[ j ]!= ' ')
{
lcd_wdat(dis3[ j ]);
j++;
delays(30);
}
lcd_pos(0x4F);
j= 0;
while(dis4[ j ]!= ' ')
{
lcd_wdat(dis4[ j ]);
j++;
delays(30);
}
delays(800);
//设置显示位置为第二行第1个字符 //显示字符“ DanPianJi ”
//控制两字之间显示速度
//控制停留时间
//清除LCD的显示内容
//向左移动光标
//设置显示位置为第一行的第16个字符
//显示字符“DianZi111”
//控制两字之间显示速度
//设置显示位置为第二行的第16个字符//显示字符“ XieXie ”
//控制两字之间显示速度
//控制停留时间
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00)
{ i=0, delayms(1000);goto play;}
//如果碰到结束符,延时1秒,回到开始再来一遍
else if(p==0xff){ i=i+1;delayms(100),TR0=0;goto a;} //若碰到休止符,延时100ms,继续取下一音符
else
{m=music_tab[i++], n=music_tab[i++];} //取频率常数 和 节拍常数
TR0=1;
//开定时器1
while(n!=0)Beep=~Beep,delay(m);
//等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0;
//关定时器1
}
}
四、电路图的protue仿真
五、单片机课程设计心得体会:
这个学期的单片机课已经早早的上完了,但是理论纯属理论,没有与实践的结合总让我们学的不踏实,感觉没有达到学以致用的效果。所庆幸的是在课程介绍考试完之后,老师给我们安排了这次单片机课程设计,给了我们学以致用的做好的实践
关于这次课程设计,我们花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等,在摸索中学习,在摸索中成长,在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获,在真正设计之前我们做了相当丰富的准备,首先巩固一下课程理论,再一遍熟悉课程知识的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的的软件流程图之后才着手设计。在设计程序时,我们不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;养成注释程序的好习惯是非常必要的,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也能为资料的保存和交流提供了方便;我觉得在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计又出错了。
除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。
除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。
第三篇:单片机课程设计
基于单片机的火灾智能报警控制系统的设计
前言
在各种灾害中,火灾是最经常、最普通地威胁公众安全和社会发展的灾害之一。人类能够对火进行利用和控制,是文明进步的一个重要标志。火,给人类带文明进步、光明和温暖。但是,失去控制的火,就给人类造成灾害。据统计,我国 70 年代火灾年平均损失不到 2.5 亿元,80 年代火灾年平均损失不到
3.2 亿元。进入 90 年代,特别是 1993 年以来,火灾造成的直接财产损失上升到年均十几亿元,年均死亡 2000 多人。2010年上海静安区高层住宅着火,导致58人死亡,70余人受伤。2014年1月云南香格里拉大火,烧毁房屋100多栋,直接经济损失1亿多元人民币。火灾事件经常发生,防止火灾事故关系到人民群众的生命财产安全和社会和谐稳定。现在各种电子产品的普及,再加上人们防火意识的不强,这些都给火灾的发生带来了巨大的安全隐患。
对于火灾最关键的问题在于预防,目前防火报警系统趋于智能化、自动化,灵敏程度也越来越高。在这种背景下,基于单片机的火灾智能报警控制系统能突显出其巨大的优越性。目前,国内大多数偏重于商场、宾馆、高级写字楼、大型仓库等大型火灾报警系统的研发和设计。本系统侧重于小型火灾智能报警系统的设计,可在火灾发生初期检测到并且报警,还能够实时显示温度和烟雾浓度。
第四篇:单片机课程设计
单片机课程设计
课题: 简易电子琴设计
学
院:
电气与信息工程学院 专
业:
电子信息工程 姓
名:
李琳琳 学
号:
093411106
指导老师:
田巍
河南城建学院
2014年
01 月
01 日
第五篇:单片机课程设计
单片机课程设计
---------
机电汽车工程学院
同组成员:(机091-1)姓名(学号):