MPS430F149单片机之_数码管显示按键计数值

产品有售淘宝店:
电子开发直销 https://www.360docs.net/doc/c31413361.html,
郑兴电子直销部 https://www.360docs.net/doc/c31413361.html,
诚信科技厂家直销https://www.360docs.net/doc/c31413361.html,
汇诚科技厂家直销https://www.360docs.net/doc/c31413361.html,

/*****************************************************************
连接P1.0口的按键控制数码管显示,按键的次数值
*****************************************************************/
#include //声明库
/********************************************************************
数据类型定义
*********************************************************************/
#define uchar unsigned char
#define uint unsigned int
/********************************************************************
数码管段码定义0123456789
*********************************************************************/
uchar Table[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//所需的段的位码
uchar wei[4]={0XEF,0XDF,0XBF,0X7F};//控制位
uint z,x,c,v, date=0; //定义数据类型
/**********************************************************************
延时函数程序,参数i 延时时间
**********************************************************************/
void DelayMS(uint i)
{
uint j;
for(;i!=0;i--)
{
for(j=200;j!=0;j--);
}
}
/**********************************************************************
按键函数
**********************************************************************/
void KEY()//按键函数名
{
if(!(P1IN&BIT0))//判断按键按下
{
DelayMS(100);//消抖延时
while(!(P1IN&BIT0));//判断按键松开
date++;//按键数值加1
}
}
/**********************************************************************
数码管动态扫描
*********************************************************************/
void Pre_Display()
{

/***********************数据转换*****************************/
z=date/1000; //求千位
x=date%1000/100;//求百位
c=date%100/10; //求十位
v=date%10; //求个位

P5OUT=wei[0]; //位控制
P4OUT=Table[z]; //显示千位
DelayMS(5); //延时
P5OUT=wei[1]; //位控制
P4OUT=Table[x]; //显示百位
DelayMS(5); //延时
P5OUT=wei[2]; //位控制
P4OUT=Table[c]; //显示十位
DelayMS(5); //延时
P5OUT=wei[3]; //位控制
P4OUT=Table[v]; //显示个位
DelayMS(5); //延时
}
/********************************************************************
I/O口初始化
*********************************************************************/
void Init_IO(void)//初始化I/O
{
P1DIR&=~BIT0;
//设置P4口为输出
P4DIR=0XFF;
//设置P5口为输出
P5DIR=0XFF;
}
/***

*****************************************************************
主函数
*********************************************************************/
void main(void)//主函数
{
Init_IO();//初始化I/O
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

while(1)//无限循环
{
KEY();//数码管显示数值
Pre_Display();//数码管扫描显示函数
}
}
/********************************************************************
结 束
*********************************************************************/

相关文档
最新文档