|
发表于 2018-5-25 18:09:23
|
显示全部楼层
lxlxl 发表于 2011-11-27 22:26
uchar code zk[20]={235,136,179,186,216,122,123,168,251,250}; //字库
uchar disp[7]={235, ...
我也研究过XJW01老师的这个程序,对你提出的疑问我想说说我的理解.ZK[20]存放的是字形的段码数据,你说的235对应字形0是对的,后面是1,2,3,4,5,6,7,8,9的字形段码.235十进制数对应二进制数11101011你说的也对.至于你说"既非阴码也非阳码",你是按照日字形数码管的a,b,c,d,e,f,g,h来看的.
但是看电路图就可以知道,单片机的p0.0脚接在日字形数码管的左下一竖上,p0.1脚接在日字形的底下一横上,......也就是说p0口的128,64,32,16,8,4,2,1这8位
刚好和作者画的日字形数码管笔画对应值一致.日字当中的一横接在p0.4脚,因此要显示负号"一"时,程序里是令disp[6]+=16.如此接法就成了你说的既非阴,又
非阳了.
但是,作者用的是共阳数码管啊,被点亮的笔画段应该是低电平啊,怎么回事?原来程序后面显示时,对disp是按位取反的:p0=~disp[dispN].不知道我的肤浅认识对你可有帮助?坛里对程序不完全懂的肯定不少,我希望高手们能写出对程序的研究,让我们这些菜鸟多少可以学到一些东西! |
|