第一篇:单片机课程设计说明书
目录
引言 „„„„„„„„„„„„„„„„„„„„„„„„„
第1章 设计目的及意义„„„„„„„„„„„„„„„„„
第2章 设计内容及要求„„„„„„„„„„„„„„„„„
2.1 设备与器材„„„„„„„„„„„„„„„„„„„ 2.3 设计过程„„„„„„„„„„„„„„„„„„„„
第3章 设计感想„„„„„„„„„„„„„„„„„„„„
第4章 参考文献„„„„„„„„„„„„„„„„„„„„
附录
程序编码„„„„„„„„„„„„„„„„„„„„„„„
引言
LED显示屏是利用发光二极管点阵模式或像素单元组成的平面式显示屏幕,广泛应用于学校,银行,商店等公共场所的信息发布和广告宣传
生活中可以看到各式各样的广告流水灯,有单一颜色的几个灯按固定的次序点亮,有多个不同颜色的灯构成某一图案依次点亮的,也有多排广告灯按多种组合好的次序循环点亮的等。我们设计的广告流水灯,就是这些广告灯中的类型,我们虽然学习了单片机的一些基础知识,做过一些小设计,但是没有系统的总结,通过此次的课程设计,使自己的经验得到了理论上的升华。
为了实现用单片机对广告灯实行控制,我们先进行编程,画出接线图,流程图和写出指令再运行程序,然后根据实际情况对程序进行调试和完善。
第1章 设计目的及意义
1.1 设计是对《电工学》和《单片机原理与应用系统设计》课程理论知识的理解和应用,培养动手能力和解决实际问题的经验; 1..2 通过实验提高对单片机的认识;
1.3 通过实验提高电路焊接,合理布局,电路检查的能力; 1.4 进一步熟悉和掌握单片机的结构及工作原理; 1.5 提高软件调试的能力;
1.6 掌握AT89S5单片机系统中各个管脚的作用;
1.7 通过系统的设计过程,提高分析问题,解决问题的能力; 1.8 培养团队意识和协同合作能力;
第2章 设计内容及要求
2.1 设备与器材
AT89S51简介
AT89S51是一个低功耗,高性能8位单片机,片内含4k Bytes的可反复擦写1000次的只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash储存单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。管脚说明
VCC:电源电压输入端。
GND:电源地。
P0口:P0口为一个8位级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
PDIP封装的AT89S51管脚图
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地
址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(T0定时器的外部计数输入)
P3.5 T1(T1定时器的外部计数输入)
P3.6 /WR(外部数据存储器的写选通)
P3.7 /RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号 发光二极管
发光二极管简称为LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极
管发黄光
发光二极管是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。
发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。
2.2 设计要求
本设计使用AT89C51芯片作为控制芯片,利用P0、P1、P2、P3口
连接共4*8个发光二极管,各个端口电平的高低控制32个灯的亮或灭,以达到各种各样的显示效果。开始时所有灯全暗,通过烧录软件时开始跑马灯,并要求有多种亮暗组合
2.3设计过程 2.31设计效果图 2.32设计电路原理图
将32个发光二极管组成4*8的矩形图形,分别接到P0、P1、P2、P3引脚上。发光二极管有两个引脚,较长的表示正极,较短的表示负极。32个发光二极管共阳极连接。具体连接见电路原理图
2.33 按照电路原理图焊接实际电路图
焊接注意事项:
1.芯片与底座都是有方向的,焊接时,要严格按照PCB板上的缺口所指的方向,使芯片,底座与PCB三者的缺口都对应。2.焊接时,要使焊点周围都有锡,将其牢牢焊住,防止虚焊。3.在焊接圆形的极性电容器时(一般电容值都是比较大的),其电容器的引脚是分长短的,以长脚对应“+”号所在的孔。
4.芯片在安装前最好先两边的针脚稍稍弯曲,使其有利于插入底座对应的插口中。.取电阻时,找到所需电阻后,拿剪刀剪下所需数目电阻,并写上电阻,以便查找。
6.装完同一种规格后再装另一种规格,尽量使电阻器的高低一致。
焊完后将露在印制电路板表面多余引脚齐根剪去。
7.焊接集成电路时,先检查所用型号,引脚位置是否符合要求。焊接时先焊边沿对脚的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。
8.对引脚过长的电器元件(如电容器,电阻等),焊接完后,要将其剪短。
9.焊接后用放大镜查看焊点,检查是否有虚焊以及短路的情况的发生。
10.当有连线接入时,要注意不要使连线深入过长,以至于将其旋在电线的橡胶皮上,出现断路的情况。
12.当电路连接完后,最好用清洗剂对电路的表面进行清洗,以防电路板表面附着的铁屑使电路短路。
13.当最后组转时,应将连线扎起,以防线路混乱交叉。14.焊接上锡时,锡不宜过多,当焊点焊锡锥形时,即为最好
2.33 编写程序 见附图
2.4 最终效果图 见附图
第3章 设计感想
通过此次课程设计使我的理论与实际得到结合,摆脱了单纯的理论知识学习,通过试验加深了我对课本知识的理解,运用所学知识进行简单的程序设计。了解了在单片机系统中扩展简单I/O接口的方
法,外部中断技术的基本使用方法,掌握了中断处理程序的编程方法。在设计过程中,不断调试和修改程序,提高了对单片机的应用能力,分析和解决问题的能力。此次课程设计锻炼了我综合运用所学的专业基础知识,解决实际问题的能力,这次设计让我积累了很多经验。能够顺利如期完成此次课程设计,有赖于小组成员的积极协同配合,在合作中提高了我们的合作意识和协同合作能力。尽管设计过程中困难很多,不断的修改调试,但是最终达到了预期的目的
第4章 参考文献
【1】 欧伟明等﹒单片机原理与应用系统设计.北京:电子工业出版社,2009
第二篇:单片机课程设计电子时钟说明书
《电子时钟》 课程设计说明书
专业班级:
11级自动化<3>班
姓
名: 欧阳明长 李徐军
陈龙
指导教师:
郭
玉
设计时间:
2013--12--17
物理与电气工程学院
2013年12月17日
摘要
电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用STC公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键S12、S13、S14和S15键,进行相应的操作就可实现小时调整、分钟调整和启停功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。
关键词 电子钟;AT89S52;硬件设计;软件设计
目录 设计课题任务、功能要求说明及方案介绍……………………………………3 1.1 设计课题任务………………………………………………………………3 1.2 功能要求说明………………………………………………………………3 1.3 设计总体方案介绍及原理说明……………………………………………3 2 设计课题硬件系统的设计………………………………………………………3 2.1 设计课题硬件系统各模块功能简要介绍…………………………………4 3 设计课题软件系统的设计………………………………………………………4 3.1 设计课题软件系统各模块功能简要介绍…………………………………4 3.2 设计课题软件系统程序流程框图…………………………………………4 4 设计结论、仿真结果、误差分析………………………………………………7 4.1 设计课题的设计结论及使用说明…………………………………………4 4.2 设计课题的误差分析………………………………………………………7 4.3 设计体会……………………………………………………………………7 参考文献 ……………………………………………………………………………7 附 录 ……………………………………………………………………………8 1 设计课题任务、功能要求说明及方案介绍
1.1 设计课题任务
设计一个具有特定功能的电子钟。具有启停、时间显示、报时等功能。并有时间设定,时间调整功能。
1.2 功能要求说明
设计一个具有特定功能的电子钟。电子钟上电从12时0分0秒开始运行,按下启停键进入时钟运行状态;再按启停键暂停运行,并且再次按下时能够在原来的时间上继续计时;运行到整点是能够自动响铃,通过外部按键可以进行实践的调整,并且在运行时相应的LED灯等同步亮灭。
1.3 设计课题总体方案介绍及工作原理说明
本电子钟主要由单片机、4*4独立键盘、显示接口电路和电源电路构成,设 计课题的总体方案如图1.1所示:
图1.1 总体设计方案图
本电子钟的所有的程序、参数均存放在AT89S52的内部RAM中。键盘采用动态扫描方式。利用单片机定时器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。设计课题硬件系统的设计 2.1 设计课题硬件系统各模块功能简要介绍
本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。
(1)单片机最小系统模块:包括8位微控制器AT89S52;电源复位电路;晶振电路。本模块AT89S52系统控制核心,单片机系统复位由电源上电完成。
(2)输入模块:本模块共用到了4个按键(S12、S13、S14、S15),分别完成时间的调整、启停。1个电源开关(具有复位功能)。
(3)输出模块:本次设计显示为8位,采用两个四位一体数码管(共阳极)8个PNP三极管驱动,并且还有蜂鸣器模块。(4)电源模块:USB供电及下载器。
设计课题软件系统的设计
3.1 设计课题软件系统个模块功能简要介绍
本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。
主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的控制。
中断服务程序:主要是用于电子钟的1S延时。键盘输入程序模块:主要是用于完成特定时间调整。
数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:短延时用于数据的动态显示,按键的判断。
3.2 设计课题软件系统程序流程框图
系统程序采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成可烧写文件。
主循环程序框图如3.1所示;判断进位程序如3.2所示; 计时一秒中断程序如3.3所示; 启停中断框图如3.4所示; 延时子程序框图如3.5所示; 图3.1 主循环程序 5
图3.2 判断进位子程序
图3.3 计时一秒中断
图3.4 启停中断程序
图3.5 延时子程序 设计结论、运行结果、误差分析
4.1 设计课题的设计结论及使用说明
本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,只能从平时的实验中得到一些方法,但通过认真研究设计课题,找书上网查资料,确定基本设计方案,对所用芯片功能进行查找、调试,设计中有四个按键,其中S12为分钟加1调整,S13为小时加1调整,S14为外部响铃按键,S15为启停按键,另外当整点时间到时,蜂鸣器报警。这样的结果与设计基本相符,基本上完成了设计任务。
4.2 设计课题的误差分析
该电子钟在运行中存在一定的误差,误差产生有三种原因,首先是采用的计时利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程需要几个机器周期。第二,硬件系统有一定的影响。第三,设计用到12MHz晶振,计算是满20次为一秒钟,实际会慢很多。
4.3 设计体会
本次课程设计,让我们三人受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。
参考文献
[1] 李全利.单片机原理与接口技术[M].高等教育出版社.2009.1.[2] 刘文秀.单片机应用系统仿真的研究[J].现代电子技术.2005, 第286 期.[3] 胡学海.单片机原理及应用系统设计[M],北京:电子工业出版社,2005.[4] 李广第.单片机基础[M],北京航空航天大学出版社,2006.7.附录
程序代码为:
ORG 0000H LJMP START ORG 0003H LJMP INTT0 ORG 0013H LJMP INTT1 ORG 000BH LJMP INTT ORG 0100H START:SETB EA SETB ET0 SETB IT0 SETB EX0 SETB IT0 SETB EX1 SETB IT1 MOV R7,#16 MOV TMOD,#01H MOV TH0,#15536/256 MOV TL0,#15536 MOD 256 MOV R0,#12 MOV R1,#0 MOV R2,#0 MOV R6,0FEH CLR TR0 L1:
LCALL PANDUAN;*****************
;记秒
MOV A,R2
MOV B,#10
DIV AB
MOV P2,#0FDH
LCALL XIANSHI
LCALL DELAY
MOV A,B
MOV P2,#0FEH
LCALL XIANSHI
LCALL DELAY;***************
;调分
JB P3.0,L40 L41:JB P3.0,L42 LJMP L41 L42:INC R1
;计分
L40: MOV A,R1
MOV B,#10
DIV AB
MOV P2,#0EFH
LCALL XIANSHI
LCALL DELAY
MOV A,B
MOV P2,#0F7H
LCALL XIANSHI
LCALL DELAY
MOV P2,#0FBH
MOV P0,#0BFH
LCALL DELAY;******************
;调时
JB P3.1,L45 L47:JB P3.1,L46 LJMP L47 L46:INC R0
;计时
L45: MOV A,R0
MOV B,#10
DIV AB
MOV P2,#07FH
LCALL XIANSHI
LCALL DELAY
MOV A,B
MOV P2,#0BFH
LCALL XIANSHI
LCALL DELAY
MOV P2,#0DFH
MOV P0,#0BFH
LCALL DELAY
;*************************;判断5分钟闹铃
CJNE R1,#5,L51
CLR P3.5
MOV P1,R6
MOV A,R6
RL A
MOV R6,A
LJMP L52 L51:CJNE R1,#6,L52
SETB P3.5 L52: LJMP L1
;***************;执行1秒钟
INTT:DJNZ R7,L33
MOV R7,#16
INC R2
MOV P1,R6
MOV A,R6
RL A
MOV R6,A L33:RETI;*********************
;外部中断
INTT0:CPL P3.5
MOV P1,#0
RETI;***********************
;启停功能
INTT1:MOV P1,#0
LCALL DELAY
JB P3.3,L97
CPL TR0
L97: RETI;**********************
;显示子程序
XIANSHI:MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
RET
;**********************
;延时子程序
DELAY:MOV R3,#20
DEL1:MOV R4,#50
DEL2:DJNZ R4,DEL2
DJNZ R3,DEL1
RET
;*******************
;判断进位子程序
PANDUAN:
CJNE R2,#60,L31
MOV R2,#0
INC R1
L31:CJNE R1,#60,L32
MOV R1,#0
INC R0
L32:CJNE R0,#24,L35
MOV R0,#0
L35:RET
;********************
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END
第三篇:单片机课程设计说明书通用格式
单片机课程设计说明书通用格式
课程设计经常做的题目:
可调节的时钟
电子密码锁
计算器
键盘显示
音乐播放器
红外
液晶显示
设计要求和条件
根据单片机开发板所提供的元件特性和硬件电路,编写相关的程序,通过实验开发板实现XXXXXXX功能。
1、搭建仿真电路图,模拟单片机要实现的功能
2、焊接单片机开发板
3、编写程序
4、下载并调试,实现功能
功能介绍:基本功能和扩展功能介绍(诸如按下什么按键显示什么)
设计目的:(用到多少写多少,也可以添加)
1、熟练掌握KEIL软件的使用方法
2、熟练掌握PROTEUS软件的使用方法
3、掌握单片机I/O接口的工作原理
4、掌握中断系统的工作原理
5、掌握动态LED显示器的工作原理及编程方法
6、掌握蜂鸣器的编程使用
7、掌握行列式键盘的工作原理及编程使用方法
8、掌握单片机的下载使用方法
设计方案论证:
方案一:XXXXXXXX。流程图或者结构图
方案二:XXXXXXXX流程图或者结构图
方案三:XXXXXXXXX流程图或者结构图
经过对比,使用方案X。
设计结果分析:
编写的程序能够实现预想的功能,具体功能实现:XXXXXXXXX
设计过程中遇到的问题,怎么解决的。
设计体会:
通过课程设计,将前面所学的知识进行了综合总结和运用,提高了知识的运用能力,培养了实际动手能力。Xxxxxxxxxxxxx
参考文献:XXXXXXXX
附录:仿真图和程序
第四篇:单片机课程设计
设计题目: 单片机课程设计
学生姓名:
学
院: 电气与信息工程学院
班
级: 电子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亿多元人民币。火灾事件经常发生,防止火灾事故关系到人民群众的生命财产安全和社会和谐稳定。现在各种电子产品的普及,再加上人们防火意识的不强,这些都给火灾的发生带来了巨大的安全隐患。
对于火灾最关键的问题在于预防,目前防火报警系统趋于智能化、自动化,灵敏程度也越来越高。在这种背景下,基于单片机的火灾智能报警控制系统能突显出其巨大的优越性。目前,国内大多数偏重于商场、宾馆、高级写字楼、大型仓库等大型火灾报警系统的研发和设计。本系统侧重于小型火灾智能报警系统的设计,可在火灾发生初期检测到并且报警,还能够实时显示温度和烟雾浓度。