《课题设计基于at89c52的8×8led汉字显示设计.doc》由会员分享,可在线阅读,更多相关《课题设计基于at89c52的8×8led汉字显示设计.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机课程设计基于AT89C52的88LED汉字显示设计学院:信息科学技术学院班级: 姓名:指导老师:李京兵 目录摘要21总体方案3工作原理:3总体设计:32各单元电路特性及功能52.1AT89C525主要功能特性:574HC164674HC5738点阵8*8LED93程序设计10字段显示10程序流程图11程序清单124仿真结果155设计心得166参考文献17摘要 电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为
2、光电子行业的新兴产业领域。本设计以AT89C52单片机开发板作为主控制模块,利用74HC573组成简单的外围电路驱动88LED点阵显示屏,并利用74HC164实现输出数据的串并转化,通过Keil软件编程来实现字符以及汉字显示。用Proteus软件来连接电路及仿真。关键字: 单片机 AT89C52 88LED点阵 汉字显示1 总体方案1.1 工作原理:利用单片机AT89C52作为本系统的中控模块。点阵LED采用扫描的方式进行显示,本设计采用行扫描的方式。设置单片机AT89C52的P2.5端口为数据串行输出,再用一个8位移位寄存器74HC164实现串并转化,把数据转化为8位并行输出方式。设置单片机
3、AT89C52的P2.6端口为扫描字输出,通过一片74HC573驱动点阵8*8LED实现汉字及字符的显示。1.2 总体设计:点阵8*8LED电子显示屏为显示模块,单片机AT89C52为控制模块,74HC573为驱动模块,74HC164为串并转换模块。设计总框图如图1:AT89C52点阵8*8LED74HC16474HC573图1 总框图设计总电路图,如图2图2 总电路图2 各单元电路特性及功能2.1 AT89C52AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATM
4、EL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。主要功能特性: 兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O
5、口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共8个中断源 2个读写中断口线 3级加密位 AT89C52引脚图,如图3图3 AT89C52引脚图电路设计:设置P0端口为8位扫描字输出端,在51单片机中,P0口是漏极开路的,必须加上拉电阻,分别在P0.0到P0.7端口加一个100的电阻。设置模拟串口时钟,接到74HC164的D24。设置P25端口为模拟串口数据,接到74HC164的D25。设置P26端口为段码选通位-控制74HC573段输出。如总电路图中所示。2.2 74HC16474HC164用来
6、做8位串入、并出移位寄存器。74HC164是高速硅门CMOS器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步
7、地清除寄存器,强制所有的输出为低电平。74HC164引脚图,如图4图4 74HC164引脚图引脚说明: 符号引脚说明DSA1数据输入DSB2数据输入Q0Q336输出GND7地 (0 V)CP8时钟输入(低电平到高电平边沿触发)/M/R9中央复位输入(低电平有效)Q4Q71013输出VCC14正电源功能说明:工作模式输入输出/M/RCPDSADSBQ0Q1 至 Q7复位(清除)LLXXLL 至 L移位HllLq0 至 q6HlhLq0 至 q6HhlLq0 至 q6HhHHq0 至 q6H = HIGH(高)电平 h = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 HIG
8、H(高)电平 L = LOW(低)电平 l = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 LOW(低)电平 q = 小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入 (referenced input) 的状态 = 低-至-高时钟跃变电路设计:74HC164引脚1和2作为数据输入端口,都接入AT89C52的P25端口,引脚8作为时钟输入(低电平到高电平边沿触发),接入AT89C52的P24端口,引脚9作为中央复位输入(低电平有效),接入一个+5伏的VCC。Q0Q7作为数据输出端口,加上电线标号D1到D8,接入点阵8*8LED的一端的8个端口。引脚7接地,引脚1
9、4接电源。2.3 74HC573高性能硅门CMOS 器件。器件的输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出能直接接到CMOS,NMOS 和TTL 接口上操作电压范围:低输入电流:CMOS 器件的高噪声抵抗特性74hc573引脚图,如图5图5 74hc573引脚图74HC573功能表输入输入输入输出输出使能锁存使能DQLHHHLHLLLLX不变HXXZX 不用关心、Z 高阻态电路设计:74HC573做驱动电路,提高电流。D0到D
10、7作为数据输出端口,接到AT89C52的P00到P07端口,Q0到Q7作为数据输出端口,分别接一个10的电阻。引脚1接地,低电平有效,是控制输出使能端,使输出有效,引脚11接AT89C52的P26端口,高电平有效,控制锁存使能端。 2.4 点阵8*8LED图6为8*8点阵LED外观及引脚图,图7为它的等效电路。只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。点阵LED一般采用扫描式显示,实际运用分为三种方式:(1) 点扫描; (2) 行扫描;(3) 列扫描。若使用第一种方式,其扫描频率必须大于1024Hz
11、,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。本次设计所用的驱动电路是采用一个74HC573。图 6 8*8点阵LED外观及引脚图图7 8*8点阵LED等效电路电路设计:点阵8*8LED的一段8个端口接74HC164的Q0到Q8端口,另一端的8个端口接到74HC573输出端Q0到Q8所接的电阻。3 程序设计3.1 字段显示输出的字符是:电子设计电子二班 字符是一个一个显示的,根据点阵显示的原理以及字符的特点计算出每个字符显示的数据,如程序中所示。
12、3.2 程序流程图开始显示第一行时间到?显示下一行第八行?NYYN图8 主程序流程图开始显示符号1时间到?显示下一符号最后一个?NYN图9 单个字符显示流程图3.3 程序清单/跳线设置:默认跳线位/效果:在点阵上会出现简单的图形与字符#include sbit dula=P26; /段码选通位-控制74HC573段输出#define uchar unsigned char sbit simuseri_CLK=P24; /用P24模拟串口时钟sbit simuseri_DATA=P25; /用P25模拟串口数据sbit a7=ACC7;#define uint unsigned int unsi
13、gned char code tab=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;unsigned char code digittab448=0x08,0x3E,0x2A,0x3E,0x2A,0x3E,0x88,0xF8,0x7C,0x20,0xFE,0x10,0x10,0x10,0x14,0x18,0x72,0x52,0xDF,0x02,0x72,0x52,0x26,0xDA,0x22,0x22,0x27,0xFA,0x22,0x22,0x26,0x22,0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,/I0x00,0x6
14、C,0x92,0x82,0x44,0x28,0x10,0x00, /红心字符0x08,0x3E,0x2A,0x3E,0x2A,0x3E,0x88,0xF8,0x7C,0x20,0xFE,0x10,0x10,0x10,0x14,0x18,0x00,0x00,0x3C,0x00,0xFF,0x00,0x00,0x00,0x10,0xF7,0x5A,0xFF,0x5A,0x52,0xF7,0x10, 0x00,0xDB,0x5A,0x5A,0x5A,0x5A,0x7E,0x24,/W0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,/U0x00,0x38,0x10,0x
15、10,0x10,0x10,0x14,0x18,/J0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,/I0x00,0x34,0x4C,0x44,0x44,0x44,0x44,0x44,/n0x00,0x38,0x44,0x04,0x04,0x74,0x44,0x38,/G0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00, /红心字符0x00,0x7C,0x40,0x20,0x10,0x08,0x04,0x7C, /Z0x00,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,/H0x00,0x38,0x44,0x4
16、4,0x44,0x7C,0x44,0x44,/A0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,/O0x00,0xC6,0xAA,0xAA,0x92,0x82,0x82,0x82,/M0x00,0x7C,0x04,0x04,0x7C,0x04,0x04,0x7C,/E0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,/I0x00,0x3C,0x42,0x42,0x42,0x52,0x62,0x7C,/Q0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,/I0x00,0x38,0x44,0x44,0x44
17、,0x7C,0x44,0x44,/A0x00,0x34,0x4C,0x44,0x44,0x44,0x44,0x44,/n0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00, /红心字符0x00,0x7C,0x40,0x20,0x10,0x08,0x04,0x7C, /Z0x00,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,/H0x00,0x38,0x44,0x44,0x44,0x7C,0x44,0x44,/A0x00,0x34,0x4C,0x44,0x44,0x44,0x44,0x44,/n0x00,0x38,0x44,0x04,0x04,
18、0x74,0x44,0x38,/G0x00,0x7C,0x04,0x04,0x7C,0x04,0x04,0x04,/F0x00,0x38,0x44,0x44,0x44,0x7C,0x44,0x44,/A0x00,0x34,0x4C,0x44,0x44,0x44,0x44,0x44,/n0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00, /红心字符0x00,0x44,0x44,0x48,0x30,0x10,0x08,0x04,/Y0x00,0x38,0x44,0x44,0x44,0x7C,0x44,0x44,/A0x00,0x34,0x4C,0x44,0x44,0x
19、44,0x44,0x44,/n0x00,0x44,0x44,0x48,0x30,0x10,0x08,0x04,/Y0x00,0x38,0x44,0x44,0x44,0x7C,0x44,0x44,/A0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,/O ; unsigned int timecount; unsigned char cnta; unsigned char cntb; /-/ 函数名称:out_simuseri / 输入参数:data_buf / 功能说明:8位同步移位寄存器,将data_buf的数据逐位输出到 simuseri_DATA/-void
20、 out_simuseri(uchar data_buf) uchar i; i=8; ACC=data_buf; do simuseri_CLK=0; simuseri_DATA=a7; simuseri_CLK=1; ACC=ACC1; while(-i!=0);void delay() uint i; i = 0x1ff; while(i-); void main(void) dula=1;P0=0xff; TMOD=0x01; TH0=(65536-3000)/256; TL0=(65536-3000)%256; TR0=1; ET0=1; EA=1; while(1) ; void
21、t0(void) interrupt 1 using 0 TH0=(65536-3000)/256; TL0=(65536-3000)%256; P0=0xff; / 消隐,很重要,不加要红一片 out_simuseri(tabcnta); P0= digittabcntbcnta; cnta+; if(cnta=8) cnta=0; timecount+; if(timecount=333) timecount=0; cntb+; if(cntb=44) cntb=0; 4 仿真结果点阵8*8LED显示的仿真结果图:5 设计心得1、 对单片机原理有更深的理解 通过这次单片机课程设计,我们接触
22、了单片机C语言程序设计,学会了使用Keil软件编写程序并编译生成可执行文件,了解了单片机程序的导入和烧制过程及其相关的技术,并通过Proteus软件仿真和使用开发板实践,对课本上的知识有了更深的理解。2、 激发了学习的积极性 通过动脑思考与动手操作,我们全面系统的理解了单片机控制原理和实现方法。把课本知识变得生动有趣,激发了学习的积极性。把学过知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对单片机的认识是模糊的,概念上的,现在通过自己动手,从实践上认识了单片机系统和它强大的功能,对其产生了浓厚的兴趣。3、 理解了该知识点以及学科之间的融合渗透 本次课程设计程序是用C语言编写的,由于是第一次用C语言设计单片机程序,我们在程序设计过程中遇到了种种困难,但通过团队的协作与努力,终于意义克服并完成了设计。这次设计把单片机与C语言紧密联系起来,把各学科之间的知识融合起来,加深了对这些课程的认识。6 参考文献1 胡汉才. 单片机原理及其接口技术. 北京: 清华大学出版社,20042 胡汉才. 单片机原理及系统设计. 北京: 清华大学出版社,20023 高海生,杨文焕. 单片机应用技术大全 . 成都: 西南交通大学出版社,19964 :/baike.baidu /view/1506115.htm?fr=ala0_1_