這是用FPGA實(shí)現(xiàn)的設(shè)計(jì)兩人擲骰子比較點(diǎn)大小的游戲,里面有詳細(xì)的程序源碼及分析,希望有些幫助
上傳時(shí)間: 2013-08-06
上傳用戶:lili123
電路連接 由于數(shù)碼管品種多樣,還有共陰共陽的,下面我們使用一個(gè)數(shù)碼管段碼生成器(在文章結(jié)尾) 去解決不同數(shù)碼管的問題: 本例作者利用手頭現(xiàn)有的一位不知品牌的共陽數(shù)碼管:型號(hào)D5611 A/B,在Eagle 找了一個(gè) 類似的型號(hào)SA56-11,引腳功能一樣可以直接代換。所以下面電路圖使用SA56-11 做引腳說明。 注意: 1. 將數(shù)碼管的a~g 段,分別接到Arduino 的D0~D6 上面。如果你手上的數(shù)碼管未知的話,可以通過通電測(cè)量它哪個(gè)引腳對(duì)應(yīng)哪個(gè)字段,然后找出a~g 即可。 2. 分清共陰還是共陽。共陰的話,接220Ω電阻到電源負(fù)極;共陽的話,接220Ω電阻到電源+5v。 3. 220Ω電阻視數(shù)碼管實(shí)際工作亮度與手頭現(xiàn)有原件而定,不一定需要準(zhǔn)確。 4. 按下按鈕即停。 源代碼 由于我是按照段碼生成器默認(rèn)接法接的,所以不用修改段碼生成器了,直接在段碼生成器選擇共陽極,再按“自動(dòng)”生成數(shù)組就搞定。 下面是源代碼,由于偷懶不用寫循環(huán),使用了部分AVR 語句。 PORTD 這個(gè)是AVR 的端口輸出控制語句,8 位對(duì)應(yīng)D7~D0,PORTD=00001001 就是D3 和D0 是高電平。 PORTD = a;就是找出相應(yīng)的段碼輸出到D7~D0。 DDRD 這個(gè)是AVR 語句中控制引腳作為輸出/輸入的語句。DDRD = 0xFF;就是D0~D7 全部 作為輸出腳了。 ARDUINO CODECOPY /* Arduino 單數(shù)碼管骰子 Ansifa 2011-12-28 */ //定義段碼表,表中十個(gè)元素由LED 段碼生成器生成,選擇了共陽極。 inta[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; voidsetup() { DDRD = 0xFF; //AVR 定義PortD 的低七位全部用作輸出使用。即0xFF=B11111111對(duì) 應(yīng)D7~D0 pinMode(12, INPUT); //D12用來做骰子暫停的開關(guān) } voidloop() { for(int i = 0; i < 10; i++) { //將段碼輸出PortD 的低7位,即Arduino 的引腳D0~D6,這樣需要取出PORTD 最高位,即 D7的狀態(tài),與段碼相加,之后再輸出。 PORTD = a[i]; delay(50); //延時(shí)50ms while(digitalRead(12)) {} //如果D12引腳高電平,則在此死循環(huán),暫停LED 跑 動(dòng) } }
標(biāo)簽: Arduino 10 數(shù)碼管 實(shí)驗(yàn)
上傳時(shí)間: 2013-10-15
上傳用戶:baitouyu
X電容是指跨于L-N之間的電容器, Y電容是指跨于L-G/N-G之間的電容器。(L=Line, N=Neutral, G=Ground).
標(biāo)簽: 電容
上傳時(shí)間: 2014-12-23
上傳用戶:haohao
LTC3524 的 2.5V 至 6V 輸入電源範(fàn)圍非常適合於那些從鋰離子電池或者多節(jié)堿性或鎳電池供電的便攜式設(shè)備。LCD 和 LED 驅(qū)動(dòng)器的工作頻率均為 1.5MHz,因而允許使用纖巧、低成本的電感器和電容器。
上傳時(shí)間: 2013-11-22
上傳用戶:zzbbqq99n
對(duì)於輸出電壓處於輸入電壓範(fàn)圍之內(nèi) (這在鋰離子電池供電型應(yīng)用中是一種很常見的情形) 的 DC/DC 轉(zhuǎn)換器設(shè)計(jì),可供采用的傳統(tǒng)解決方案雖有不少,但迄今為止都不能令人非常滿意
上傳時(shí)間: 2013-11-19
上傳用戶:urgdil
PC電源測(cè)試系統(tǒng)chroma8000簡(jiǎn)介
標(biāo)簽: chroma 8000 電源測(cè)試系統(tǒng)
上傳時(shí)間: 2013-11-08
上傳用戶:xiehao13
X電容和Y電容的使用及注意方法
上傳時(shí)間: 2013-11-22
上傳用戶:sevenbestfei
介紹X,Y電容的一片通俗易懂的資料
標(biāo)簽: 電容
上傳時(shí)間: 2013-10-30
上傳用戶:teddysha
用七個(gè)led小燈模擬骰子
上傳時(shí)間: 2013-11-16
上傳用戶:lty6899826
附件為:LCD12864顯示漢字和數(shù)字的程序與電路 /* 自定義延時(shí)子函數(shù) */ void delayms(uchar z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /* 判斷LCD忙信號(hào)狀態(tài) */ void buys() { int dat; RW=1; RS=0; do { P0=0x00; E=1; dat=P0; E=0; dat=0x80 & dat; } while(!(dat==0x00)); } /* LCD寫指令函數(shù) */ void w_com(uchar com) { //buys(); RW=0; RS=0; E=1; P0=com; E=0; } /* LCD寫數(shù)據(jù)函數(shù) */ void w_date(uchar date) { //buys(); RW=0; RS=1; E=1; P0=date; E=0; } /* LCD選屏函數(shù) */ void select_screen(uchar screen) { switch(screen) { case 0: //選擇全屏 CS1=0; CS2=0; break; case 1: //選擇左屏 CS1=0; CS2=1; break; case 2: //選擇右屏 CS1=1; CS2=0; break; /* case 3: //選擇右屏 CS1=1; CS2=1; break; */ } } /* LCDx向上滾屏顯示 */ void lcd_rol() { int x; for(x=0;x<64;x++) { select_screen(0); w_com(0xc0+x); delayms(500); } } /* LCD清屏函數(shù):清屏從第一頁的第一列開始,總共8頁,64列 */ void clear_screen(screen) { int x,y; select_screen(screen); //screen:0-選擇全屏,1-選擇左半屏,2-選擇右半屏 for(x=0xb8;x<0xc0;x++) //從0xb8-0xbf,共8頁 { w_com(x); w_com(0x40); //列的初始地址是0x40 for(y=0;y<64;y++) { w_date(0x00); } } } /* LCD顯示漢字字庫函數(shù) */ void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun) { //screen:選擇屏幕參數(shù),page:選擇頁參數(shù)0-3,col:選擇列參數(shù)0-3,mun:顯示第幾個(gè)漢字的參數(shù) int a; mun=mun*32; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } } /* LCD顯示字符字庫函數(shù) */ void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun) { //screen:選擇屏幕參數(shù),page:選擇頁參數(shù)0-3,col:選擇列參數(shù)0-7,mun:顯示第幾個(gè)漢字的參數(shù) int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } } /* LCD顯示數(shù)字字庫函數(shù) */ void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun) { //screen:選擇屏幕參數(shù),page:選擇頁參數(shù)0-3,col:選擇列參數(shù)0-7,mun:顯示第幾個(gè)漢字的參數(shù) int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } } /* LCD初始化函數(shù) */ void lcd_init() { w_com(0x3f); //LCD開顯示 w_com(0xc0); //LCD行初始地址,共64行 w_com(0xb8); //LCD頁初始地址,共8頁 w_com(0x40); //LCD列初始地址,共64列 } /* LCD顯示主函數(shù) */ void main() { //第一行 int x; lcd_init(); //LCD初始化 clear_screen(0); //LCD清屏幕 lcd_display_shuzi(1,0,4,5); //LCD顯示數(shù)字 lcd_display_shuzi(1,0,5,1); //LCD顯示數(shù)字 lcd_display_hanzi(1,0,3,0); //LCD顯示漢字 lcd_display_hanzi(2,0,0,1); //LCD顯示漢字 //LCD字符漢字 lcd_display_hanzi(2,0,1,2); //LCD顯示漢字 //第二行 lcd_display_zifuk(1,1,2,0); //LCD顯示字符 lcd_display_zifuk(1,1,3,0); //LCD顯示字符 lcd_display_zifuk(1,1,4,0); //LCD顯示字符 lcd_display_zifuk(1,1,5,4); //LCD顯示字符 lcd_display_shuzi(1,1,6,8); //LCD顯示字符 lcd_display_shuzi(1,1,7,9); //LCD顯示字符 lcd_display_shuzi(2,1,0,5); //LCD顯示字符 lcd_display_shuzi(2,1,1,1); //LCD顯示字符 lcd_display_zifuk(2,1,2,4); lcd_display_zifuk(2,1,3,1); lcd_display_zifuk(2,1,4,2); lcd_display_zifuk(2,1,5,3); //第三行 for(x=0;x<4;x++) { lcd_display_hanzi(1,2,x,3+x); //LCD顯示漢字 } for(x=0;x<4;x++) { lcd_display_hanzi(2,2,x,7+x); //LCD顯示漢字 } //第四行 for(x=0;x<4;x++) { lcd_display_zifuk(1,3,x,5+x); //LCD顯示漢字 } lcd_display_shuzi(1,3,4,7); lcd_display_shuzi(1,3,5,5); lcd_display_shuzi(1,3,6,5); lcd_display_zifuk(1,3,7,9); lcd_display_shuzi(2,3,0,8); lcd_display_shuzi(2,3,1,9); lcd_display_shuzi(2,3,2,9); lcd_display_shuzi(2,3,3,5); lcd_display_shuzi(2,3,4,6); lcd_display_shuzi(2,3,5,8); lcd_display_shuzi(2,3,6,9); lcd_display_shuzi(2,3,7,2); while(1); /* while(1) { // LCD向上滾屏顯示 lcd_rol(); } */ }
標(biāo)簽: 12864 LCD 漢字 數(shù)字
上傳時(shí)間: 2013-11-08
上傳用戶:aeiouetla
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1