原先是個寫死的廣告風扇,經過抄板換芯片可以顯示任何漢字字母圖形。
制作出來的實物圖如下:
IMG_20220826_143538.jpg (5.45 MB, 下載次數: 28)
下載附件
2022-9-26 13:02 上傳
IMG_20220811_230432_1.jpg (3.87 MB, 下載次數: 31)
下載附件
2022-9-26 13:02 上傳
電路原理圖如下:
屏幕截圖 2022-08-07 102641.png (133.73 KB, 下載次數: 26)
下載附件
2022-9-26 13:02 上傳
屏幕截圖 2022-08-26 224751.png (116.08 KB, 下載次數: 24)
下載附件
2022-9-26 13:02 上傳
IMG_20220810_200751.jpg (3.5 MB, 下載次數: 23)
下載附件
2022-9-26 13:03 上傳
單片機源程序如下:
- /************旋轉LED指尖陀螺程序**************/
- //----------|D1 |D2 | D3|D4 | D5| D6| D7|D8 |D9 |D10|D11||P32 | P55 | P54 |
- //----------| | | | | | | | | | | || | | |
- //----------|P10|P11|P12|P13|P14|P15|P30|P31|P33|P36|P37||按鍵|紅外接收| 紅外發射|
- //----------字模為12x12點陣,黑體,低位先,從左至右,0為亮燈
- //----------下載選擇IRC頻率 6.000 MHZ
- //----------分頻/4
- #include <STC8.H>
- #include"zjtl.h"
- //#include"intrins.h"
- #define uchar unsigned char //宏定義
- #define uint unsigned int //宏定義
- uchar i,s,d,zz;
- #define b 20
- sbit led1 = P1 ^ 0;
- sbit led2 = P1 ^ 1;
- sbit led3 = P1 ^ 2;
- sbit led4 = P1 ^ 3;
- sbit led5 = P1 ^ 4;
- sbit led6 = P1 ^ 5;
- sbit led7 = P3 ^ 0;
- sbit led8 = P3 ^ 1;
- sbit led9 = P3 ^ 3;
- sbit led10 = P3 ^ 6;
- sbit led11 = P3 ^ 7;
- uchar JS,ss,zz,xuanze;
- uint ZS; //累計轉數
- sbit k1=P3^2;
- sbit k2=P5^5;
- //sbit LED0=P3^0;
- sbit LED=P3^7;
- sbit LED_H=P5^4; //紅外發射LED
- //sbit D7=P3^0;
- //sbit D8=P3^1;
- //sbit D9=P3^3;
- //sbit D10=P3^6;
- //sbit D11=P3^7;
- /**************************/
- uchar code huamian0[]={
-
- 0xFF,0xFF,0xFF,0xFB,0x7F,0xFC,
- .......見附件.......
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",7*/
- /* (6 X 12 , 宋體 ) */
- };
- /*****************************************/
- /**********************************/
- /*****n延時子程序*****/
- /************************************************/
- void delay(uint a) //延時
- {
- uchar x;
- while(a--)
- {
- for(x=0;x<150;x++);
- }
- }
- //////////////////////////////
- void delayus(uint f)
- {
- while(f--);
- }
- /**************************/
- void Timer0Init(void) //1毫秒@6.000MHz
- {
- AUXR &= 0x7F; //定時器時鐘12T模式
- TMOD &= 0xF0; //設置定時器模式
- TMOD |= 0x01; //設置定時器模式
- TL0 = 0x0C; //設置定時初值
- TH0 = 0xFE; //設置定時初值
- TF0 = 0; //清除TF0標志
- TR0 = 1; //定時器0開始計時
- ET0 = 1; //定時器T0中斷允許
- }
- /**********************************************/
- /*開機顯示*/
- void kaijiss() //開機最外面LED閃爍三次
- {
- uchar i;
- // for(i=0;i<6;i++)
- // {
- // P10=~P10;
- // delay(100);
- // }
- // P10=1;
-
- }
- /**********************************************/
- /**** LED顯示函數 ****/
- /**********************************************/
- void tuan(uchar *p)
- {
- uchar i;
-
- delayus(ss*100+3300); //延時一個時間后
- for(i=83;i>0;i--)
- {
- P1=p[i*2];
- P2=p[i*2+1];
- P30=P16;
- P31=P17;
- P33=P20;
- P36=P21;
- P37=P22;
-
- delayus(ss+35); //顯示延時
-
- }
-
- P1=P2=P3=0xff; //清除LED顯示
- }
- /***********************************/
- /* 比較器中斷 */
- void cmp_isr()interrupt 21 //
- {
- CMPCR1&=~CMPIF; //清除完成標志
- JS=!!(CMPCR1&CMPRES);
-
- if(JS==0)
- {
-
-
- /**/
- switch(xuanze)
- {
- case(0):tuan(huamian0);break;
- case(1):tuan(huamian1);break;
- case(2):tuan(huamian2);break;
- case(3):tuan(huamian3);break;
- }
- delay(15);
- ZS++; //轉數累加
-
- }
- }
- /**************************************/
- /**************************************/
- /*定時器T0中斷服務*/
- void Timer0(void) interrupt 1
- {
- uchar c;
- d++;
- if(d==40/4) //一直檢測每10ms內當前轉數
- { d=0;
- c++;
- if(c==20)
- {
- P11=~P11;
- }
-
-
- ss=ZS+1;
-
-
- ZS=0; //清零
-
-
- }
- TL0 = 0x0C; //設置定時初值
- TH0 = 0xFE; //設置定時初值
- }
- /**************************************/
- /*外中斷0服務程序*/
- void zhongduan(void) interrupt 0
- {
- if(k1==0)
- {
- delay(15);
- if(k1==0)
- {
- xuanze++;
- if(xuanze>=4)xuanze=0; //
- LED=0;
- }
- while(!k1);
- LED=1;
- }
-
- }
- ////////////////////////////////////////////////
- ///////////////--主--函--數--///////////////////
- ////////////////////////////////////////////////
- void main()
- {
- EA=1; //開總中斷
- EX0=1; //允許使用外中斷
- IT0=1; //負跳變觸發方式(下降沿)
-
- Timer0Init(); //1毫秒@6.000MHz
- msgl(); //單片機工作模式
- fenpin(); //單片機主頻設置
- bjq(); //比較器設置
-
- ioshezhi(); //io口設置
-
- kaijiss(); //開機最外面LED閃爍三次
-
- ////////////////////////////////////////////
- // while(1)
- // {
- // LED_H=0; //紅外發射LED
- //
- // }
- }
- ////////////////////////////////////////////
- ////////////////////////////////////////////
復制代碼
Keil代碼下載(附件內只含代碼,不含其他任何文件):
Keil代碼.7z
(29.46 KB, 下載次數: 35)
2022-9-26 13:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|