1、单片机课程设计课题:8*8 点阵 LED 字符显示器设计一、设计目的 利用 8*8LED点阵动态显示汉字的字样,采用 STC89C52单片机作为整个控制电路的核心,并编制软件程序,实现汉字动态显示。通过此设计来巩固单片机硬件系统的设计及软件系统的编程,通过设计将平时所学知识付诸实践,提高动手能力。1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。3提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。4培养学生从资料文献、科学实验中获得知识的能力。5
2、. 对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。二、设计要求8*8点阵 LED字符显示器设计设计要求:1、设计一个 8*8点阵 LED电子显示屏,要求显示“课程设计”四个文字。2、要求在目测条件下 LED显示屏各点亮度均匀、充足,显示方式可由K1、K2、K3、K4、K5 进行选择,K1 为逐字显示,K2 为向左滚动显示,K3 为向右滚动显示,K4 为向上滚动显示,K5 为向下滚动显示。三、总体方案设计3.1系统框图根据设计要求与设计方案,硬件电路的设计框图如图 1所示。硬件电路结构由 8个部分组成:时钟电路、复位电路、按键接口电路、电源电
3、路、点阵显示阳极电路、点阵显示阴极电路和 8*8点阵显示电路。按键电路复位电路电源电路时钟电路单片机点阵显示器阳极电路点阵显示器阴极电路8*8 点阵LED 显示器图 1系统框图3.2 工作原理根据设计要求,初步确定设计方案如下:1. 选择 STC89C52单片机(晶振频率为 f=12MHZ)作为整个系统的核心器件,对整个系统进行总体控制,发送并时时处理系统信息。2由于是 8*8 点阵屏设计,需要端口 16 个,可采用静态显示模式,用 P0口控制行,P2 口控制列 。3.通过软件编程,即可实现汉字“课程设计”的显示,并可左移,右移,上移,下移动态流动显示。4点阵的点亮过程有程序控制,点阵采用单色
4、显示。3.3 主程序框图图 2 主程序流程图3.3.1按键程序设计系统中采用独立式非编码键盘,在 P1口接一个按键,P0 端口分别控制8*8LED阵列。当有键按下时,对应的 LED亮;反之则灭。按键子程序如下:void keyscan() key=(P1)/读入键值 if(key!=0) keytmp=key;/键值存放 3.3.2延时程序设计延时程序在单片机编程中使用非常广泛,也很重要,在本次设计的程序中用到了延时子程序。延时子程序如下:delay1ms(int t) int i,j; for(i=0;i #define char unsigned char #define int unsi
5、gned int char key,keytmp char code distaba= 0x40,0xff,0x06,0xfd,0xae,0xff,0xae,0xfd, 0x2a,0x7f,0x8a,0xf5,0xb5,0xbf,0xb5,0xf5, 0xa0,0x7f,0x22,0xe9,0x8e,0x8e,0xe9,0x20, 0xa0,0x7f,0x02,0x10,0x10,0xff,0x10,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,; char code distabb= 0xfd,0xae,0xff,0xae,0xfd,0x06,0
6、xff,0x40, 0xf5,0xb5,0xbf,0xb5,0xf5,0x8a,0x7f,0x2a, 0x20,0xe9,0x8e,0x8e,0xe9,0x22,0x7f,0xa0, 0x10,0x10,0xff,0x10,0x10,0x02,0x7f,0xa0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; char code distabc= 0x06,0x05,0x04,0xdd,0x05,0x8d,0x51,0xdd, 0x03,0x75,0x04,0x05,0xd8,0x05,0xd8,0x05, 0x86,0xb5,0x30,0xfd,0x8
7、5,0xcd,0xc9,0xb5, 0xde,0xdd,0xdc,0x05,0xdd,0xdd,0xd9,0xdd, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, ; char code distabd= 0xdd,0x51,0x8d,0x05,0xdd,0x04,0x05,0x06, 0x05,0xd8,0x05,0xd8,0x05,0x04,0x75,0x03, 0xb5,0xc9,0xcd,0x85,0xfd,0x30,0xb5,0x86, 0xdd,0xd9,0xdd,0xdd,0x05,0xdc,0xdd,0xde, 0xff,0xff,0xff,
8、0xff,0xff,0xff,0xff,0xff,; char code scan_cona8= 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/列扫描控制字 char code scan_conb8= 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/列扫描控制字 /*按键扫描函数*/ void keyscan() key=(P1)/读入键值 if(key!=0) keytmp=key;/键值存放 /*1ms延时子程序* delay1ms(int t) int i,j; for(i=0;it;i+) for(j=0;j120;
9、j+) keyscan(); /*功能程序* /*逐字闪烁显示* fun0() int m,n,h; for(h=0;h40;h=h+8) for(n=0;n16;n+) if(0n=8) for(m=0;m8;m+) P2=scan_conam;P0=distabam+h;delay1ms(1);continue; if(8n=16) for(m=0;m8;m+) P2=0xff;P0=distabam+h;delay1ms(1);continue; /*向左滚动显示* fun1() int m,n,h; for(h=0;h32;h+)/控制显示字数(32/84 个) for(n=0;n25
10、;n+)/控制帧移动速度 for(m=0;m8;m+)/显示 1帧扫描(分 8行,每行亮 1ms) P2=scan_conam;P0=distabam+h;delay1ms(1); /*向右滚动显示* fun2() int m,n,h; for(h=0;h32;h+)/控制显示字数(32/84 个) for(n=0;n25;n+)/控制帧移动速度 for(m=0;m8;m+)/显示 1帧扫描(分 8行,每行亮 1ms) P2=scan_cona7-m;P0=distabbm+h;delay1ms(1); /*向上滚动显示* fun3() int m,n,h; for(h=0;h32;h+)/控
11、制显示字数(32/84 个) for(n=0;n25;n+)/控制帧移动速度 for(m=0;m8;m+)/显示 1帧扫描(分 8行,每行亮 1ms) P0=scan_conb7-m;P2=distabcm+h;delay1ms(1); /*向下滚动显示* fun4() int m,n,h; for(h=0;h32;h+)/控制显示字数(32/84 个) for(n=0;n25;n+)/控制帧移动速度 for(m=0;m8;m+)/显示 1帧扫描(分 8行,每行亮 1ms) P0=scan_conbm;P2=distabdm+h;delay1ms(1); /*主程序* main() keytmp=1;/上电自动演示功能(逐字显示) while(1) keyscan(); switch(keytmp) case(1):fun0();break; case(2):fun1();break; case(4):fun2();break; case(8):fun3();break; case(16):fun4();break; case(32):keyscan();P2=0xff;break; default:break; 成绩评定一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定) 。课程设计成绩评定班级 姓名 学号 综合成绩: 指导教师签字 年 月 日