游客
主题
回帖0
积分21
阅读权限1
注册时间2012-10-19
最后登录1970-1-1
在线时间 小时
|
|
下面能够正常显示 上面的显示不对 如图
还有最右边的那个通字怎么少了一竖
- #include <AT89X52.H>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit LT=P2^0;
- sbit SK=P2^1;
- sbit DAT1=P2^2;
- sbit DAT2=P2^3;
- sbit EN=P2^4;
- uchar code daima1[][32]=
- {
- {0xFF,0x7F,0xFF,0x7F,0x03,0x7F,0xFB,0x03,0xFA,0xFB,0xB6,0xF7,0xD5,0xBF,0xEB,0xBF,
- 0xEF,0xBF,0xD7,0x5F,0xDB,0x5F,0xBA,0xEF,0x7E,0xEF,0xFD,0xF7,0xFB,0xFB,0xF7,0xFD},/*"欢",0*/
- {0xFF,0xFF,0xDF,0x7F,0xEC,0xC3,0xED,0xDB,0xFD,0xDB,0xFD,0xDB,0x0D,0xDB,0xED,0xDB,
- 0xED,0xDB,0xED,0x4B,0xEC,0xD7,0xED,0xDF,0xEF,0xDF,0xD7,0xDF,0xB8,0x01,0xFF,0xFF},/*"迎",1*/
- {0xFE,0xFF,0xDE,0xF7,0xEE,0xF7,0xF6,0xEF,0xF6,0xDF,0xFE,0xFF,0x00,0x01,0xFB,0xBF,
- 0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xF7,0xBD,0xF7,0xBD,0xEF,0xBD,0xDF,0xC1,0x3F,0xFF},/*"光",2*/
- {0xF7,0x7F,0xF7,0x7F,0xF7,0x7F,0xB6,0x01,0xB6,0xBF,0xB5,0xDF,0xB3,0xDF,0xB7,0xFF,
- 0xB6,0x03,0xB6,0xDB,0xB6,0xDB,0xB6,0xDB,0xB6,0xDB,0xF6,0x03,0xF6,0xFB,0xF7,0xFF},/*"临",3*/
- };
- uchar code daima2[][32]=
- {
- {0xFF,0xFF,0xB8,0x07,0xDF,0xEF,0xDE,0x5F,0xFF,0xBF,0xF8,0x03,0x1B,0xBB,0xDB,0xBB,
- 0xD8,0x03,0xDB,0xBB,0xDB,0xBB,0xD8,0x03,0xDB,0xBB,0xDB,0xAB,0xAB,0xF7,0x70,0x01},/*"通",0*/
- {0xF7,0xBF,0xF7,0xDF,0xF4,0x01,0xEF,0xFF,0xEF,0xFF,0xCE,0x03,0xCF,0xFF,0xAF,0xFF,
- 0x6E,0x03,0xEF,0xFF,0xEF,0xFF,0xEE,0x03,0xEE,0xFB,0xEE,0xFB,0xEE,0x03,0xEE,0xFB},/*"信",1*/
- {0xDF,0x7F,0xDF,0x7F,0xDF,0x7F,0xDF,0x7F,0x04,0x0F,0xDF,0x6F,0xDF,0x6F,0xDD,0x67,
- 0xDD,0x6B,0xDB,0x6D,0xD7,0x6D,0xDF,0x6F,0xDE,0xEF,0xDE,0xEF,0xDD,0xAF,0xDB,0xDF},/*"协",2*/
- {0xFE,0xFF,0xFE,0xFF,0xFD,0x7F,0xFB,0xBF,0xF7,0xDF,0xCF,0xE7,0x30,0x19,0xFF,0xFF,
- 0xFF,0xFF,0x80,0x03,0xFD,0xFF,0xFB,0xFF,0xF7,0xDF,0xEF,0xEF,0xC0,0x07,0xEF,0xF7},/*"会",3*/
- } ;
- void Delay_ms(uint n);
- void Init();
- void Write_595_1(uchar dat);
- void Write_595_2(uchar dat);
- void Hangxuan(uchar i);
- void main()
- {
- uchar hang=0,m,n,k,shuju=0;
- Init(); //初始化数据
- while(1)
- {
- for(m=0;m<32;m+=2) //每个字有32个代码,每次写每个字的两个代码
- {
- for(n=0;n<4;n++) //显示上面四个汉字
- {
- shuju=daima1[n][m+1];
- Write_595_1(shuju); //写某个字的右半部分
- shuju=daima1[n][m]; //选择第几个字的第几个代码,先写某个字的左半部分
- Write_595_1(shuju);
- }
- for(k=0;k<4;k++) //显示下面四个汉字
- {
- shuju=daima2[k][m+1];
- Write_595_2(shuju);
- shuju=daima2[k][m];
- Write_595_2(shuju);
- }
- Hangxuan(hang);
- hang++;
- if(hang==16)
- hang=0;
- LT=1;
- Delay_ms(10);
- }
- }
- }
- void Init()
- {
- DAT1=0;
- DAT2=0;
- SK=0;
- EN=1;
- P1=0x00;
- }
- void Write_595_1(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- if((dat&0x80)==0)
- DAT1=0;
- else
- DAT1=1;
- dat<<=1;
- SK=1;
- _nop_();
- _nop_();
- SK=0;
- }
- LT=0;
- }
- void Write_595_2(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- if((dat&0x80)==0)
- DAT2=0;
- else
- DAT2=1;
- dat<<=1;
- SK=1;
- _nop_();
- _nop_();
- SK=0;
- }
- LT=0;
- }
- void Hangxuan(uchar i)
- {
- uchar k;
- k=P1&0xf0; //读回行号;
- EN=1;
- i&=0x0f; //只要低四位
- P1=i|k; //高四位不变,只把低四位赋给P1口
- EN=0;
- }
- void Delay_ms(uint n)
- {
- while(--n) ;
- }
复制代码 |
|