共阳极数码管计数器
0到98,想要計數更大,改變sec的值就可以
注意變量led_cache
#include<STC15F2K60S2.H>
#include"intrins.h"
#define uint unsigned int
#define uchar unsigned char
#define led_output P0
#define led_duan_and_wei P2 //共陽極數碼管
unsigned char add; //變量
unsigned int num;
unsigned char sec;
uchar code tabe[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//顯示段選,1,2,3,4,5,6,7,8,9 常量
uchar code tabe1[ ]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; // 顯示位選第八位到第一位
uchar tabe2[ ]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0}; //初始化顯示緩沖區 變量
void main( )
{
while(1)
{
led_output=0xff;//消影 共陽極數碼管是低電位有效,消隱要無效; 共陰數碼管是高電位有效,消影是0x00
led_duan_and_wei=0xff;//打開段選數據
led_duan_and_wei=0x1f; //鎖存段選數據573
led_output=tabe1[add];//位選
led_duan_and_wei=0xdf;//打開位選控制Y6信號,送數據
led_duan_and_wei&=0x1f; //清零,關閉U8鎖存器,鎖存數據
led_output=tabe2[add];// led_cache變量中取值,段選數據
led_duan_and_wei=0xff;//打開段選控制Y7信號,送數據
led_duan_and_wei&=0x1f; //清零,關閉U7鎖存器 ,鎖存數據
add++;
add&=0x07; //2的3次方用&,段選和位選相同
//數值運算
num++;
if(num>=50000)//控制計數器增加的時間間隔
{
num=0; //變量清0
sec++;
if(sec>=99)//控制數值的范圍0-98
{
sec=0;//成立執行清0
}
tabe2[0]=tabe[sec%10]; //摘取個位
tabe2[1]=tabe[sec/10%10]; //摘取十位
tabe2[2]=tabe[sec/100%10]; //摘取百位
tabe2[3]=tabe[sec/1000%10]; //摘取千位
tabe2[4]=tabe[sec/10000%10]; //摘取萬位
tabe2[5]=tabe[sec/100000%10]; //摘取十萬位
tabe2[6]=tabe[sec/1000000%10]; //摘取百萬位
tabe2[7]=tabe[sec/10000000%10];//摘取千萬位
}
}
}
總結
- 上一篇: drawRoundRect方法:绘制圆角
- 下一篇: 登机牌,机票,行程单的区别