標(biāo)題: 單片機(jī)大佬們數(shù)碼管和點(diǎn)陣怎么同時工作? [打印本頁]
作者: hpf 時間: 2018-11-17 21:53
標(biāo)題: 單片機(jī)大佬們數(shù)碼管和點(diǎn)陣怎么同時工作?
大佬們,我是想讓數(shù)碼管顯示2018,點(diǎn)陣顯示0--9,請大佬們指教我該怎么改正
圖片2.png (113.76 KB, 下載次數(shù): 20)
下載附件
2018-11-17 21:53 上傳
圖片1.png (59.56 KB, 下載次數(shù): 15)
下載附件
2018-11-17 21:53 上傳
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code DSY_CODE[]={0xa4,0xc0,0xf9,0x80};
uchar code wei[]={0x80,0x40,0x20,0x10};
unsigned char const xuehao[]={
0x00,0x00,0xFE,0x82,0x82,0x82,0xFE,0x00, //0
0x00,0x00,0x84,0x82,0xFF,0x80,0x80,0x00, //1
0x00,0x00,0xF2,0x92,0x92,0x92,0x9E,0x00, //2
0x00,0x00,0x92,0x92,0x92,0xFE,0x00,0x00, //3
0x00,0x20,0x30,0x28,0x24,0xFE,0x20,0x00, //4
0x00,0x00,0x9E,0x92,0x92,0x92,0xF2,0x00, //5
0x00,0x00,0xFE,0x92,0x92,0x92,0xF2,0x00, //6
0x00,0x00,0x00,0x02,0x02,0x02,0xFE,0x00, //7
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, //8
0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00 //9
};
unsigned char code lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
void Timer1Init()
{
TMOD|=0X10;//選擇為定時器1模式,工作方式1,僅用TR1打開啟動。
TH1=0XFC; //給定時器賦初值,定時1ms
TL1=0X18;
ET1=1;//打開定時器1中斷允許
EA=1;//打開總中斷
TR1=1;//打開定時器
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<4;i++)
{
P3=0x00; //關(guān)閉顯示
P1=DSY_CODE[ i]; //發(fā)送數(shù)字段碼
P3=wei[ i];
DelayMS(10);
}
Timer1Init(); //定時器1初始化
}
}
void Timer1() interrupt 3
{
uchar t,j,k;
TH1=0XFC; //給定時器賦初值,定時1ms
TL1=0X18;
for(t=0;t<10;t++)
{
for(j=0;j<30;j++)
{
for(k=0;k<8;k++)
{
P2=lie[k];
P0=~xuehao[t*8+k];
DelayMS(2);
}
}
}
}
作者: angmall 時間: 2018-11-18 09:45
你的程序有缺陷,給你改了一下,你試試。
- #include <reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- //uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar code DSY_CODE[]={0xa4,0xc0,0xf9,0x80};
- uchar code wei[]={0x80,0x40,0x20,0x10};
- unsigned char const xuehao[]={
- 0x00,0x00,0xFE,0x82,0x82,0x82,0xFE,0x00, //0
- 0x00,0x00,0x84,0x82,0xFF,0x80,0x80,0x00, //1
- 0x00,0x00,0xF2,0x92,0x92,0x92,0x9E,0x00, //2
- 0x00,0x00,0x92,0x92,0x92,0xFE,0x00,0x00, //3
- 0x00,0x20,0x30,0x28,0x24,0xFE,0x20,0x00, //4
- 0x00,0x00,0x9E,0x92,0x92,0x92,0xF2,0x00, //5
- 0x00,0x00,0xFE,0x92,0x92,0x92,0xF2,0x00, //6
- 0x00,0x00,0x00,0x02,0x02,0x02,0xFE,0x00, //7
- 0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, //8
- 0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00 //9
- };
- unsigned char code lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- void DelayMS(uint x)
- {
- uchar t;
- while(x--) for(t=0;t<120;t++);
- }
- /*
- void Timer1Init()
- {
- TMOD|=0X10;//選擇為定時器1模式,工作方式1,僅用TR1打開啟動。
- TH1=0XFC; //給定時器賦初值,定時1ms
- TL1=0X18;
- ET1=1;//打開定時器1中斷允許
- EA=1;//打開總中斷
- TR1=1;//打開定時器
- }
- */
- void main()
- {
- uchar i;
- uchar t,j,k;
- //Timer1Init(); //定時器1初始化
- while(1)
- {
- //for(i=0;i<4;i++)
- //{
- // DelayMS(10);
- //}
- for(t=0;t<10;t++)
- {
- for(j=0;j<30;j++)
- {
- for(k=0;k<8;k++)
- {
- P2=lie[k];
- P0=~xuehao[t*8+k];
- DelayMS(2);
- P3=0x00; //關(guān)閉顯示
- P1=DSY_CODE[ k/2]; //發(fā)送數(shù)字段碼
- P3=wei[ k/2];
- }
- }
- }
- }
- }
- /*
- void Timer1() interrupt 3
- {
- TH1=0XFC; //給定時器賦初值,定時1ms
- TL1=0X18;
- }
- */
復(fù)制代碼
作者: hpf 時間: 2018-11-18 16:31
非常感謝師兄,仿真后沒有問題
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |