完善资料让更多小伙伴认识你,还能领取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); //建议用定时器刷屏。 } } |
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】简介、环境搭建、工程测试
177 浏览 0 评论
312 浏览 0 评论
imx6ull裸机编程,使用宏定义无法驱动,使用指针就可以驱动
691 浏览 1 评论
《DNK210使用指南 -CanMV版 V1.0》第三十二章 音频FFT实验
384 浏览 0 评论
飞凌嵌入式ElfBoard EL 1板卡-i2c与从设备通讯编程示例之i2c-tools工具使用
1284 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11620 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 12:33 , Processed in 0.500769 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号