16*64点阵仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
废话不多说,保证能用。
单片机源程序如下:
- #include <reg52.h>
- #include <ziku.h>
- //P0口数据口
- //P1口为控制口
- //P2口列码低
- //P3口列码高
- sbit ct0=P1^0;
- sbit ct1=P1^1;
- sbit ct2=P1^2;
- sbit ct3=P1^3;
- sbit ct4=P1^4;
- sbit ct5=P1^5;
- sbit ct6=P1^6;
- sbit ct7=P1^7;
- void Delay1ms() //@12.000MHz
- {
- unsigned char i, j;
- i = 2;
- j = 239;
- do
- {
- while (--j);
- } while (--i);
- }
- void control_lock(unsigned char hang)
- {
- switch (hang)
- {
- case 0: ct0=0;ct0=1;break;
- case 1: ct1=0;ct1=1;break;
- case 2: ct2=0;ct2=1;break;
- case 3: ct3=0;ct3=1;break;
- case 4: ct4=0;ct4=1;break;
- case 5: ct5=0;ct5=1;break;
- case 6: ct6=0;ct6=1;break;
- case 7: ct7=0;ct7=1;break;
- }
-
- }
- void control_key(unsigned char hang)
- {
- switch (hang)
- {
- case 0: ct0=1;ct0=0;break;
- case 1: ct1=1;ct1=0;break;
- case 2: ct2=1;ct2=0;break;
- case 3: ct3=1;ct3=0;break;
- case 4: ct4=1;ct4=0;break;
- case 5: ct5=1;ct5=0;break;
- case 6: ct6=1;ct6=0;break;
- case 7: ct7=1;ct7=0;break;
- }
- }
- void main()
- {
- unsigned char i,j,k; //循环变量
- unsigned int lie=1;
-
- while(1)
- {
-
- for(i=0;i<16;i++)
- {
- P2=0;//行消隐
- P3=0;
-
- for(j=0;j<4;j++) //4个字的一整有8个行单位
- {
- for(k=0;k<2;k++) //每一个字有两单位行
- {
- P0=0xff; //消隐
-
- control_key(j*2+k);
- P0=~tdcq[i*2+j*32+k];
- control_lock(j*2+k);
- }
- }
-
- P2=lie;
- P3=lie>>8;
- lie<<=1;
- if(lie==0) lie=1;
-
- Delay1ms();
- }
- }
- }
复制代码
所有资料51hei提供下载:
16 64点阵屏仿真.zip
(129.21 KB, 下载次数: 25)
|