|
用了一個(gè)星期的時(shí)間,經(jīng)過長時(shí)間打磨
有工程文件和仿真文件
原創(chuàng)加二次改編的
具體問題留帖
電路原理圖如下:
51hei.png (136.15 KB, 下載次數(shù): 32)
下載附件
2022-9-26 02:22 上傳
單片機(jī)源程序如下:- //宏定義
- #define uchar unsigned char
- #define uint unsigned int
- //頭函數(shù)
- #include <reg51.h>
- #include <intrins.h>
- //管腳定義
- //154
- sbit A_=P0^0;
- sbit B_=P0^1;
- sbit C_=P0^2;
- sbit D_=P0^3;
- sbit G2=P0^7;//低電平使能
- //595
- sbit SI=P0^6;//數(shù)據(jù)腳
- sbit SCK=P0^5;
- sbit RCK=P0^4;
- //管腳定義
- //154
- sbit A_1=P2^0;
- sbit B_1=P2^1;
- sbit C_1=P2^2;
- sbit D_1=P2^3;
- sbit G2_1=P2^7;//低電平使能
- //595
- sbit SI_1=P2^6;//數(shù)據(jù)腳
- sbit SCK_1=P2^5;
- sbit RCK_1=P2^4;
- sbit K1=P1^0;
- sbit K2=P1^1;
- sbit K3=P1^2;
- uchar flag1,flag2,X,Y;
- uchar zishu=10; //字?jǐn)?shù)
- uint num;
- bit ssflag;
- uchar sscount;
- //函數(shù)聲明
- void Init595();
- void Init595_1();
- void Write_byte595(uchar temp);
- void Write_byte595_1(uchar temp);
- void WriteS(uchar data1,uchar data2);
- void WriteS_1(uchar data1,uchar data2);
- void Wei_154(uchar W);
- void Wei_154_1(uchar W);
- void delay(uint z);
- void scan();
- //漢字?jǐn)?shù)組
- uchar code HanZi[]=
- {
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
- 省略
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",18*/
- };
- void scan()
- {
- if(K1==0)
- {
- delay(70);
- if(K1==0)
- {
- WriteS(0xff,0xff);//消影
- while(K1==0);
- ssflag=0;
- flag1++;
- if(flag1==2)
- flag1=0;
- Y=num;
- X=0;
-
- }
- }
- if(K2==0)
- {
- delay(70);
- {
- if(K2==0)
- {
- WriteS(0xff,0xff);//消影
- while(K2==0);
- ssflag=0;
- // Y=num;
- // X=0;
- flag2++;
- if(flag2==2)
- flag2=0;
- }
- }
- }
- if(K3==0)
- {
- delay(70);
- if(K3==0)
- {
- WriteS(0xff,0xff);//消影
- while(!K3);
- ssflag = ~ssflag;
- flag1=0;
- flag2=0;
- Y=num;
- X=0;
- }
- }
- }
- //主函數(shù)
- void main()
- {
- uchar i=1,j=0;
-
- flag1=0;
- num=16*(zishu+3);
-
- //595c初始化
- Init595();
- Init595_1();
- //循環(huán)演示
- while(1)
- {
-
- if(flag1==0)
- {
- if(ssflag==0){
- for(j=0;j<4;j++)
- { scan();
- for(i=1;i<17;i++)
- {
-
- WriteS(0xff,0xff);//消影
- Wei_154(i);
-
- {WriteS(HanZi[i*2-2+2*X],HanZi[i*2-1+2*X]);}//顯示內(nèi)容
-
-
-
-
- delay(1);//顯示
- G2=0;//關(guān)閉
- WriteS_1(0xff,0xff);//消影
-
- Wei_154_1(i);
- WriteS_1(HanZi[i*2-2+2*X+32],HanZi[i*2-1+2*X+32]);//顯示內(nèi)容
-
- delay(1);//顯示
- G2_1=0;//關(guān)閉
-
-
- }
- }
- if(flag2==0)
- {
- X++;
- if(X>=num) //16*字?jǐn)?shù)+2
- {
- X=0;
- }
- }
- }else{
- scan();
- sscount++;
- if(sscount>=50){
- sscount=0;
- X=X+2*16;
- if(X>=num-16) //16*字?jǐn)?shù)+2
- {
- X=32;
- }
- }
- if(sscount<20){
- for(i=1;i<17;i++)
- {
- WriteS(0xff,0xff);//消影
- Wei_154(i);
-
- {WriteS(HanZi[i*2-2+2*X],HanZi[i*2-1+2*X]);}//顯示內(nèi)容
-
-
-
-
- delay(1);//顯示
- G2=0;//關(guān)閉
- WriteS_1(0xff,0xff);//消影
-
- Wei_154_1(i);
- WriteS_1(HanZi[i*2-2+2*X+32],HanZi[i*2-1+2*X+32]);//顯示內(nèi)容
-
- delay(1);//顯示
- G2_1=0;//關(guān)閉
-
-
- }
- }else{
- for(i=1;i<17;i++)
- {
- WriteS(0xff,0xff);//消影
- Wei_154(i);
-
- {WriteS(HanZi[i*2-2+2*0],HanZi[i*2-1+2*0]);}//顯示內(nèi)容
-
-
-
-
- delay(1);//顯示
- G2=0;//關(guān)閉
- WriteS_1(0xff,0xff);//消影
-
- Wei_154_1(i);
- WriteS_1(HanZi[i*2-2+2*0+32],HanZi[i*2-1+2*0+32]);//顯示內(nèi)容
-
- delay(1);//顯示
- G2_1=0;//關(guān)閉
-
-
- }
- }
- }
- }
- if(flag1==1)
- {
-
- for(j=0;j<4;j++)
- { scan();
- for(i=1;i<17;i++)
- {
-
- WriteS(0xff,0xff);//消影
- Wei_154(i);
-
-
- WriteS(HanZi1[i*2-2+2*Y-32],HanZi1[i*2-1+2*Y-32]);//顯示內(nèi)容
-
-
-
-
- delay(1);//顯示
- G2=0;//關(guān)閉
- WriteS_1(0xff,0xff);//消影
-
- Wei_154_1(i);
- WriteS_1(HanZi1[i*2-2+2*Y],HanZi1[i*2-1+2*Y]);//顯示內(nèi)容
-
-
- delay(1);//顯示
- G2_1=0;//關(guān)閉
-
-
- }
- }
- if(flag2==0)
- {
- Y--;
- if(Y<=0)
- Y=num;
- }
- }
- }
- }
- //初始化
- void Init595()
- {
- SI=1;
- SCK=0;
- RCK=0;
- }
- void Init595_1()
- {
- SI_1=1;
- SCK_1=0;
- RCK_1=0;
- }
- void Write_byte595(uchar temp)
- {
- uchar i,data_=temp;
- G2=1;
- for(i=0;i<8;i++)//傳值8位
- {
- if(data_&0x01==0x01)//低位為1
- {
- SI=1;
- }
- else //低位為0
- {
- SI=0;
- }
- //產(chǎn)生一個(gè)上升沿
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
Proteus8.10版本的仿真圖(只支持此版本打開)與程序:
仿真程序.7z
(11.22 MB, 下載次數(shù): 51)
2022-9-26 02:17 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|