-
/******************************************
********************
河南工业大学电气工程学院
p>
测控
1001
刘欣
如有错误欢迎致电
helloh
aut@
共同学习
共同进步
**************************************************
*************/
/***********************
*****************************************
程序名称
:
数字自动加
1
计数,数码管显示出来
按键可以调节速度
说明:使用本程序你必须把
SE5
设
置为
ON(2-3)
短接
P11
按键为停止计数按键
P10
为速度减
1
档
P34
为速度加
1
档
P33
为暂停或开始计数按键
***************************************
**************************/
/*
头文件
*/
#include
#include
#define
uint unsigned int
#define uchar
unsigned char
#define ulong unsigned
long int
/*
端口定义
*/
#define sled_dm_port P0 /*
定义
LED
显示的段码数据脚
*/
#define sled_wm_port P2 /*
定义
LED
显示的位码数据脚
*/
sbit P10 = P1^0; //p1.0
脚定义
为速度减
1
档
sbit P11 = P1^1;
//p1.1
脚定义为停止键
sbit P33 = P3^3;
//p3.3
脚定义为暂停及开始键
sbit P34 = P3^4; //p3.4
脚定义
为速度加
1
档
sbit P30 = P3^0;
//
系统运行状态提示
/*
定义数码管显示字符跟数字的对应数组关系
*
/
uchar
code
mun_
to_char[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
,0x80,0x90,0x88,0x83,0xc6,
0xa1,0x86,0x8
e};
/* 0 1
2 3 4 5 6 7 8 9 a
b c d e f */
/*
定义需要点亮的数码管
*/
uchar code sled_bit_table[]={0x7f,0xbf,
0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar data sled_data[8]={0xff,0xff,0xff
,0xff,0xff,0xff,0xff,0xff}; /*0-7
号
SLED
缓冲值
*/
uchar data led_lighten_bit=0
/*LED
灯点亮标志位
0-7*/
uint system_count=0; //P30
外接
LED
闪烁计数
< br>
uint add_count = 0;
ulong count=0;
//
数码管计数值
uint
speed=0; //
计数速度
uchar temp=0;
//
临时值
uchar
play=1; //
计数开始
0
暂停
1
开始
uchar add_bit
= 0; //
条件计数
/*-------------------------
----------------------
显示部分程序
,
采用定时器
0
产生中断,
1MS
更新一次
--
----------------------------------------------*/
void SLED_Disp() interrupt 1 using 3
{
TH0 =
(65536-1000)/256;
TL0 =
(65536-1000)/256;
sled_wm_port = 0xff;
/*
关闭显示
*/
sled_dm_port =
sled_data[led_lighten_bit];
/*
输出段码数据到数码管
*/
sled_wm_port =
sled_bit_table[led_lighten_bit];
/*
输出位码数据到数码管
*/
led_lighten_bit++;
if(led_lighten_bit>=8)
led_lighten_bit=0;
/*8
位数码管全动态输出
*/
system_count++;
if(system_count>=500){
P30=~P30;
system_count = 0;
}
else if((system_count>=150)&&((P10==0)|
|(P11==0)||(P33==0)||(P34==0))){
//
有
按键按下快速闪烁
P30 = ~P30;
system_count =
0;
}
add_count++;
if(add_count>=speed){
add_count = 0;