单片机课程设计任务书.docx
《单片机课程设计任务书.docx》由会员分享,可在线阅读,更多相关《单片机课程设计任务书.docx(14页珍藏版)》请在冰豆网上搜索。
单片机课程设计任务书
目录
第1章:
引言……………………………………………………………………
(2)
第2章:
方案论证………………………………………………………………
(2)
2.1:
方案选择…………………………………………………………………
(2)
2.2:
单片机最小系统设计……………………………………………………(3)
2.3:
按键及接口设计…………………………………………………………(4)
2.4:
显示及接口设计…………………………………………………………(5)
2.5:
驱动电路的设计…………………………………………………………(5)
2.6:
电源电路的设计…………………………………………………………(5)
第3章:
8×8点阵显示器控制系统的硬件设计………………………………(6)
3.1:
硬件系统的总体设计……………………………………………………(6)
3.2:
单片机AT89C52的分析…………………………………………………(6)
3.3:
具体电路及功能分析……………………………………………………(8)
3.4:
8×8点阵显示电路原理图………………………………………………(8)
第4章:
8×8点阵控制系统的软件设计………………………………………(9)
4.1:
软件总体设计及功能的描述……………………………………………(9)
4.2:
单片机系统资源分配……………………………………………………(9)
4.3:
软件主程序和显示程序流程图…………………………………………(10)
第5章:
样品的制作与调试……………………………………………………(11)
5.1:
原材料的选择与采购……………………………………………………(11)
5.2:
单片机的测试……………………………………………………………(12)
5.3:
硬件及软件的调试………………………………………………………(12)
5.4:
整机的测试与调试………………………………………………………(12)
第6章:
使用说明书……………………………………………………………(13)
第7章:
后记……………………………………………………………………(13)
参考文献…………………………………………………………………………(14)
附录1:
源程序…………………………………………………………………(15)
AT89C52控制点阵汉字显示设计
摘要:
本系统设计思路是:
利用单片机对整个系统进行总体控制,进行显示所要显示的字符。
显示方式分为三种:
逐字显示、上滚显示、左滚显示,其中显示字模数据由单片机输入显存,点阵的点亮过程有程序控制,由驱动电路完成,点阵采用单色显示,该显示器电路的特点是:
点阵的动态显示过程占用时间比较短,亮度比较高,而且亮度可以改变电阻进行调节。
关键词:
LED点阵;嵌入式系统;单片机;显存;
第1章引言
当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。
因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。
目前,点阵式显示器件具体包括LED显示模块和LCD显示模块等。
现在发展的LCD比较先进,LCD的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。
LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。
据不完全统计,1991年,全国LED显示屏的产值还不到亿元人民币,而在1993年,仅蓝通公司一家企业的显示屏产值即达1亿多人民币。
第2章:
方案论证
2.1方案选择
2.1.1需要实现的功能
显示预先想要显示的内容,在本设计中要求显示“课程设计”四个文字,显示方式分三种:
①逐字显示,②向上滚动显示,③向左滚动显示。
2.1.2设计思路
根据需要实现的功能,初步确定设计方案如下:
●通过单片机编程依次显示汉字“课程设计”。
●P0口作为I∕O口,作为字符数据输出口。
●P2口作为I∕O口,作为字符显示扫描输出口。
●P1.0、P1.1和P1.2口分别接K1、K2和K3,作为控制信号的输入。
●通过改变电阻的大小来改变显示字符的亮度。
2.1.3单片机AT89C52的选择
本方案最大的特点在于核心控制芯片的选择,采用AT89C52单片机,利用AT89C52的掉电工作方式,构成高可靠、低功耗系统方法。
AT89C52的采用有很多方面的优势。
应用AT89C52作为控制核心的设计大多在性能上要求很高。
原因在于,在一些应用场合,单片机并不是每时每刻都在工作,而是多数时间处于守候状态。
为使单片机系统工作更省电、更可靠,我们可以使单片机在不工作时处于掉电工作方式,其工作状态被冻结,如AT89C52处于掉电工作方式时耗电仅十几微安。
此外,AT89C52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.2单片机最小系统设计
2.2.1各部分具体电路
1单片机的时钟电路
AT89C52单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。
单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。
AT89C52的时钟产生方式有两种:
内部时钟电方式和外部时钟方式。
由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。
内部时钟方式:
利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。
最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。
图2-1使用片内振荡电路的时钟电路
2单片机的复位电路
本设计中AT89C52是采用上电自动复位和按键复位两种方式。
最简单的复位电路如图2-2所示。
上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。
其中R1和R2分别选择200Ω和1KΩ的电阻,电容器一般选择22μF。
图2-2AT89C52的复位电路
3AT89C52的最小应用系统
AT89C52是片内有程序存储器的单片机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图2-3所示。
这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量的I∕O线。
图2-3AT89C52单片机构成的最小系统
2.3按键及接口设计
2.3.1独立式按键接口设计
本设计按键较少,采用独立式按键简单而方便。
独立式按键就是各键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。
因此,通过检测输入线的电平状态很容易判断哪个按键被按下了。
设计采用的是中断方式的独立式按键工作电路,按键直接与AT89C52的I/O口线相接,通过读I/O口,判定各I/O口线的电平状态,即可识别出按下的键。
独立式按键电路中,一般采用上拉电阻,这是为了保证在按键断开时,各I/O口线有确定的高电平。
而AT89C52芯片内已有上拉电阻,则外部的上拉电阻可以省去。
2.4显示器及接口设计
2.4.18×8点阵LED显示器的组成原理及控制方式
本次设计中采用8×8点阵LED显示器,简称LED点阵板或LED矩阵板。
它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。
有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种,设计中用到的是共阳极的显示器。
共阳极接法的原理图如图2-4所示,图中画出了8×8点阵的二极管。
每一行发光二极管的阳极接在一起,有一个引出端r,每一列发光二极管的阴极接在一起,有一个引出端c。
当给发光二极管阳极引出端r1加高电平,阴极引出端c1加低电平时,左上角的二极管被点亮因此,对于行和列的电平进行扫描控制时,可以达到显示不同汉字的目的。
显示可以按照从左到右,先下后上的顺序写出编码。
然后写入单片机的数据存储单元中。
“点阵设计个十百千”8个字的编码表如下:
{0x00,0x01,0x5c,0x55,0xf4,0x15,0x1c,0x01},//点
{0x54,0x54,0xff,0x74,0x54,0xd8,0xa8,0xff},//阵
{0x31,0xfa,0x94,0xfa,0x11,0x32,0x6a,0x26},//设
{0x00,0x10,0x10,0x7f,0x10,0x32,0x6e,0x22},//计
{0x10,0x20,0x40,0xff,0x40,0x20,0x10,0x00},//个
{0x10,0x10,0x10,0xff,0x10,0x10,0x10,0x00},//十
{0x00,0xbe,0xaa,0xaa,0xea,0xaa,0xbe,0x00},//百
{0x08,0x08,0x88,0x7f,0x48,0x08,0x08,0x00},//千
图2-48×8点阵LED显示器组成原理图
图2-58×8点阵LED引脚的排列图
2.4.28×8点阵LED显示器与单片机的接口
8×8点阵LED的引脚图如图2-5所示,当采用单片机进行控制时,连接点阵显示器的共阳极r端需经驱动三极管9012与单片机的P2口相连,而共阴极c端需经限流电阻与单片机的P0口相连。
在编程控制时,将8×8点阵LED显示分成行和列两部分,字符数据从P0口输出,扫描控制字从P2口输出,每一列由一个字节的数据组成,数据可一次送入,然后扫描一行,显示一个字需要扫描8次。
2.5驱动电路的设计
显示器驱动是一个非常重要的问题,如果驱动能力差,显示器亮度就低;而驱动器长期在超负荷下运行则很容易损坏。
该设计中采用P0和P2口同时使用上拉电阻的方法,以提高I/O口德驱动能力。
放别加1K、4.7K上拉电阻,经过实践得知显示效果良好。
第3章8×8点阵显示器控制系统的硬件设计
3.1硬件系统的总体设计
根据设计要求与设计方案,硬件电路的设计框图如图3-1所示。
硬件电路结构由8个部分组成:
时钟电路、复位电路、按键接口电路、电源电路、点阵显示阳极驱动电路、点阵显示阴极驱动电路和8×8点阵显示电路。
图3-18×8点阵显示器组成原理框图
3.2单片机AT89C52的分析
由于AT89C52片内有8K的Flash程序存储器,并且I∕O口可直接驱动点阵显示器,所以由它组成小系统硬件非常简单。
3.2.1AT89C52单片机芯片的性能及功能
图3-2AT89C52引脚图
1性能说明
·与MCS-51兼容
·8K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·256*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·一个数据指针DPTR
·8个中断源
·可编程全双工串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2管脚说明
●VCC:
供电电压。
GND:
接地。
●P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
●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口也可作为AT89C51的一些特殊功能口,如下所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
●RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
●ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
●/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
●/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
●XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.3具体电路及功能分析
1按键接口控制电路
本设计采用轻触开关K1、K2和K3分别控制字符的显示方式,K1:
控制字符逐字显示,K2:
控制字符向上显示,K3:
控制字符向左显示。
2显示电路
本设计采用双色8×8点阵模块显示,但是在设计中我们只用单色显示,我们通过改变限流电阻的阻值的大小来改变显示字符的亮度。
3电源电路
电源电路采用普通的三端集成稳压电源。
为整个系统提供+5V的电压。
3.48×8点阵显示器电气原理图
卡
图3-38×8点阵显示器电气原理图
第4章8×8点阵控制系统的软件设计
4.1软件总体设计及功能描述
4.1.1系统主要程序的设计
本设计系统采用了结构化、模块化,并且利用键扫描程序代替程序中的1ms延时程序,既为了按键的快速响应,又可以提高动态显示的扫描频率,从而减少了文字显示时的闪烁现象。
1主程序
主程序在刚上电时对系统进行初始化,然后读一次键开关状态,由键标志位(00H、01H、02H)决定显示方式。
主程序流程图如4-1所示。
2显示程序
显示程序是由显示主程序和显示子程序组成。
显示主程序负责每次显示时的显示地址首址(在B寄存器中)、每个字的显示时间(由30H中的数据决定)和下一个显示地址的间隔(31H中的数据决定)的处理。
显示子程序则负责对指定8个地址单元的数据进行输出显示,显示一个完整文字的时间约为8ms。
在显示子程序中,1ms延时程序是用调用键扫描子程序的方法实现的。
图4-2为逐字显示及向上滚动显示方式的显示控制程序流程图。
4.2主程序和显示程序流程图
图4-1主程序流程图
第5章样品的制作与调试
5.1原材料的选择与采购
本次设计在原材料的选择与采购上做到了设计最优化,即用最小的开支,获得性价比较高的元器件和材料。
设计中,印刷电路板采用单面板,给人看起来没有太复杂的感觉。
选元器件时,尽量选择能使电路简化的器件。
例如,为了不增大电路板的体积及减小功耗,本设计采用ATMEL公司的AT89C52单片机,可编程I∕O口多,工作电压范围宽,利用AT89C52掉电工作方式,还可以构成高可靠、低功耗系统方法。
5.2硬件及软件的调试
5.2.1硬件调试
硬件调试是利用开发系统、基本测试仪器,通过执行开发系统有关命令或运行适当的测试程序来检查用户系统硬件中是否存在故障。
主要是用万用表测量。
在目测完之后,利用万用表来测量连线和接点,检查它们的通断状态是否和设计一样。
再检查各种电源线和地线是否有短路现象,在检查的过程中,发现不管是连线还是接点都符合设计规定,电源和地线也没有短路现象。
5.2.2软件调试
软件调试是通过对用户所编程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除的过程。
其具体的操作步骤是:
第一步是在具有汇编软件的主机上和用户系统连接起来,进行调试准备。
第二步是单步运行。
第三步是系统连调,即进行软件和硬件联合调试。
经调试,软件运行良好。
第6章使用说明
本次设计的用单片机控制的显示电路使用比较简单,操作方便。
它主要是通过一个8×8点阵来显示汉字字符。
在通电以后,随后进入逐字显示状态。
按下复位键K1,系统自动复位,随后系统就会进入上滚显示状态。
另外,我们可以通过改变限流电阻值的大小来改变显示字符的亮度,通过改变程序中字符数据来实现显示不同的字符,通过改变程序中的延时程序来控制字符移动速度的快慢。
第7章后记
通过这次课程设计,我遇到了很多以前在学习过程中没有遇到的问题,同时也巩固和温习了我以前学习的专业基础知识。
例如,在实际制作的过程当中,通过对电路方案的确定,提高了我分析电路和计算电路中有关参数的能力。
通过对电路软件的设计,提高了我对单片机编程的能力。
通过对电路板的布线、电路板的制作和元器件的焊接,提高了我实际的动手能力。
当然,在设计电路的过程中,由于自己知识的匮乏,也遇到了很多的困难。
在编程时由于疏忽没有写对操作码而造成软件的故障。
还有就是在查阅相关资料的时候,常常不能有针对性地去查找,至使浪费了大量的时间。
然而,在整个设计过程中,让我感触最深刻的是通过课程设计不仅让我初步地了解到一个产品的开发流程。
还培养了我们勇于探索、严格推理、用实践去检验理论的严谨治学态度。
实物制作过程中有很多理论方面没有涉及的方,也有很多需要再修改的地方,这些要在实践焊接实物才能发现,恰好验证了我们把理论应用于实践从实践中检验真理的原则。
最后,我想说的是,从开始接受课题、着手编程到上机调试,傅老师都给予了热情的指导,并提出了许多宝贵的建议,解决了不少问题。
另外,还要感谢那些给过自己启发与帮助的同学,正是指导老师与那些同学的帮助,我的第一个课程设计才得以顺利完成。
参考文献
[1]李朝青·单片机原理及接口技术·北京航空航天大学出版社,2006年12月
[2]韩志军,沈晋源,王振波·单片机应用系统设计——入门向导与设计实例·机械工业出版社,2005年1月
[3]王幸之,钟爱琴,王雷,王闪·AT89系列单片机原理与接口技术·北京航空航天大学出版社,2004年5月
[4]何立民·单片机及高级教程·北京航空航天大学出版社,2004年1月
[5]李朝青·单片机外围技术手册·北京航空航天大学出版社,2002年12月
附录1源程序
#include
unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedigittab[20][8]={//定义一个二维数组,
{0x00,0x01,0x5c,0x55,0xf4,0x15,0x1c,0x01},//点
{0x54,0x54,0xff,0x74,0x54,0xd8,0xa8,0xff},//阵
{0x31,0xfa,0x94,0xfa,0x11,0x32,0x6a,0x26},//设
{0x00,0x10,0x10,0x7f,0x10,0x32,0x6e,0x22},//计
{0x10,0x20,0x40,0xff,0x40,0x20,0x10,0x00},//个
{0x10,0x10,0x10,0xff,0x10,0x10,0x10,0x00},//十
{0x00,0xbe,0xaa,0xaa,0xea,0xaa,0xbe,0x00},//百
{0x08,0x08,0x88,0x7f,0x48,0x08,0x08,0x00},//千
};
unsignedinttimecount;
unsignedcharcnta;
unsignedcharcntb;
voidmain(void)
{
TMOD=0x01;
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
TR0=1;//开启定时0
ET0=1;
EA=1;//开启中断
cntb=0;
while
(1)
{;}
}
voidt0(void)interrupt1using0
{
TH0=(65536-3000)/256;//定时器高位装载数据
TL0=(65536-3000)%256;//定时器低位装载数据
{
P2=tab[cnta];
P0=digittab[cntb][cnta];
}
if(++cnta>=8)cnta=0;
if(++timecount>=333)
{
timecount=0;
if(++cntb>=36)cntb=0;
}
}