|
完成效果圖:
IMG_20220826_135315.jpg (3.43 MB, 下載次數(shù): 42)
下載附件
2022-9-26 15:35 上傳
電路原理圖如下:
屏幕截圖 2022-08-21 014522.png (147.87 KB, 下載次數(shù): 40)
下載附件
2022-9-26 15:35 上傳
PCB布線圖:
屏幕截圖 2022-08-21 014600.png (119.72 KB, 下載次數(shù): 40)
下載附件
2022-9-26 15:35 上傳
PCB實(shí)物圖:
IMG_20220826_151844.jpg (7.24 MB, 下載次數(shù): 45)
下載附件
2022-9-26 15:36 上傳
這款指尖陀螺跟常見(jiàn)的顯字陀螺不同點(diǎn)在于,多了一顆LED,不要小看一顆LED,顯示效果會(huì)好很多。
顯示效果對(duì)比圖:
11顆LED:
屏幕截圖 2022-08-26 140857.png (34.95 KB, 下載次數(shù): 40)
下載附件
2022-9-26 15:36 上傳
12顆LED:
屏幕截圖 2022-08-26 140447.png (37.61 KB, 下載次數(shù): 45)
下載附件
2022-9-26 15:36 上傳
會(huì)減少很多粘連的筆畫。
單片機(jī)源程序如下:
- /************旋轉(zhuǎn)LED指尖陀螺程序**************/
- //----------|D1 |D2 | D3|D4 | D5| D6| D7|D8 |D9 |D10|D11||P32 | P55 |
- //----------| | | | | | | | | | | || | |
- //----------|P10|P11|P12|P13|P14|P15|P30|P31|P33|P36|P37||霍爾| 按鍵 |
- //----------字模取12x11點(diǎn)陣,黑體,低位先,從左至右,0有效
- #include <STC15F2K60S2.H>
- #include"intrins.h"
- #define uchar unsigned char //宏定義
- #define uint unsigned int //宏定義
- /***********************************
- ******** 文字 ***************/
- uchar code wenzi0[]={
- 0xFD,0xF7,0xDD,0xF7,0xDD,0xF1,
- ........省略 見(jiàn)附件........
- //0xFE,0xFB,0xFC,0xF9,0x01,0xFC,/*"回",0*/
- ///* (12 X 11 ) */
- //};
- /////////////////////////////////////////////////////////////////////////////////////
- uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//從低位往高位移一個(gè)燈
- uchar idata xiancun[192];
- sbit key=P5^5;
- sbit LED=P5^4;
- sbit D1=P1^0;
- sbit D2=P1^1;
- sbit D3=P1^2;
- sbit D4=P1^3;
- sbit D5=P1^4;
- sbit D6=P1^5;
- sbit D7=P3^0;
- sbit D8=P3^1;
- sbit D9=P3^3;
- sbit D10=P3^6;
- sbit D11=P3^7;
- sbit D12=P5^4;
- uchar xuanze,a,b;
- uint t,tt;
- uint t1,t2;
- uchar ms=0;
- /**********************************
- ***** 延時(shí)子程序 *****/
- void delay(uint a)
- {
- uchar x;
- while(a--)
- {
- for(x=0;x<150;x++);
- }
- }
-
- /**********************************
- ***** 10us延時(shí)子程序 *****/
- void delay10us(uint b) //@11.0592MHz
- {
- unsigned int a;
- uchar i;
- for(a=b;a>0;a--)
- {
- _nop_();
- i = 25;
- while (--i);
- }
- }
- /*******************************
- ***** 定時(shí)器初始化程序 ********/
- void Timer0Init(void) //10u秒@11.0592MHz
- {
- AUXR |= 0x80; //定時(shí)器時(shí)鐘1T模式
- TMOD &= 0xF0; //設(shè)置定時(shí)器模式
- TL0 = 0x91; //設(shè)置定時(shí)初值
- TH0 = 0xFF; //設(shè)置定時(shí)初值
- TF0 = 0; //清除TF0標(biāo)志
- TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí)
- ET0 = 1; //定時(shí)器T0中斷允許
-
- IE2 |= 0x04;
- AUXR |= 0x04; //定時(shí)器時(shí)鐘1T模式
- T2L = 0xCD; //設(shè)置定時(shí)初值
- T2H = 0xD4; //設(shè)置定時(shí)初值
- AUXR |= 0x10; //定時(shí)器2開(kāi)始計(jì)時(shí)
- }
- /********************************************/
- /* LED測(cè)試程序,按住按鍵再開(kāi)機(jī),LED流水 */
- void ceshi()
- {
- uchar i,a,b;
- IE2 = 0x00; //不允許T2中斷
- for(i=0;i<8;i++)
- {
- a=table0[i];
- D1=a&0x01;
- D2=a&0x02;
- D3=a&0x04;
- D4=a&0x08;
- D5=a&0x10;
- D6=a&0x20;
- D7=a&0x40;
- D8=a&0x80;
- delay10us(20000);
- }
- D8=1;
- for(i=0;i<4;i++)
- {
-
- b=table0[i];
-
- D9=b&0x01;
- D10=b&0x02;
- D11=b&0x04;
- D12=b&0x08;
- delay10us(20000);
- }
- D12=1;
- }
- /**************************************/
- /***** 點(diǎn)陣數(shù)據(jù)送入顯存程序 *****/
- void xianshi(uchar *p,uchar shu)
- {
- uchar i;
- for(i=0;i<(shu/2-(shu/2-96));i++)
- {
- xiancun[i*2]=p[i*2];
- xiancun[i*2+1]=p[i*2+1];
- }
- for(i=(shu/2);i<96;i++)
- {
- xiancun[i*2]=0xff;
- xiancun[i*2+1]=0xff;
- }
- }
-
- /*******************************************************
- ****************主函數(shù)程序****************************/
- void main()
- {
- uchar cs=0,i;
- EA=1; //開(kāi)總中斷
- EX0=1; //允許使用外中斷
- IT0=1; //負(fù)跳變觸發(fā)方式(下降沿)
- Timer0Init(); //1毫秒@11.0592MHz
-
- if(key==0){cs=1;} //按住按鍵再上電
- while(cs){ceshi();} //進(jìn)入測(cè)試模式(LED流水,以檢查L(zhǎng)ED有無(wú)問(wèn)題)
-
-
-
- while(1)
- {
-
- if(key==0)
- {
- delay(30);
- if(key==0)
- {
- xuanze+=1;
-
- LED=0;
- }
- while(!key);
- LED=1;
-
- }
- ////////////////////
- switch(xuanze)
- { //文字
- case(0):xianshi(wenzi0,sizeof(wenzi0));break;
- case(1):xianshi(wenzi1,sizeof(wenzi1));break;
- case(2):xianshi(wenzi2,sizeof(wenzi2));break;
- case(3):xianshi(wenzi3,sizeof(wenzi3));break;
- //圖案
- // case(4):xianshi(tuan0,sizeof(tuan0));break;
- // case(5):xianshi(tuan1,sizeof(tuan1));break;
- // case(6):xianshi(tuan2,sizeof(tuan2));break;
- // case(7):xianshi(tuan3,sizeof(tuan3));break;
- // case(8):xianshi(tuan4,sizeof(tuan4));break;
- default:xuanze=0;break;
- }
- //////////////////
- if(P32==0)
- { tt=t;
- t=0;
- t1=0; //轉(zhuǎn)動(dòng)時(shí)爆閃指示燈不工作
- t2=0; //轉(zhuǎn)動(dòng)時(shí)掉電模式不工作
- if(tt>8000)tt=8000;
-
- for(i=0;i<96;i++)
- {
- a=xiancun[i*2];
- b=xiancun[i*2+1];
- D1=a&0x01;
- D2=a&0x02;
- D3=a&0x04;
- D4=a&0x08;
- D5=a&0x10;
- D6=a&0x20;
- D7=a&0x40;
- D8=a&0x80;
- D9=b&0x01;
- D10=b&0x02;
- D11=b&0x04;
- D12=b&0x08;
- delay10us(tt/(60*3)); //顯示延時(shí)
-
- }
- P1=P3=0xff;
- // a=b=0xff;
- // D1=a&0x01;
- // D2=a&0x02;
- // D3=a&0x04;
- // D4=a&0x08;
- // D5=a&0x10;
- // D6=a&0x20;
- // D7=a&0x40;
- // D8=a&0x80;
- // D9=b&0x01;
- // D10=b&0x02;
- // D11=b&0x04;
- // D12=b&0x08;
- }
- if(t2>=10000) //10秒進(jìn)入掉電模式
- {
- t2=0;
- D11=D1=1; //進(jìn)入掉電模式前關(guān)閉LED燈
- PCON=0x02; //進(jìn)入掉電模式
- _nop_();
- _nop_();
- _nop_();
- D11=0;
- }
- }
- }
- /**************************************/
- /*定時(shí)器T0中斷服務(wù)*/
- void Timer0(void) interrupt 1
- {
-
- t++;
-
- }
- /*定時(shí)器T2中斷服務(wù)*/
- void interrupt_timer2() interrupt 12
- {
-
- t1++;
- t2++;
-
- switch(ms)
- {
- case 0:
- D1=0;
- if(t1==50) //D10亮200ms后轉(zhuǎn)到模式1
- {
- ms=1;
- }
- break;
- //
- case 1:
- D1=1;
- if(t1>=950) //D10滅500ms后轉(zhuǎn)到模式0
- {
- t1=0;
- ms=0;
- }
- break;
- }
- }
- /**************************************/
- /*外中斷0服務(wù)程序*/
- void zhongduan(void) interrupt 0
- {
-
- }
復(fù)制代碼
Keil代碼下載(附件內(nèi)只含代碼,不含其他任何文件):
Keil代碼.7z
(21.04 KB, 下載次數(shù): 28)
2022-9-26 15:50 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|