delay();
RC1=0;
RC2=0;
RC0=1;
PORTB=shu[dis_data_bai];//百位送显
delay();
}
//键盘(线反转法)
void presskey()
{
uch line,column,key;
TRISD=0x07;
PORTD=0xf0;
column=PORTD & 0x07;//取列码
TRISD=0xf0;
PORTD=0x0f;
line=PORTD&0xf0;//取行码
key=line|column;//合成键值
if(key==0)keylock=0;//保证每次只按一次键
if(keylock==0)
{
if(key!=0)keylock=1;
switch(key)//查找键值
{
case 0x11:temp=3;flag++;break;
case 0x12:temp=2;flag++;break;
case 0x14:temp=1;flag++;break;
case 0x21:temp=4;flag++;break;
case 0x22:temp=5;flag++;break;
case 0x24:temp=6;flag++;break;
case 0x41:temp=9;flag++;break;
case 0x42:temp=8;flag++;break;
case 0x44:temp=7;flag++;break;
case 0x82:temp=0;flag++;break;
case 0x81:flag=4;send_usart();break;//发送
case 0x84:flag=0;data=0;break;//清零键
}
}
if(flag==1)//第一次按键
{
if(temp==0)flag=0;//若按0,则忽略
temp1=temp;
data=temp1;
}
if(flag==2)//第二次按键
{
temp2=temp;
data=temp1*10+temp2;//原来的个位变成十位
}
if(flag==3)//第三次按键
{
temp3=temp;
data=temp1*100+temp2*10+temp3;//原来的十位变成百位
flag=4;//屏蔽按键
}
}
//主程序
main()
{
init();
while(1)
{
presskey();
display(data);
}
}
4. 计算机控制软件
上位机软件是用VB编写的,功能很简单,主要有发送和接收两个功能。软件的界面如图5所示。
软件主要有2个“TextBox”,3个按钮,和一些文本控件组成。
现把所有程序都贴出来:
Private Sub Cmdquit_Click()
i = MsgBox(“您要离开吗?”, vbQuestion Or vbYesNo, “温馨提示”)
If i = 6 Then
Shell “explorer.exe http://blog.163.com/wujieflash”
End
End If
End Sub
Private Sub Cmdsend_Click()
If Len(Text1.Text) = 1 Then MSComm1.Output = “0” + “0” + Text1.Text ‘不满3位补足3位再发送
If Len(Text1.Text) = 2 Then MSComm1.Output = “0” + Text1.Text
If Len(Text1.Text) = 3 Then MSComm1.Output = Text1.Text
End Sub
Private Sub cmdzero_Click()
Text2.Text = “”
Text1.Text = “”
End Sub
Private Sub Form_Load()
MSComm1.Settings = “9600,n,8,1” ’设置数据传输率和发送字符格式