1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
剛學了單片機靜態數碼管,想試試動態的,動態的不知道哪里出了問題,求大佬幫忙看看
[打印本頁]
作者:
張珂珂
時間:
2020-4-1 00:26
標題:
剛學了單片機靜態數碼管,想試試動態的,動態的不知道哪里出了問題,求大佬幫忙看看
#include<reg51.h>
void delay10ms(unsigned char i) //延遲函數(for循環需要時間) 當第二層for函數為p=100時(經過測量),i為多少,延遲時間就是i*10ms
{ //目的是在兩次燈亮之間空出時間
int n,p;
for(n=0;n<i;n++)
for(p=0;p<200;p++);
}
void main()
{
unsigned int i;
unsigned char s[12]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
//以下兩行為片選語句,不可以刪除。否則無法操作LED
P2 = 0xa0;P0 = 0x00;P2 = 0; //選中蜂鳴器,關閉蜂鳴器
P2 = 0xC0;P0 = 0xFF;P2 = 0; //位選全部選中
P2 = 0xE0; //選中數碼管
while(1)
{
for(i=0;i<10;i++)
{
P0=s[i];
delay10ms(50);
}
}
}
復制代碼
#include<reg51.h>
void delay10ms(unsigned char i) //延遲函數(for循環需要時間) 當第二層for函數為p=100時(經過測量),i為多少,延遲時間就是i*10ms
{ //目的是在兩次燈亮之間空出時間
int n,p;
for(n=0;n<i;n++)
for(p=0;p<200;p++);
}
void main()
{
unsigned int i;
unsigned char duanma[10]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
unsigned char weima[8]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
//以下兩行為片選語句,不可以刪除。否則無法操作LED
P2 = 0xa0;P0 = 0x00;P2 = 0; //選中蜂鳴器,關閉蜂鳴器
while(1)
{
for(i=0;i<8;i++)
{
P2=weima[i];
P0=duanma[i+1];
delay10ms(100);
P0=0xff;
}
}
}
復制代碼
作者:
csmyldl
時間:
2020-4-1 18:11
動態的一定要有一個位選控制信號,你程序中看不出有位選控制
作者:
還有誰?
時間:
2020-4-1 19:33
你這種出來是滿屏的8888888.每一個數字顯示后是要關斷的。建議再好好看看視頻,深入了解一下,也可在壇子里找一個成功的例子看看
作者:
hangsy
時間:
2020-4-2 13:22
如果是只能顯示一個數字的問題你可以把你的延遲時間縮短一些,數碼管所謂的動態顯示其實跟靜態顯示一個原理,就是一位一位的顯示,然后延時縮短,根據人眼的視覺殘留看起來好像是每一位的顯示不一樣,但是顯示完一位之后以及要顯示下一位之前你要把位選上一位的位選關閉,要不然顯示會出現問題,每次只打開一個位選
作者:
張珂珂
時間:
2020-4-3 22:14
還有誰? 發表于 2020-4-1 19:33
你這種出來是滿屏的8888888.每一個數字顯示后是要關斷的。建議再好好看看視頻,深入了解一下,也可在壇子里 ...
怎么關斷?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1