熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2017-5-31 19:37
正文摘要:這個(gè)是按照老師講的畫出來的圖,不讓改動(dòng),要求四個(gè)燈分別顯示1234,延時(shí)1秒后同時(shí)顯示0,1秒后再分別顯示5678,再1秒后顯示0000。這樣循環(huán) |
#include<reg51.h> #include<intrins.h> #include<absacc.h> #define uint unsigned int #define uchar unsigned char #define portA XBYTE[0x00] uchar code tab_1[]={0x06,0x5b,0x4f,0x66}; //1~4¹²Òõ uchar code tab_2[]={0x6d,0x7d,0x07,0x7f}; //5~8¹²Òõ uchar code tab_3[]={0x3f,0x3f,0x3f,0x3f}; //0¹²Òõ void delayms(uint i) { uint j,k; for(j=i;j>0;j--) for(k=100;k>0;k--); //ÑÓʱ1ms } void main() { while(1) { P2=0x00; P0=0x06; P2=0x20; P0=0x5b; P2=0x40; P0=0x4f; P2=0x60; P0=0x66; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); P2=0x00; P0=0x6d; P2=0x20; P0=0x7d; P2=0x40; P0=0x07; P2=0x60; P0=0x7f; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); } } |
搞清位選和段選,掌握動(dòng)態(tài)顯示,再加個(gè)延時(shí)就可以了 |
seven96 發(fā)表于 2017-5-31 19:40 思路不對!程序與電路不符! |
15277112091 發(fā)表于 2017-6-1 07:47 你的方法對這個(gè)電路不行!不相信不妨試試看! |
搞清位選和段選,掌握動(dòng)態(tài)顯示,再加個(gè)延時(shí)就可以了 |
用個(gè)定時(shí)器就行了 |
雪球 發(fā)表于 2017-5-31 22:10 怎么注意WR?多看看?還是那句話:關(guān)鍵是弄清WR的作用! |
一定要注意WR! |
本帖最后由 zl2168 于 2017-5-31 22:49 編輯 程序與電路不符,關(guān)鍵是弄清WR的作用。!知道為什么老師不讓改動(dòng)電路嗎?老師就是為了讓學(xué)生去理解并行擴(kuò)展的概念。 推薦一個(gè)案例,內(nèi)有這種電路的原理和程序,去看看吧! 先Proteus仿真一下,確認(rèn)有效。 ![]() ![]() 以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。 |
我自己寫的程序,調(diào)試的問題是四個(gè)管本來應(yīng)該顯示1234的部分全都顯示4,5678那部分也是。不知帶該怎么改了 |
#include<reg51.h> #include<intrins.h> #include<absacc.h> #define uint unsigned int #define uchar unsigned char #define portA XBYTE[0x00] uchar code tab_1[]={0x06,0x5b,0x4f,0x66}; //1~4¹²Òõ uchar code tab_2[]={0x6d,0x7d,0x07,0x7f}; //5~8¹²Òõ uchar code tab_3[]={0x3f,0x3f,0x3f,0x3f}; //0¹²Òõ void delayms(uint i) { uint j,k; for(j=i;j>0;j--) for(k=100;k>0;k--); //ÑÓʱ1ms } void main() { while(1) { P2=0x00; P0=0x06; P2=0x20; P0=0x5b; P2=0x40; P0=0x4f; P2=0x60; P0=0x66; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); P2=0x00; P0=0x6d; P2=0x20; P0=0x7d; P2=0x40; P0=0x07; P2=0x60; P0=0x7f; delayms(1000); P2=0x00; P0=0x3f; P2=0x20; P0=0x3f; P2=0x40; P0=0x3f; P2=0x60; P0=0x3f; delayms(1000); } } |
Powered by 單片機(jī)教程網(wǎng)