当前位置:首页 > 单片机课程设计--点阵设计
2.2 程序设计
2.2.1 8*8点阵数字显示编码
由1.3.4 8?8点阵显示原理知,当某行置低电平,某列置高电平时,对应的LED发光二极管就亮。
下图所示“0”字符的编码,当选择第一行时,将相应的行管脚置低,由于没有二极管发亮,故对应的列全置低;当选择第二行时,将相应的行管脚置低,由于3、4、5个二极管亮,故相应的列管脚置高,依次可得选择行的编码为:
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; “0”的编码为:{0x00,0x18,0x24,0x24,0x24,0x24,0x24,0x18}; “1”的编码为:{0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x08}; “2”的编码为:{0x00,0x18,0x24,0x24,0x08,0x10,0x20,0x3C}; “3”的编码为:{0x00,0x18,0x24,0x04,0x08,0x04,0x24,0x18}; “4”的编码为:{0x00,0x08,0x08,0x18,0x28,0x3C,0x08,0x08}; “5”的编码为:{0x00,0x3C,0x20,0x38,0x04,0x04,0x24,0x18}; “6”的编码为:{0x00,0x18,0x24,0x20,0x38,0x24,0x24,0x18}; “7”的编码为:{0x00,0x3C,0x24,0x04,0x08,0x10,0x10,0x10}; “8”的编码为:{0x00,0x18,0x24,0x24,0x18,0x24,0x24,0x18}; “9”的编码为:{0x00,0x18,0x24,0x24,0x1C,0x4,0x24,0x18}; “10”的编码为:{0x4C,0xD2,0x52,0x52,0x52,0x52,0x52,0xEC};
9
2.2.2 程序设计
(1)开机检测程序
开机检测程序让8?8点阵全部点亮,以检测屏幕是否有坏点。主要语句如下:
P0=0xff;//列置高
P2=0x00;//行置低,全亮
P0=0x00;//关闭所有LED (2)数字显示程序
8?8点阵以列动态扫描显示的方式显示0-9任意数字。程序如下: void display(int n)//n为待显示的数 {
int a;
for(a=8;a>0;a--) {
P2=table[a];//已编码的行数表
10
P0=graph[n][a];//已编码的列二维数表
}
}
(3)外部中断程序 ①外部中断1
该段程序用来控制依次加一功能,程序如下: void INT_0() interrupt 0 { EX0=0; delay(50); EX0=1;
if(lie==12) lie=0; else { lie++;
P0=graph[lie][hang]; delay(500); }
}
②外部中断2
该段程序用来控制依次减一功能,程序如下: void INT_1() interrupt 2 { EX1=0; delay(50); EX1=1;
if(lie==0) lie=12; else { lie--;
P0=graph[lie][hang]; delay(500); }
}
11
③定时中断
动态扫描的时间为1ms,对定时器0赋相应的值,程序如下: void t0(void) interrupt 1 { }
TH0=(65536-1000)/256; TL0=(65536-1000)%6; P2=tab[hang];
P0=graph[lie][hang]; hang++; if(hang==8) hang=0;
2.3 仿真
基于Proteus和Keil C对设计的程序和硬件进行联调仿真,初步验证了原理图和程序的正确性,意味着可以进入下一步操作——用Protel 99进行PCB布线,制版。
3.电路的安装与调试
3.1 制版
①去打印店把画好的PCB用专用的油纸打印出来 ②用熨斗将油纸上电路线条印到铜板上 ③将印好的铜板泡到适量浓度的氯化铁溶液中 ④在预留的元件孔位上钻孔
⑤安放元件,并将元件用焊锡将其焊在电路板上 ⑥用万用表测各个连接点,检查电路的通断情况 ⑦下载程序调试,直至符合要求为止
12
共分享92篇相关文档