?? leddrive.c
字號:
#include "ATMEL89X51.H"
#include <intrins.h>
#define LED_SET P2 //點亮哪一位數碼管選擇端口
//#define LED_OE P3_6 //使能數據端口輸出
#define LED_data P0 //設定P0口為數據輸入端口
#define ON 0 //設0為開
#define OFF 1 //設1為關
unsigned play_bit[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //確定哪一位數碼管顯示
unsigned char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~~9段碼 //0~~9段碼
void delay(unsigned char temp)
{
unsigned char i;
for(i=0;i<temp;i++);
}
void led_disp(unsigned char num,unsigned char vdata,unsigned char on_switch) //顯示驅動函數 on_switch = 0 ,開,on_switch = 1,關
{
LED_SET = ~play_bit[num-1]; //選定哪一位數碼管顯示
if(on_switch)
LED_data = 0;
else
LED_data = vdata; //送字形碼
delay(200); //消影
LED_data =0x0;
}
void led_play(long cont) //十進制數顯示驅動函數
{
int i;
for(i=0;i<8;i++)
{
switch(i)
{
case 0: led_disp(1,seg[cont%10],0);
break;
case 1: led_disp(2,seg[(cont/10)%10],0);
break;
case 2: led_disp(3,seg[(cont/100)%10],0);
break;
case 3: led_disp(4,seg[(cont/1000)%10],0);
break;
case 4: led_disp(5,seg[(cont/10000)%10],0);
break;
case 5: led_disp(6,seg[(cont/100000)%10],0);
break;
default:
break;
}
}
}
main()
{
// LED_OE = ON;
while(1)
{
led_play(123456);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -