ad9850基于51单片机1602液晶内容摘要:

0000)/100000。 g = (Frequency_Out % 10000000)/1000000。 h = (Frequency_Out % 100000000)/10000000。 } display_data() //显示数据子程序 { Qu_Chu_Shu_Ma_Ge_Wei()。 //取出要显示的每一位数据; display_string(1,0,LcdBuf1)。 //显示第一行,从第 2个位置开始 WriteCommandLcd(0x85)。 //显示数值的话,用其真实的地址,如 0x83等, WriteDataLcd(0x30+h)。 //如果要显示字符的话,暂时用 x、 y坐标的方式 WriteDataLcd(0x30+g)。 //以下都是送显示数据; WriteDataLcd(0x30+f)。 WriteDataLcd(0x30+e)。 WriteDataLcd(0x30+d)。 WriteDataLcd(0x30+c)。 WriteDataLcd(0x30+b)。 WriteDataLcd(0x30+a)。 } scan_KEY(void) //键值处理子程序 { uchar key。 key=P1。 switch(key) { case 0xee: keyzhi=1。 break。 // 1110 1110 case 0xde: keyzhi=2。 break。 // 1101 1110 case 0xbe: keyzhi=3。 break。 // 1011 1110 case 0x7e:keyzhi=4。 break。 // 0111 1110 case 0xed: keyzhi=5。 break。 // 1110 1101 case 0xdd: keyzhi=6。 break。 // 1101 1101 case 0xbd: keyzhi=7。 break。 // 1011 1101 case 0x7d:keyzhi=8。 break。 // 0111 1101 case 0xeb: keyzhi=9。 break。 // 1110 1011 case 0xdb: keyzhi=10。 break。 // 1101 1011 case 0xbb: keyzhi=11。 break。 // 1011 1011 case 0x7b:keyzhi=12。 break。 // 0111 1011 case 0xe7: keyzhi=13。 break。 // 1110 0111 case 0xd7:keyzhi=14。 break。 // 1101 0111 case 0xb7: keyzhi=15。 break。 // 1011 0111 case 0x77:keyzhi=16。 break。 // 0111 0111 default:keyzhi=0。 break。 } return (keyzhi)。 } keychuli()//键盘扫描子程序 { uchar row,col。 P1=0xf0。 if((P1amp。 0xf0)!=0xf0) //判断有无按下 { delay(10)。 if((P1amp。 0xf0)!=0xf0) //再次判断 { row=0xfe。 //得到行 dat = scan_KEY()。 while((rowamp。 0x10)!=0) //用来判断是否移位过头 { P1=row。 if((P1amp。 0xf0)!=0xf0) { col=(P1amp。 0xf0)|0x0f。 //得到列 dat = scan_KEY()。 return(rowamp。 col)。 //得出列(高四位)+行(低四位) } else { row=row1|0x01。 //移位用于判断在哪行 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。