標(biāo)題:
CT107D單片機(jī)數(shù)碼管動(dòng)態(tài)顯示
[打印本頁]
作者:
冷暖或自知
時(shí)間:
2017-11-22 17:13
標(biāo)題:
CT107D單片機(jī)數(shù)碼管動(dòng)態(tài)顯示
#include "reg52.h" //定義51單片機(jī)特殊功能寄存器
#include "intrins.h"
// 0 1 2 3 4 5 6 7 8 9
code unsigned char duantab[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
code unsigned char weitab[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char i= 0;
void display(void);
sbit a = P2^5;
sbit b = P2^6;
sbit c = P2^7;
void wei_clock();
void duan_clock();
//主函數(shù)
void main(void)
{
TMOD = 0x01; //配置定時(shí)器工作模式
TH0 = (65536-2000)/256;
TL0 = (65536-2000)%256;
EA = 1;
ET0 = 1; //打開定時(shí)器中斷
TR0 = 1; //啟動(dòng)定時(shí)器
while(1)
{
}
}
void display()
{
//先送位選
P0 = weitab[ i];
wei_clock();
//再送段選
P0 = duantab[ i];
duan_clock();
i++;
if(i>=8)
i=0;
}
//定時(shí)器中斷服務(wù)函數(shù)
void isr_timer_0(void) interrupt 1 //默認(rèn)中斷優(yōu)先級 1
{
TH0 = (65536-2000)/256;
TL0 = (65536-2000)%256; //定時(shí)器重載
display(); //2ms執(zhí)行一次
}
//段碼鎖存 Y7C 1變?yōu)?
//即74HC138的Y7輸出 0變?yōu)?
void duan_clock()
{
//74HC138 的Y7 為0
// a = 1;
// b = 1;
// c = 1;
P2 = 0xff; //1111 1111
_nop_();
_nop_();
//74HC138 的Y7 為1
// a = 0;
// b = 1;
// c = 0;
P2 = 0x5f; //0101 1111
}
//位碼鎖存 Y6C 1變?yōu)?
//即74HC138的Y6輸出 0變?yōu)?
void wei_clock()
{
//74HC138 的Y6 為0
//a = 0;
//b = 1;
//c = 1;
P2 = 0xdf; //1101 1111
_nop_();
_nop_();
//74HC138 的Y6 為1
// a = 0;
// b = 1;
// c = 0;
P2 = 0x5f; //0101 1111
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1