微机应用课程设计
4.2.2方案分析:
由24块8*8点阵led构成一块大屏幕,单片机控制进行循环扫描,用多块移位寄存器控制输出内容,并由单片机串行输出显示内容的行编码,显示屏会滚动显示数字、字母。汉字等内容。
4.3方案选择
第一种方案,选用器件较少,控制比较简单,显示内容比较丰富,能满足课程设计的要求。第二种方案,显示内容丰富,显示效果好,但所用器件较多,控制比较复杂,所以我们选择第一种方案
5设计与仿真
5.1软硬件设计
6
微机应用课程设计
5.1.1硬件设计
方案一中系统电路图可知系统整体由两大部分构成: 以单片机AT89S51为核心的模块;由1块8*8的LED点阵显示屏组成的显示模块;
以下是各单元电路的具体设计: 1、主控制单片机
本次设计使用的是AT89S51的最小系统电路,包括:电源、时钟脉冲、复位电路和程序存储器设定电路,只是接受少量的数字和字符,不用外接存储扩展。
时钟脉冲:AT89S51单片机的最高时钟脉冲频率已经达到了24MHz,它内部已经具备了振荡电路,只要在AT89S51的两个引脚(即19、18脚)连接到简单的石英振荡晶体的2个管脚即可,同时晶体的2个管脚也要用30pF的电容耦合到地。
复位电路:89S51的复位引脚(RESET)是第9脚,当此引脚连接高电平超过2个机器周期,即可产生复位的动作。以12MHz的时钟脉冲为例,每个时钟脉冲为0.5μS,两个机器周期为1μS,因此,在第9脚上连接一个2μS的高电平脉冲,即可产生复位动作。最简单的就是只有一个电阻跟一个电容就可可靠复位的电路,电阻一般选择10K,电容一般选择10μF。
程序存储器设定电路:31脚接VCC,默认采用内部程序存储器。
2、LED显示模块
本次设计中8*8的LED电子显示屏的制作。相对而言是比较简单的。
5.1.2软件设计
(1) 显示代码的设计
假设显示数字“0”
7
微机应用课程设计
1 2 3 4 5 6 7 8
● ● ●
● ● ● ● ● ● ● ● ● ●
● ● ●
00 00 3E 41 41 41 3E 00
因此,形成的列代码为00h,00h,3eh,41h,41h,41h,3eh,00h;只要把这些代码按扫描顺序分别送到相应的列线上面,即可实现“0”的数字显示。其他列代码用类似方法设计。
送显示代码过程如下所示
送第一列线代码到P3端口,同时置第一行线为“0”,其它行
线为“1”,延时2ms左右,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。由于扫描速度很快,眼睛看到的是完整的数字。则类似可得其他数字及字符的编码。
(2)程序设计
1.流程图
8
微机应用课程设计
程序采用循环扫描显示,中断刷新显示内容的方法,字符转换周期为1秒,行扫描和字符控制用查表程序完成。
2.程序设计
TIM EQU 30H CNTA EQU 31H CNTB EQU 32H
ORG 00H LJMP START
ORG 0BH //中断入口 LJMP T0X ORG 30H
START: MOV TIM,#00H //初始化 MOV CNTA,#00H MOV CNTB,#00H MOV TMOD,#01H
MOV TH0,#(65536-4000)/256//中断赋值
9
微机应用课程设计
MOV TL0,#(65536-4000) MOD 256 SETB TR0 //开中断 SETB ET0 SETB EA
SJMP $ //循环等待
T0X: MOV TH0,#(65536-4000)/256 //中断程序
MOV TL0,#(65536-4000) MOD 256//恢复t0的计数初值 MOV DPTR,#TAB //查表,找到行选通信号 MOV A,CNTA MOVC A,@A+DPTR
MOV P3,A //行选通信号给p3口 MOV DPTR,#DIGIT MOV A,CNTB MOV B,#8 MUL AB ADD A,CNTA MOVC A,@A+DPTR
MOV P1,A //将显示信号给p1 INC CNTA MOV A,CNTA CJNE A,#8,NEXT MOV CNTA,#00H NEXT: INC TIM MOV A,TIM
CJNE A,#250,NEX //一秒后调整显示值 MOV TIM,#00H INC CNTB MOV A,CNTB
CJNE A,#10,NEX MOV CNTB,#00H NEX: RETI
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH //行选通 DIGIT: DB 00H,00H,3EH,41H,41H,41H,3EH,00H //0 DB 00H,00H,00H,00H,21H,7FH,01H,00H //1 DB 00H,00H,27H,45H,45H,45H,39H,00H //2 DB 00H,00H,22H,49H,49H,49H,36H,00H //3 DB 00H,00H,0CH,14H,24H,7FH,04H,00H //4
10