51單片機16X32LED點陣程序_第1頁
51單片機16X32LED點陣程序_第2頁
51單片機16X32LED點陣程序_第3頁
51單片機16X32LED點陣程序_第4頁
51單片機16X32LED點陣程序_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

word文檔可自由復制編輯51單片機16X32LED點陣程序#include<REG52.H>#include"intrins.h"#defineucharunsignedchar#defineuintunsignedint#definelight3//定義亮度/*****************************接口定義********************************/sbitSHCP=P1^6;//595的移位信號sbitSTCP=P1^5;//是595的鎖存信號/*如果用的是普通單片機沒有P4.1口請改為其他口*/sbitSDA_R=P3^6;//紅數(shù)據sbitSDA_G=P1^4;//綠數(shù)據sbitOE=P1^7;//輸出使能sbitIA=P1^0;//行控制線A/*如果用的是普通單片機沒有P4.0口請改為其他口*/sbitIB=P1^1;//行控制線BsbitIC=P1^2;//行控制線CsbitID=P1^3;//行控制線DsbitSpeek=P2^3;//蜂鳴器/********************************************************************/#definescan0{IA=0;IB=0;IC=0;ID=0;}#definescan1{IA=1;IB=0;IC=0;ID=0;}#definescan2{IA=0;IB=1;IC=0;ID=0;}#definescan3{IA=1;IB=1;IC=0;ID=0;}#definescan4{IA=0;IB=0;IC=1;ID=0;}#definescan5{IA=1;IB=0;IC=1;ID=0;}#definescan6{IA=0;IB=1;IC=1;ID=0;}#definescan7{IA=1;IB=1;IC=1;ID=0;}#definescan8{IA=0;IB=0;IC=0;ID=1;}#definescan9{IA=1;IB=0;IC=0;ID=1;}#definescan10{IA=0;IB=1;IC=0;ID=1;}#definescan11{IA=1;IB=1;IC=0;ID=1;}#definescan12{IA=0;IB=0;IC=1;ID=1;}#definescan13{IA=1;IB=0;IC=1;ID=1;}#definescan14{IA=0;IB=1;IC=1;ID=1;}#definescan15{IA=1;IB=1;IC=1;ID=1;}ucharMove,Speed,line;//(移位速度行)定義uintzimuo;//字模計數(shù)器uintuiAllData;ucharBUFF[10];//緩存voidDelayMs(void);//延時voidin_data();//調整移動數(shù)據voidrxd_data();//發(fā)送移動數(shù)據constucharcodehanzi[];/******************************************************//*****不影響其他端口的掃描*************************/voidscan(unsignedcharValue){switch(Value){case0:scan0;break;case1:scan1;break;case2:scan2;break;case3:scan3;break;case4:scan4;break;case5:scan5;break;case6:scan6;break;case7:scan7;break;case8:scan8;break;case9:scan9;break;case10:scan10;break;case11:scan11;break;case12:scan12;break;case13:scan13;break;case14:scan14;break;case15:scan15;break;default:break;}}/**************************延時***********************//*voidDelay1ms(unsignedinttima){unsignedinta,b;for(a=tima;a>0;a--)for(b=110;b>0;b--);}*//********************************************/voidDelay_15us(unsignedinttime){do{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}while(--time);}/*主函數(shù)*/voidmain(){Move=0;zimuo=0;while(1){//利用sizeof()語句運算字幕有效數(shù)據的總數(shù);while(zimuo<uiAllData)//2048)//定義顯示字幕數(shù)據的長度2048/32=64即顯示完64個16*16大小的字符后重新循環(huán){for(Move=0;Move<16;Move++)//數(shù)據移位。{for(Speed=0;Speed<10;Speed++)//移動速度控制{for(line=0;line<16;line++){in_data();//調整移動數(shù)據rxd_data();//裝載移動數(shù)據scan(line);//輸出行掃描STCP=1;//鎖存STCP=0;OE=0;//打開屏使能端//Delay1ms(1);//延時,等待一段時間,讓這列顯示的內容在人眼內產生“視覺暫留”現(xiàn)象。//DelayMs();_nop_();_nop_();_nop_();_nop_();_nop_();Delay_15us(6);OE=1;}}//移動一步}zimuo=zimuo+32;//換下一個字}zimuo=0;}}/**********************************************************/voidin_data(void)//調整數(shù)據一個屏4個字的數(shù)據{chars;for(s=4;s>=0;s--)//一個屏能顯示4個字取最前面的字發(fā)送給595的最前面{//zimuo是個計算顯示到哪個字的計數(shù)器s是取4個字的循環(huán)line是顯示到哪一行根據這幾個參數(shù)計算出一個屏中現(xiàn)在需要顯示的數(shù)據放入BUFF內存中等待發(fā)送給595BUFF[2*s+0]=hanzi[zimuo+0+32*s+2*line];//要知道為什么這么算就需要知道取模的方向和原理一行有8個字節(jié)(一個中文16*16的字一行有2個字節(jié))BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*line];//把一個字的首字節(jié)放入BUFF[0]中后面一個字節(jié)放入BUFF[1]以此類推剩下的3個字}}/***********************發(fā)送移動的數(shù)據****************************/voidrxd_data(void)//串行發(fā)送數(shù)據{uchars;ucharinc,tempyid,temp;if(Move<8)inc=0;elseinc=1;for(s=0+inc;s<4+inc;s++)//發(fā)送4字節(jié)數(shù)據{if(Move<8)tempyid=Move;elsetempyid=Move-8;temp=(BUFF[s]<<tempyid)|(BUFF[s+1]>>(8-tempyid));//h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的數(shù)據。temp=255-temp;//temp1=(BUFF1[s]>>tempyid)|(BUFF1[s+1]<<(8-tempyid));//h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的數(shù)據。//temp1=255-temp1;ACC=temp;//if(zimuo<104)//當顯示完512/32=16個字后變綠色顯示//{SDA_G=1;/*for(k=0;k<8;k++)//一個字節(jié)8位發(fā)送給595{SHCP=0;//上升沿移位595SDA_R=(bit)(temp&0x01);//通過IO口送一個位給595temp=temp>>1;//字節(jié)移位準備送下一位SHCP=1;}*///}SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;SHCP=0;ACC<<=1;SDA_R=CY;SHCP=1;}}//取模說明:取模軟件用PC2002資料包里有直接打開即可用配置請看此程序目錄下的"配置圖片"http://constucharcodehanzi[]={/*移動顯示漢字字模,*///移動顯示漢字0x90,0x00,0x90,0x01,0x88,0x20,0xC8,0x7F,0x44,0x20,0x2C,0x12,0x16,0x02,0x45,0x0A,0xC4,0x12,0x44,0x12,0x24,0x22,0x24,0x62,0x14,0x22,0x84,0x02,0x04,0x01,0x00,0x00,/*"你",6*/0x40,0x00,0x40,0x00,0xFE,0x7F,0x20,0x00,0x20,0x00,0x10,0x02,0x18,0x02,0xE8,0x3F,0x0C,0x02,0x0A,0x02,0x09,0x02,0x08,0x02,0x08,0x02,0xE8,0x7F,0x08,0x00,0x00,0x00,/*"在",7*/0xE0,0x7B,0x4F,0x4A,0x49,0x2A,0x49,0x2A,0xE9,0x2B,0x49,0x1A,0x49,0x2A,0xF9,0x2B,0x49,0x4A,0x4F,0x4A,0x29,0x4A,0x20,0x5A,0x10,0x2A,0x88,0x0A,0x04,0x09,0x00,0x00,/*"哪",8*/0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0xFC,0x1F,0x80,0x00,0x80,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x00,0x00,/*"里",9*/0x60,0x02,0x1C,0x0A,0x10,0x12,0x10,0x12,0x10,0x02,0xFF,0x7F,0x10,0x02,0x10,0x12,0x70,0x14,0x1C,0x0C,0x13,0x04,0x10,0x0A,0x90,0x49,0x10,0x50,0x14,0x60,0x08,0x40,/*"我",10*/0x80,0x00,0x80,0x00,0xFC,0x3F,0x80,0x00,0x90,0x0C,0xA0,0x04,0xC0,0x02,0xFE,0x7F,0x80,0x01,0xC0,0x02,0xA0,0x04,0x90,0x18,0x8C,0x70,0x83,0x20,0x80,0x00,0x80,0x00,/*"來",11*/0x00,0x00,0xFE,0x3F,0x00,0x18,0x00,0x06,0x80,0x01,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論