#include
IC.h>
__CONFIG(0x1832);
const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90}; //定义常数0-9的数据表格
volatile unsigned char result=0,temp=0,f=0;
volatile unsigned int total=0,ge=0,shi=0,bai=0,qian=0,c=1;
void delay(); //delay函数申明
void init(); //I/O口初始化函数申明
void sCAN(); //按键扫描程序申明
void display(unsigned int x); //显示函数申明
//---------------------------------------------------
//主程序
void main()
{
init(); //调用初始化子程序
while(1) //循环工作
{
scan();
display(result);
}
}
//---------------------------------------------------
//初始化函数
void init()
{
ADCON1=0X07; //设置A口为普通I/O口
TRISA=0B00000000; //设置A口高2位为输出,低4位为输入
TRISC=0B11110000; //设置C口高4位为输入,低4位为输出
TRISD=0X00; //设置D口为输出
PORTA=0XFF;
PORTD=0XFF; //先清除所有显示
}
//-----------------------------------------------3---
//按键扫描程序
void scan(){
PORTC=0xff;
RC3=0; { if(RC4==0) result=1; if(RC5==0) result=2; if(RC6==0) result=3; if(RC7==0) result=4;}
PORTC=0xff;
RC2=0; { if(RC4==0) result=5; if(RC5==0) result=6; if(RC6==0) result=7; if(RC7==0) result=8;}
PORTC=0xff;
RC1=0; { if(RC4==0) result=9; if(RC5==0) result=10; if(RC6==0) result=11; if(RC7==0) result=12;}
PORTC=0xff;
RC0=0; { if(RC4==0) result=13; if(RC5==0) result=14; if(RC6==0) result=15; if(RC7==0) result=16;}
// if(temp!=result) {f++; if(f==1) qian=1000*result; if(f==2) bai=100*result; if(f==3) shi=10*result; if(f==4) ge=result; } if(f==4) while(1){total=ge+shi+bai+qian; display(total); }
}
//----------------------------------------------------------
//显示程序
void display(unsigned int x) //电压显示函数
{
unsigned int g,s,b,q; //定义6个临时变量
// temp=result; c=1;
q=x/1000;
b=x%1000/100; //求显示的千位
s=x%100/10; //求显示的百位
g=x%10; //求显示的十位
PORTD=TABLE[q]; //显示一个小数点
PORTA=0B11111110; //RA0输出低电平,点亮千位显示
delay(1);
PORTD=TABLE[b]; //查表得百位显示的代码
PORTA=0B11111101; //RA1输出低电平,点亮百位显示
delay(1); //延时一定时间,保证显示亮度
PORTD=TABLE[s]; //查表得十位显示的代码
PORTA=0B11111011; //RA2输出低电平,点亮十位显示
delay(1); //延时一定时间,保证亮度
PORTD=TABLE[g]; //查表得十位显示的代码
PORTA=0B11110111; //RA3输出低电平,点亮十位显示
delay(1); //延时一定时间,保证亮度
PORTD=0xff;
}
//------------------------------------------------------------------
//延时程序
void delay() //延时程序
{
int i; //定义整形变量
for(i=0x100;i--;); //延时
}
上一篇:LCD1602 C程序
下一篇:PIC单片机LED流水灯程序
推荐阅读最新更新时间:2024-03-16 15:48