单片机430 AD转换
#include "msp430g2553.h"
char a[6] =" ";
int da;
int j ;
double c,data;
void delay(int t)
{
int s=500;
for(;t>0;t--)
{
for(;s>0;s--)
{
;;
}
}
}
void write_com(char com)
{
P1OUT&=~(1<<3);//rS=0 p1.3复位赋值为0--0=输入指令,1=输入数据
P1OUT&=~(1<<6);//RW=0 p1.6控制为0--0=向lcd写入指令或数据,1=从lcd读取数据
P1OUT&=~(1<<4);// p1.4输出赋值为0--
P1OUT&=~(1<<5);//en=0 p1.5时能赋值为0--1=读取信息,1->0下降沿执行指令
P1OUT&=~(1<<1);//
delay(8);
P2OUT=com;
delay(8);
P1OUT|=(1<<5);//en=1;
delay(8);
P1OUT&=~(1<<5);//en=0;
}
void write_data(char dt)
{
P1OUT|=(1<<3);//rs=1;
P1OUT&=~(1<<6);//rw=0;
P1OUT&=~(1<<5);//en=0;
delay(8);
P2OUT=dt;
delay(8);
P1OUT|=(1<<5);//en=1;
delay(8);
P1OUT&=~(1<<5);//en=0;
}
void initial_lcd(void)
{
delay(20);
write_com(0x38); // @@@数据总线为8位 显示2行 5*10点阵每位
delay(15);
write_com(0x0c); //@@@@@显示功能打开 无光标 光标闪烁
delay(15);
write_com(0x06); //@@@@写入数据后光标右移
delay(15);
write_com(0x01); //@@@@@清屏
}
void LCD_Disp(char x,char y,char *character)
{
char xtemp;
switch(x)
{
case 0:xtemp=0x80+y;break;
case 1:xtemp=0xc0+y;break;
default:break;
}
write_com(xtemp);
while(*character!=0)
{
write_data(*character);
character++;
}
}
void main(void)
{
char *pa;
pa=a;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P2SEL=0x00;//设置P2口为通用I/O口
//P1SEL=0xff;//0001 0000
P2DIR |= 0xff; // Set P1.0 to output direction
P1DIR |= 0x68;//0110 1000 p1.3 1.5 1.6 作为LCD使能复位控制输入 P1.4作为模拟基准电压输入
initial_lcd();//LCD初始化
ADC10CTL0 = SREF_0 + ADC10SHT_2 + ADC10ON + ADC10IE; //不知道SREF2默认的是不是0,不写表示VR_ =AVSS=0?
//使用外部电压源作为参考电压 P1.4作为外部基准电压输入 因为P1.4现在作为输出控制LCD1602 所以还需要修改
__enable_interrupt(); // Enable interrupts.
TACCR0 = 30; // Delay to allow Ref to settle
TACCTL0 |= CCIE; // Compare-mode interrupt.
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
LPM0; // Wait for delay.
TACCTL0 &= ~CCIE; // Disable timer Interrupt
__disable_interrupt();
ADC10CTL1 = INCH_1; // input A1
ADC10AE0 |= 0x02; // PA.1 ADC option select
for (;;)
{
ADC10CTL0 |= ENC + ADC10SC;
// Sampling and conversion start采样和转换开始
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
da = ADC10MEM;
data = ((double)da/1023)*4.0; //这里选择的外部参考电压是4.0V 如果改变需要修改到相应的值
c =data;
a[0]=((int)c%10+0x30);
a[1]=0x2e;
a[2]=((int)(c*10)%10+0x30);
a[3]=((int)(c*100)%10+0x30);
a[4]=((int)(c*1000)%10+0x30);
a[5]='\0';
for(j = 0;j <= 5000;j++) //同一个转换数据显示一段时间,达到稳定显示的作用
LCD_Disp( 0, 5 ,pa);
delay(5);
LCD_Disp( 0, 0,"Vol=");
LCD_Disp( 1, 0,"Fuck you!!!");
}
}
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
#prag
ma vector=TIMER0_A0_VECTOR
__interrupt void ta0_isr(void)
{
TACTL = 0;
LPM0_EXIT; // Exit LPM0 on return
}
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




