单片机软件:
单片机软件主要由以下几个部分组成:初始化程序,显示程序,键盘输入程序,串行接收程序,串行发送程序。
程序采用C语言,简单明了,经过PICC编译通过。
全部程序如下:
#include
//预定义
#define uch unsigned char
//显示用码表
const uch shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xff};
//变量
int data,temp1,temp2,temp3,temp;
uch flag,keylock;
uch point,buffer[3];
//初始化
void init()
{
TRISB=0;
PORTB=0;
TRISC=0;
PORTC=0;
keylock=1;//初始化键盘按键标志位,用于锁定按键
//USART部件初始化
SPBRG=0x19;//设置波特率为9600bps
TXSTA=0x04;//选择异步高速8位数据传输模式
RCSTA=0x80;//允许串行端口工作
TRISC=0x80;//设置为高阻态,防止干扰
TXEN=1;//发送允许
CREN=1;//接收允许
PEIE=1; //开放外设中断
RCIE=1; //开放串行口中断
ei(); //开放总中断
}
//显示需要的延时
void delay()
{
int i;
for(i=0;i《1000;i++);
}
//发送子程序
void send_usart()
{
uch i;
for(i=0;i《3;i++)//每次发3个数据
{
if(i==0)TXREG=data/100+0x30;//求得百位
if(i==1)TXREG=data%100/10+0x30; //求得十位
if(i==2)TXREG=data%10+0x30; //求得个位
while(1)
{
if(TXIF==1)break;//等待发送完成
}
}
}
//中断接收子程序
void interrupt receive(void)
{
if(point《3)//是否已经接收到3个数据
buffer[point++]=RCREG-48;//没有,继续接收
else point=0;//是,指针复位
data=buffer[0]*100+buffer[1]*10+buffer[2];//组合成三位数
}
//数码管显示
void display(int dis_data)
{
int dis_data_ge,dis_data_shi,dis_data_bai;
dis_data_ge =dis_data%10;//个位
dis_data_shi=dis_data%100/10;//十位
dis_data_bai=dis_data/100; //百位
if(dis_data==0)//若数据为0,只显示1位
{
dis_data_ge=0;
dis_data_shi=10;
dis_data_bai=10;
}
if(dis_data《10)//若数据小于10,则十位与百位关闭显示
{
dis_data_shi=10;
dis_data_bai=10;
}
if(dis_data《100)//若数据小于100,则只显示两位
{
dis_data_bai=10;
}
RC0=0;
RC1=0;
RC2=1;
PORTB=shu[dis_data_ge];//个位送显
delay();
RC0=0;
RC2=0;
RC1=1;
PORTB=shu[dis_data_shi];//十位送显