本帖最后由 356053261 于 2012-6-13 23:31 编辑
学写LED点阵程序,遇到一个小问题,特来发帖求解:
如下代码,一个code表格中含有多个子code表格,如果我需要随意调出子表格来用,写出一个“向点阵写入一个任意字符“的子函数,该怎么写呢?
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define hang P1 //定义行数据为P0
#define lie P0 //定义列数据为P1
uchar code dis0[]={0x3C,0x42,0x42,0x20,0x10,0x08,0x46,0x7E};/*"0",9*/
uchar code dis8[][8]={
{0x3C,0x24,0x42,0x42,0x42,0x42,0x24,0x3C},/*"0",9*/
{0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x3E},/*"1",0*/
{0x3C,0x42,0x42,0x20,0x10,0x08,0x46,0x7E},/*"2",1*/
{0x3C,0x42,0x40,0x38,0x40,0x40,0x42,0x3C},/*"3",2*/
{0x30,0x28,0x24,0x22,0x22,0x3C,0x20,0x30},/*"4",3*/
{0x7E,0x02,0x02,0x3E,0x40,0x40,0x42,0x3C},/*"5",4*/
{0x38,0x24,0x02,0x3A,0x46,0x42,0x46,0x3C},/*"6",5*/
{0x7E,0x22,0x10,0x10,0x08,0x08,0x08,0x08},/*"7",6*/
{0x3C,0x42,0x42,0x2C,0x34,0x42,0x42,0x3C},/*"8",7*/
{0x18,0x26,0x42,0x62,0x5C,0x40,0x24,0x3C},/*"9",8*/
};
uchar code dis_x[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};/*"2",0*/
//延时子函数---------------------------------------------------
void delay(uint z)
{
uint y;
for(;z>0;z--)
for(y=114;y>0;y--);
}
/*向点阵写入一个数字-------------------------------------------
void write_dat(uchar dat)
{
uchar i;
if(dat=0)
{
for(i=0;i<8;i++)
{
hang=dis0;
lie=dis_x;
}
}
}
*/
void main(void)
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
lie=dis0;
hang=dis_x;
delay(2);
hang=0xff;
}
}
}
|