void point(uchar x,uchar y)
{
uchar y1,hang,lie,msb_data,lsb_data,temp=0x01
if(y1!=y)
{
msb_data=0
lsb_data=0
}
y1=y
if(y<32)
{
hang=0x80+y
lie=0x80
}
if(y>31)
{
hang=0x80+y-32
lie=0x88
}
if(y>63)//return
{
lcm_com(0x80)
_nop_()
hanzi("温度超出显示范围")
while(1)
flash()
}
lie=lie+x/16
if(x%16==0)
{
msb_data=0
lsb_data=0
}
if(x%16<8)
{
msb_data=msb_data|(temp<<(7-x%16))
lsb_data=0x00|lsb_data
}//保留以前的数据,把第x个点亮
if(x%16==8)
{
msb_data=msb_data|0x00
lsb_data=lsb_data|0x80
}
if(x%16>8)大于24小于32
{
msb_data=msb_data|0x00
lsb_data=lsb_data|(temp<<(15-x%16))
}
lcm_com(0x34)//扩充指令集
lcm_com(hang)
lcm_com(lie)
lcm_dat(msb_data)
lcm_dat(lsb_data)
lcm_com(0x36)//绘图显示开
}
楼主,我给你一个代码,你参考一下和验证一下!用51单片机做的简单计算器的程序.
/**********************按键处理*******************/
void KeyDeal(unsigned char Key)
{
if(Key!=0) //判断 有无按键按下。
{
switch(Key)
{ //以下定义0~9的数字键。
case 0x11: K=0break
case 0x21: K=1break
case 0x41: K=2break
case 0x81: K=3break
case 0x12: K=4break
case 0x22: K=5break
case 0x42: K=6break
case 0x82: K=7break
case 0x14: K=8break
case 0x24: K=9break
//以下+。-,*,/ 键
case 0x44: K=10break //加
case 0x84: K=11break //减
case 0x18: K=12break //乘
case 0x28: K=13break //除
case 0x48: K=14break //等于
case 0x88: K=15break //清除
default: break
}
if(K<10) //数字键
{
d[2]=d[1]
d[1]=d[0]
d[0]=K
c[2]=c[1]
c[1]=c[0]
c[0]=b[K]
//以上数组数据赋值是保证数字按键入顺序移位。
}
if(K==10) //加
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=1
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}
if(K==11)//减
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=2
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}
if(K==12)//乘
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=3
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}
if(K==13)//除
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=4
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}
if(K==14) //此处是按 =键
{ n=d[2]*100+d[1]*10+d[0]
if (p==1) shu=m+n
if (p==2) shu=m-n
if (p==3) shu=m*n
if (p==4) shu=m/n
c[4]=b[shu/10000]
c[3]=b[shu%10000/1000]
c[2]=b[shu%1000/100]
c[1]=b[shu%100/10]
c[0]=b[shu%10] //C[]存的是 计算结果 。
}
if(K==15) // 此处是按 清除键
{d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0
shu=0
c[4]=b[shu/10000]
c[3]=b[shu%10000/1000]
c[2]=b[shu%1000/100]
c[1]=b[shu%100/10]
c[0]=b[shu%10]}
}
}
void main()
{
while(1)
{
Key = Keycan()//键盘扫描获取一次按键的编码0x11-0x88
KeyDeal(Key) //对扫描到的键盘编码进行转换处理,变成数据键盘0-
display()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)