完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
我需要用单片机实现1khz,1V的幅值的正弦信号峰峰值的数码管显示,请问这个程序怎么编写啊!
这是我写的,有什么问题吗!~望高手们帮忙解决。谢谢~!
|
|
相关推荐
2个回答
|
|
|
#include
#define UCHAR unsigned char #define UINT unsigned int __CONFIG(0X3B31); UINT aa; UINT max,min; const UCHAR table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x39,0x5e,0x79,0x71};//数码表 void DELAY_ms(UINT x) { UINT a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void Init() { TRISA=0X01; TRISD=0; PORTA=0; PORTD=0; ADCON0=0X41; ADCON1=0X8E; //未开AD采样通道 即ANSEL=? DELAY_ms(10); } UINT AD_GET() //AD采样函数写的有问题 建议再查查手册。 { UINT ADVAL,i=0; GO=1; ADVAL=ADRESH; ADVAL=ADVAL<<8|ADRESL; aa=ADVAL; GO=0; } UINT JISUAN() { UINT i,hh; i=0;max=0;min=0; while(i<2500) //采样这么多次,能知道占用多少机器及周期吗? { aa=AD_GET(); if(aa>max) {max=aa;} if(aa } hh=max-min; return hh; } void disp(UCHAR num1, UCHAR num2,UCHAR num3,UCHAR num4) { PORTD=table[num1]; PORTA=0X20; DELAY_ms(2); PORTD=table[num2]; PORTA=0X10; DELAY_ms(2); PORTD=table[num3]; PORTA=0X08; DELAY_ms(2); PORTD=table[num4]; PORTA=0X04; DELAY_ms(2); } void main() { UCHAR a1,a2,a3,a4; UINT lednum; Init(); while(1) { lednum=JISUAN(); //占用多久时间? a1=lednum/1000; a2=lednum%1000/100; a3=lednum%100/10; a4=lednum%10; disp(a1,a2,a3,a4); //建议用定时器刷屏。 } } |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
112 浏览 0 评论
219 浏览 0 评论
721 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
702 浏览 0 评论
有人有STM8H1K08T连接TM1650的源码吗,可以直接使用的那种,我的代码在烧录之后数码管一直处于熄灭状态
1036 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16966 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-10 01:27 , Processed in 0.907189 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4362