【51单片机4位数循环小数位移数值位移】2023-6-9

张开发
2026/5/30 13:26:53 15 分钟阅读
【51单片机4位数循环小数位移数值位移】2023-6-9
缘由https://ask.csdn.net/questions/7960415/54230766大概就是在矩阵键盘输入4个数字到数码管上然后数字再按照一定的规律进行动态变化。可有偿代写难度不大stc89c52的板子#include reg52.h unsigned char code ShuMaGuan[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0X80,118,121,56,63};//0~9隐.HELO unsigned char code JZBH[]{231,215,183,119,235,219,187,123,237,221,189,125,238,222,190,126};//矩阵按要求编号15确定16清零 unsigned char duli16() {//缘由 unsigned char jz255; static unsigned char Ys0; P1239; if(P1!239Ys0){jzP1;while(P1!239);} else P1223; if(P1!223Ys0){jzP1;while(P1!223);} else P1191; if(P1!191Ys0){jzP1;while(P1!191);} else P1127; if(P1!127Ys0){jzP1;while(P1!127);} P1 255; return jz; } unsigned char WX4FCZ(unsigned char* a, unsigned char n, unsigned char x) { unsigned char z n / 2, j 0; --n; xf:if (n - j) { if (a[j] x)return j; else if (z - j ja[z - j] x)return z - j; else if (z j na[z j] x)return z j; else if (n - j ja[n - j] x)return n - j; else j; goto xf; } if (a[j] x)return j; } void main() {//缘由https://ask.csdn.net/questions/7960415/54230766 unsigned char my0,ys0,wei0,x0,jz0,sz0,qy0,xs0; unsigned int sz40;bit qd0; while(1) { jzduli16(); if(jz!255) {//获取键盘值合成 szjz; szWX4FCZ(JZBH,16,sz); if(sz0sz9)sz4sz4*10sz; if(sz14)qd1;//确定 if(sz15)qdsz40;//清零 } P20; if(wei0)wei; P0~wei;wei*2; P2ShuMaGuan[(x7?sz4%10:x6?sz4/10%10:x5?sz4/100%10:x4?sz4/1000:10)] (xs1x6||xs2x5||xs3x4?128:0); if(x7)x0; if(qdmy0)if(ys10) {if(xs3){qysz4/1000;sz4%1000;sz4sz4*10qy;xs0;}ys0;} } }

更多文章