点亮点阵中的一个点
- #include <reg52.h>
- sbit LED = P0 ^ 0;
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- void main(void)
- {
- ENLED = 0;
- ADDR0 = 0;//使能U4 74HC138
- ADDR1 = 0;
- ADDR2 = 0;
- ADDR3 = 0;//导通Q10
- LED = 0;//点亮一个
- while(1);
- }
复制代码 点亮点阵中的一行
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- void main(void)
- {
- ENLED = 0;
- ADDR0 = 0;//使能U4 74HC138
- ADDR1 = 0;
- ADDR2 = 0;
- ADDR3 = 0;//导通Q10
- P0 = 0;//点亮一行
- while(1);
- }
复制代码 点阵全部点亮
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static char i = 0;//静态变量,保证每次进来的时候都是上一次调用结束的值
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = 0; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = 0; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = 0; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = 0; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = 0; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = 0; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = 0; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = 0; i = 0; break;//第八行
- default: break;
- }
- }
复制代码 点阵显示心形图像
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- unsigned char code image[] =
- {
- 0xFF, 0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7
- };//通过取模软件获取
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static char i = 0;
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = image[0]; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = image[1]; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = image[2]; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = image[3]; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = image[4]; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = image[5]; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = image[6]; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = image[7]; i = 0; break;//第八行
- default: break;
- }
- }
复制代码 图像纵向上移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- unsigned char code image[] =
- {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xC3, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3, 0xFF,
- 0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7, 0xFF,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- };//通过取模软件获取
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static unsigned char i = 0;
- static unsigned char sec = 0;
- static unsigned char iIndex = 0;
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = image[0 + iIndex]; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = image[1 + iIndex]; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = image[2 + iIndex]; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = image[3 + iIndex]; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = image[4 + iIndex]; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = image[5 + iIndex]; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = image[6 + iIndex]; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = image[7 + iIndex]; i = 0; break;//第八行
- default: break;
- }
- sec++;
- if (sec >= 250)//250ms一次更新
- {
- sec = 0;
- iIndex++;
- if (iIndex >= 32)//最后一帧
- iIndex = 0;
- }
- }
复制代码 图像纵向下移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- unsigned char code image[] =
- {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xC3, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3, 0xFF,
- 0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7, 0xFF,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- };//通过取模软件获取
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static unsigned char i = 0;
- static unsigned char sec = 0;
- static char iIndex = 32;
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = image[0 + iIndex]; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = image[1 + iIndex]; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = image[2 + iIndex]; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = image[3 + iIndex]; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = image[4 + iIndex]; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = image[5 + iIndex]; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = image[6 + iIndex]; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = image[7 + iIndex]; i = 0; break;//第八行
- default: break;
- }
- sec++;
- if (sec >= 250)//250ms一次更新
- {
- sec = 0;
- iIndex--;
- if (iIndex < 0)//最后一帧
- iIndex = 0;
- }
- }
复制代码 图像横向左移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- unsigned char code image[30][8] =
- {
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F },
- { 0xFF, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F },
- { 0xFF, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F },
- { 0xFF, 0x0F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x0F },
- { 0xFF, 0x87, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0x87 },
- { 0xFF, 0xC3, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3 },
- { 0xFF, 0xE1, 0x73, 0x73, 0x73, 0xF3, 0xF3, 0xE1 },
- { 0xFF, 0x70, 0x39, 0x39, 0x39, 0x79, 0xF9, 0xF0 },
- { 0xFF, 0x38, 0x1C, 0x1C, 0x1C, 0x3C, 0x7C, 0xF8 },
- { 0xFF, 0x9C, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0x7C },
- { 0xFF, 0xCE, 0x07, 0x07, 0x07, 0x0F, 0x1F, 0x3E },
- { 0xFF, 0x67, 0x03, 0x03, 0x03, 0x07, 0x0F, 0x9F },
- { 0xFF, 0x33, 0x01, 0x01, 0x01, 0x03, 0x87, 0xCF },
- { 0xFF, 0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7 },
- { 0xFF, 0xCC, 0x80, 0x80, 0x80, 0xC0, 0xE1, 0xF3 },
- { 0xFF, 0xE6, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0xF9 },
- { 0xFF, 0x73, 0x60, 0x60, 0x60, 0x70, 0x78, 0xFC },
- { 0xFF, 0x39, 0x30, 0x30, 0x30, 0x38, 0x3C, 0x7E },
- { 0xFF, 0x9C, 0x98, 0x98, 0x98, 0x9C, 0x1E, 0x3F },
- { 0xFF, 0xCE, 0xCC, 0xCC, 0xCC, 0xCE, 0x0F, 0x1F },
- { 0xFF, 0x67, 0x66, 0x66, 0x66, 0x67, 0x07, 0x0F },
- { 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x03, 0x87 },
- { 0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3 },
- { 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xC0, 0xE1 },
- { 0xFF, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE0, 0xF0 },
- { 0xFF, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF0, 0xF8 },
- { 0xFF, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, 0xFC },
- { 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE },
- { 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF }
- };//通过取模软件获取
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static unsigned char i = 0;
- static unsigned char sec = 0;
- static char iIndex = 0;
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = image[iIndex][0]; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = image[iIndex][1]; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = image[iIndex][2]; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = image[iIndex][3]; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = image[iIndex][4]; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = image[iIndex][5]; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = image[iIndex][6]; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = image[iIndex][7]; i = 0; break;//第八行
- default: break;
- }
- sec++;
- if (sec >= 250)//250ms一次更新
- {
- sec = 0;
- iIndex++;
- if (iIndex >= 29)//最后一帧
- iIndex = 0;
- }
- }
复制代码 图像横向右移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- unsigned char code image[30][8] =
- {
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F },
- { 0xFF, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F },
- { 0xFF, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F },
- { 0xFF, 0x0F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x0F },
- { 0xFF, 0x87, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0x87 },
- { 0xFF, 0xC3, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3 },
- { 0xFF, 0xE1, 0x73, 0x73, 0x73, 0xF3, 0xF3, 0xE1 },
- { 0xFF, 0x70, 0x39, 0x39, 0x39, 0x79, 0xF9, 0xF0 },
- { 0xFF, 0x38, 0x1C, 0x1C, 0x1C, 0x3C, 0x7C, 0xF8 },
- { 0xFF, 0x9C, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0x7C },
- { 0xFF, 0xCE, 0x07, 0x07, 0x07, 0x0F, 0x1F, 0x3E },
- { 0xFF, 0x67, 0x03, 0x03, 0x03, 0x07, 0x0F, 0x9F },
- { 0xFF, 0x33, 0x01, 0x01, 0x01, 0x03, 0x87, 0xCF },
- { 0xFF, 0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7 },
- { 0xFF, 0xCC, 0x80, 0x80, 0x80, 0xC0, 0xE1, 0xF3 },
- { 0xFF, 0xE6, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0xF9 },
- { 0xFF, 0x73, 0x60, 0x60, 0x60, 0x70, 0x78, 0xFC },
- { 0xFF, 0x39, 0x30, 0x30, 0x30, 0x38, 0x3C, 0x7E },
- { 0xFF, 0x9C, 0x98, 0x98, 0x98, 0x9C, 0x1E, 0x3F },
- { 0xFF, 0xCE, 0xCC, 0xCC, 0xCC, 0xCE, 0x0F, 0x1F },
- { 0xFF, 0x67, 0x66, 0x66, 0x66, 0x67, 0x07, 0x0F },
- { 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x03, 0x87 },
- { 0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3 },
- { 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xC0, 0xE1 },
- { 0xFF, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE0, 0xF0 },
- { 0xFF, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF0, 0xF8 },
- { 0xFF, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, 0xFC },
- { 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE },
- { 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF }
- };//通过取模软件获取
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static unsigned char i = 0;
- static unsigned char sec = 0;
- static char iIndex = 29;
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = image[iIndex][0]; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = image[iIndex][1]; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = image[iIndex][2]; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = image[iIndex][3]; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = image[iIndex][4]; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = image[iIndex][5]; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = image[iIndex][6]; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = image[iIndex][7]; i = 0; break;//第八行
- default: break;
- }
- sec++;
- if (sec >= 250)//250ms一次更新
- {
- sec = 0;
- iIndex--;
- if (iIndex < 0)//最后一帧
- iIndex = 29;
- }
- }
复制代码 9 ~ 0倒计时
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- unsigned char code num[10][8] =
- {
- { 0xE3, 0xDD, 0xDD, 0xDD, 0xC3, 0xDF, 0xDD, 0xE3 },
- { 0xFF, 0xC3, 0xBD, 0xBD, 0xC3, 0xBD, 0xBD, 0xC3 },
- { 0xFF, 0xC1, 0xDF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF },
- { 0xC7, 0xBB, 0xFB, 0xC3, 0xBB, 0xBB, 0xBB, 0xC7 },
- { 0x81, 0xFD, 0xFD, 0xC3, 0xBF, 0xBF, 0xBD, 0xC3 },
- { 0xDF, 0xCF, 0xD7, 0xDB, 0x03, 0xDF, 0xDF, 0x07 },
- { 0xFF, 0xE3, 0xDD, 0xDF, 0xE3, 0xDF, 0xDD, 0xE3 },
- { 0xC3, 0xBD, 0xBF, 0xBF, 0xCF, 0xF3, 0xFD, 0x81 },
- { 0xEF, 0xE3, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0x83 },
- { 0xC3, 0xBD, 0x7E, 0x7E, 0x7E, 0x7E, 0xBD, 0xC3 }
- };//通过取模软件获取
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static unsigned char i = 0;
- static unsigned int sec = 0;
- static char iIndex = 0;
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = num[iIndex][0]; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = num[iIndex][1]; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = num[iIndex][2]; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = num[iIndex][3]; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = num[iIndex][4]; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = num[iIndex][5]; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = num[iIndex][6]; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = num[iIndex][7]; i = 0; break;//第八行
- default: break;
- }
- sec++;
- if (sec >= 1000)//1s一次更新
- {
- sec = 0;
- iIndex++;
- if (iIndex > 9)//最后一帧
- iIndex = 0;
- }
- }
复制代码 0 ~ 9正计时
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- unsigned char code num[10][8] =
- {
- { 0xE3, 0xDD, 0xDD, 0xDD, 0xC3, 0xDF, 0xDD, 0xE3 },
- { 0xFF, 0xC3, 0xBD, 0xBD, 0xC3, 0xBD, 0xBD, 0xC3 },
- { 0xFF, 0xC1, 0xDF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF },
- { 0xC7, 0xBB, 0xFB, 0xC3, 0xBB, 0xBB, 0xBB, 0xC7 },
- { 0x81, 0xFD, 0xFD, 0xC3, 0xBF, 0xBF, 0xBD, 0xC3 },
- { 0xDF, 0xCF, 0xD7, 0xDB, 0x03, 0xDF, 0xDF, 0x07 },
- { 0xFF, 0xE3, 0xDD, 0xDF, 0xE3, 0xDF, 0xDD, 0xE3 },
- { 0xC3, 0xBD, 0xBF, 0xBF, 0xCF, 0xF3, 0xFD, 0x81 },
- { 0xEF, 0xE3, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0x83 },
- { 0xC3, 0xBD, 0x7E, 0x7E, 0x7E, 0x7E, 0xBD, 0xC3 }
- };//通过取模软件获取
- void main(void)
- {
- ENLED = 0;
- ADDR3 = 0;//使能U4 74HC138
- EA = 1;//打开中断总开关
-
- TMOD = 1;//设置定时器0为模式1
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- TR0 = 1;//启动定时器0
- ET0 = 1;//打开定时器0的中断
-
- while (1);
- }
- void interruptTimer0() interrupt 1
- {
- static unsigned char i = 0;
- static unsigned int sec = 0;
- static char iIndex = 9;
- TH0 = 0xFC;
- TL0 = 0x67;//设置定时器0的初值
- P0 = 0xff;//显示消隐
- switch (i)
- {
- case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = num[iIndex][0]; i++; break;//第一行
- case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; P0 = num[iIndex][1]; i++; break;//第二行
- case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; P0 = num[iIndex][2]; i++; break;//第三行
- case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; P0 = num[iIndex][3]; i++; break;//第四行
- case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; P0 = num[iIndex][4]; i++; break;//第五行
- case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; P0 = num[iIndex][5]; i++; break;//第六行
- case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = num[iIndex][6]; i++; break;//第七行
- case 7: ADDR2 = 1; ADDR1 = 1; ADDR0 = 1; P0 = num[iIndex][7]; i = 0; break;//第八行
- default: break;
- }
- sec++;
- if (sec >= 1000)//1s一次更新
- {
- sec = 0;
- iIndex--;
- if (iIndex < 0)//最后一帧
- iIndex = 9;
- }
- }
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |