完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
题目:通过串口向单片机发送十进制数字,将数字十六进制显示在数码管上
我写了下面的程序,可运行的时候第一位数码管永远显示数字3,不知道错在哪,求大佬指点,非常感谢! #include ***it wela=P2^7; ***it dula=P2^6; unsigned char x, y, z, n, r, s, flag; unsigned char data a[6]; unsigned int m; unsigned char code tablewei[]= {0xfe,0xfd,0xfb, 0xf7,0xef,0xdf}; unsigned char code tableduan[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; unsigned char transform(unsigned int m); void display(); void delay(unsigned char z); void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=1; EA=1; ES=1; transform(m); while(1) { if(flag==1) { flag=0; ES=0; SBUF=m; while(!ti);//发送完TI会置1 TI=0;//发送中断标志位,软件清零 ES=1; } display(); } } void ser() interrupt 4 { RI=0; m=SBUF; flag=1; } unsigned char transform(unsigned int m) { unsigned char i; i=0; s=0; while(m!=0) { n=m/16; r=m%16; s=s++; a=r; i++; m=n; } return s; } void display() { unsigned char i; s=transform(m); for(i=0;i wela=1; P0=tablewei; wela=0; P0=0x00; dula=1; P0=tableduan[a[s-i-1]]; dula=0; delay(5); } } void delay(unsigned char z) { for(x=110;x>0;x--) for(y=z;y>0;y--); } |
|
相关推荐
1个回答
|
|
怎么连的数码管呢?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 18:59 , Processed in 0.651018 second(s), Total 67, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号