完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本列子采用1602显示转换的电压值,液晶程序就不再重复了,只是给出主要的程序。
#include "lcd1602.h" uchar d[16]="The Volt1: . V"; uchar d1[16]="The Volt0: . V"; uchar table_num[]={"0123456789"}; uint a[8],b[2]; uint i,j,ad1,ad0,real; void display() { delay(250); uint ptr[4]; ad1=(int)(b[1]);//根据需要,可以更改这里的数值,将量程调到0~1024 ad0=(int)(b[2]);//根据需要,可以更改这里的数值,将量程调到0~1024 //通道A1的值 real=(int)((3.3*ad1)/1023*1000);//扩大1000倍 ptr[0] = real / 1000; ptr[1] = (real - ptr[0]*1000)/100; ptr[2] = (real - ptr[0]*1000 - ptr[1]*100)/10; ptr[3] = (real - ptr[0]*1000 - ptr[1]*100 - ptr[2]*10); d[10]=table_num[ptr[0]]; for(i=1;i<4;i++) d[i+11]=table_num[ptr]; display_string(d,0xc0); //通道A0的值 real=(int)((3.3*ad0)/1023*1000);//扩大1000倍 ptr[0] = real / 1000; ptr[1] = (real - ptr[0]*1000)/100; ptr[2] = (real - ptr[0]*1000 - ptr[1]*100)/10; ptr[3] = (real - ptr[0]*1000 - ptr[1]*100 - ptr[2]*10); d1[10]=table_num[ptr[0]]; for(i=1;i<4;i++) d1[i+11]=table_num[ptr]; display_string(d1,0x80); } void main() { WDTCTL = WDTPW + WDTHOLD; //主系统时钟切换为外部高速晶振 if (CALBC1_8MHZ == 0xFF || CALDCO_8MHZ == 0xFF) { while(1); // If calibration constants erased, trap CPU!! } // Configure Basic Clock BCSCTL1 = CALBC1_8MHZ; // Set range DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation*/ P2SEL=0x00;//P2为I/O模式 P2DIR|=0xff;//P2为LCD输出 P1SEL|=BIT1+BIT2+BIT0;//P1.1和P1.2设置为ADC功能A1和A2 ADC10CTL1|=CONSEQ_3+INCH_2+INCH_0+INCH_1;//序列通道多次转换+最大通道为A2 ADC10CTL0|=ADC10SHT_2+MSC+ADC10ON+ADC10IE; ADC10DTC1|=0x0C;//一共采样12次 ADC10AE0|=BIT0+BIT1+BIT3;//打开A0和A1的模拟输入通道 init_lcd();//lcd初始化 while(1) { ADC10CTL0&=~ENC;//关闭采样使能 while(ADC10CTL1&BUSY);//检测AD是否繁忙 ADC10CTL0|=ENC+ADC10SC;//启动ADC ADC10SA=(unsigned int)a;//获取a[]的首地址。首先对A1、A0采样,放入a[0]和a[1]中。再对A1、A0采样,放入a[2]和a[3]中,如此循环下去。 _BIS_SR(LPM0_bits+GIE);//低功耗模式0,开中断 for(i=0;i<2;i++) { b=0; for(j=0;j<6;j++) b+=a[i+j*2];//b[0]=a[偶数]相加之和,b[1]=a[奇数]相加之和,每个b有16组数 } for(i=0;i<2;i++) { b=b/6;//对b[0],b[1],B[2]求平均值 _NOP(); } display();//lcd显示 } } #pragma vector=ADC10_VECTOR __interrupt void ADC(void) { LPM0_EXIT;//退出低功耗模式 } |
|
|
|
只有小组成员才能发言,加入小组>>
请问一个迭代法图形二值化的程序代码把宽改成240之后整个屏幕不显示是什么原因?
2647 浏览 0 评论
2636 浏览 1 评论
1870 浏览 1 评论
2027 浏览 2 评论
2591 浏览 2 评论
681浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 11:06 , Processed in 0.769166 second(s), Total 71, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号