12864为串行接法。AD0~AD4接的5V电源。
AD5~AD7接的GND。
STC15W408AS 自带8路10位AD
程序只使用了高八位。量程为255.
程序里面含10位AD采集。1024。
代码已注释。
新手上路。有错误还请斧正。
制作出来的实物图如下:
单片机源程序如下:
#include #include"intrins.h" #define uchar unsigned char; #define uint unsigned int; uchar a1,b1; //接收高八位,低八位 uint ad1; //用于接收10位AD数据 #define ADC_POWER 0X80; // 上电状态 #define ADC_FLAG 0x10; // FLAG=1,结束转换。ADC_FLAG:A/D转换结束标志位 #define ADC_START 0X08; // START=1,开始转换。 #define ADC_SPEEDLL 0X00; //540个时钟 #define ADC_SPEEDL 0X20; //360个时钟 #define ADC_SPEEDH 0X40; //180个时钟 #define ADC_SPEEDHH 0X60;//90个时钟 /*12864显示*/ unsigned char tab[]= {"AD1: AD2: "}; unsigned char tab1[]={"AD3: AD4: "}; unsigned char tab2[]={"AD5: AD6: "}; unsigned char tab3[]={"AD7: AD8: "}; uchar num[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0~9 sbit rw=P2^6; //12864 input sbit e=P2^7; //12864 clock uint ADC_data; //高八位数据 void chushihua(); //12864初始化 void zhiling(unsigned char zhiling); void shuru(unsigned char n); void shuju(unsigned char shuju); void guding(); void ADC_init(); uchar ADC_P(unsigned char ch); void delay(unsigned char x) { while(x--); } void main() { TMOD=0X11; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TR0=1; chushihua();//12864初始化程序 ADC_init(); //ADC初始化程序 while(1) { ADC_data=ADC_P(0);//ad通道1 delay(5); tab[4]=num[ADC_data/1000]; delay(5); tab[5]=num[ADC_data%1000/100]; delay(5); tab[6]=num[ADC_data%100/10]; delay(5); tab[7]=num[ADC_data%10]; ADC_data=ADC_P(1);//ad通道2 delay(5); tab[12]=num[ADC_data/1000]; delay(5); tab[13]=num[ADC_data%1000/100]; delay(5); tab[14]=num[ADC_data%100/10]; delay(5); tab[15]=num[ADC_data%10]; ADC_data=ADC_P(2);//ad通道3 delay(5); tab1[4]=num[ADC_data/1000]; delay(5); tab1[5]=num[ADC_data%1000/100]; delay(5); tab1[6]=num[ADC_data%100/10]; delay(5); tab1[7]=num[ADC_data%10]; ADC_data=ADC_P(3);//ad通道4 delay(5); tab1[12]=num[ADC_data/1000]; delay(5); tab1[13]=num[ADC_data%1000/100]; delay(5); tab1[14]=num[ADC_data%100/10]; delay(5); tab1[15]=num[ADC_data%10]; ADC_data=ADC_P(4);//ad通道5 delay(5); tab2[4]=num[ADC_data/1000]; delay(5); tab2[5]=num[ADC_data%1000/100]; delay(5); tab2[6]=num[ADC_data%100/10]; delay(5); tab2[7]=num[ADC_data%10]; ADC_data=ADC_P(5);//ad通道6 delay(5); tab2[12]=num[ADC_data/1000]; delay(5); tab2[13]=num[ADC_data%1000/100]; delay(5); tab2[14]=num[ADC_data%100/10]; delay(5); tab2[15]=num[ADC_data%10]; ADC_data=ADC_P(6);//ad通道7 delay(5); tab3[4]=num[ADC_data%1000/100]; delay(5); tab3[5]=num[ADC_data%1000/100]; delay(5); tab3[6]=num[ADC_data%100/10]; delay(5); tab3[7]=num[ADC_data%10]; ADC_data=ADC_P(7);//ad通道8 delay(5); tab3[12]=num[ADC_data/1000]; delay(5); tab3[13]=num[ADC_data%1000/100]; delay(5); tab3[14]=num[ADC_data%100/10]; delay(5); tab3[15]=num[ADC_data%10]; guding(); } } /**************** *以下关于ADC *****************/ void ADC_init() //adc初始化 { P1ASF=0XFF; //设置P1为ADC采集 ADC_RES=0; //清除高八位结果寄存器 ADC_CONTR=0XE0; //ADC上电 A/D转换周期90个时钟周期 delay(5); } uchar ADC_P(unsigned char ch) //ADC处理函数 { ADC_CONTR&=~ADC_FLAG; //关闭标志位 ADC_CONTR=0X80|0X00|0X08|ch; _nop_();_nop_();_nop_();_nop_(); while(!(ADC_CONTR&0x10));//等待ADC转换完成 return ADC_RES; //返回ADC结果 8位AD /* ADC_CONTR &= !ADC_FLAG; //清除ADC中断标志 delay(30); ADC_CONTR=0x80|0x00|0x08|0x00; a1=ADC_RES; //高8位 b1=ADC_RESL; //低8位 delay(60); // ADC_data=(a1<<2)|(b1>>6); //10AD */ } /************************* * * *以下12864相关子函数 * *************************/ void shuru(unsigned char n) { unsigned char a; for(a=0;a<8;a++) { e=0;
上一篇:Sdcc编译环境下中断函数的编写
下一篇:STC15F2K60S2单片机数字电压表制作(不用外围A/D换换)
推荐阅读
史海拾趣
随着ETIC的产品在市场上逐渐获得认可,公司面临着市场拓展的挑战。为了扩大市场份额,ETIC决定进入国际市场。他们首先选择了亚洲市场作为突破口,通过深入了解当地市场需求和竞争环境,制定了一系列有针对性的营销策略。经过几年的努力,ETIC成功地在亚洲市场建立了稳定的客户基础,并逐渐将业务拓展到了欧洲和北美市场。
在市场竞争日益激烈的情况下,ETIC意识到品质管理对于公司的重要性。为了提升产品质量和客户满意度,公司建立了一套完善的品质管理体系,从原材料采购到产品生产、检验和售后服务等各个环节都进行了严格的质量控制。同时,ETIC还积极引入先进的生产设备和工艺技术,不断提高生产效率和产品质量。这些努力使ETIC的产品在市场上获得了良好的口碑和广泛的认可。
随着国内市场的逐渐饱和,AVA电子开始将目光投向国际市场。公司制定了详细的国际化战略,包括拓展海外市场、建立海外销售渠道、加强与国际同行的合作等。AVA电子积极参加国际性的行业展会和论坛,与国际客户建立了广泛的联系;同时,公司还加大了对海外市场的宣传力度,提高了品牌在国际市场的知名度。这些举措不仅为公司带来了更多的商机,也提升了公司在国际市场的地位。
请注意,以上故事是基于AVA电子的公开信息和一般电子科技公司的发展规律进行创作的,并非真实事件。如果需要更具体、更详细的故事,建议直接查阅AVA电子的官方资料或相关新闻报道。
品质是企业的生命线。Amveco公司深知这一点,因此始终将品质管理放在企业发展的首位。公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重品牌建设,通过广告宣传、参加行业会议等方式提升品牌知名度和美誉度。这些努力使得Amveco公司的环形变压器在市场上树立了良好的品牌形象。
Boundary Devices公司成立于2003年,总部位于美国亚利桑那州。创立之初,公司便专注于嵌入式系统硬件的开发与生产,凭借对技术的深刻理解和市场需求的敏锐洞察,Boundary Devices迅速在行业中崭露头角。其推出的Boundary Devices插座和适配器,因其兼容性强、性能稳定而备受市场青睐。同时,公司与NXP/Freescale建立了紧密的合作关系,共同推进i.MX系列处理器的应用与发展,为公司的后续发展奠定了坚实的基础。
逆变电源的控制难度与输入输出电压有很大的关系,输入或输出电压的范围越宽,PID电路的控制参数计算就越显得复杂,而在整个调节范围内出现自激的可能性也越大。本逆变充电机不仅输出电压和电流具有很大的调节范围(50~260V、0~40A),而且还要保证 ...… 查看全部问答∨ |
科胜讯系统(Conexant Systems)将向德州仪器支付7,000万美元,以了结双方关于ADSL技术专利权和授权协议的纠纷。双方的纠纷可以追溯到2004年Conexant收购GlobespanVirata。根据协议,德州仪器将给予科胜讯使用与DSL技术相关的基本专利的授权。此 ...… 查看全部问答∨ |
此软件为Protel99se在鼠标操作方面的作了补充, 使您能更好的使用Protel99se电路板设计软件, 适合普通三键鼠标和滚轮鼠标。 此软件非常好用,在原理图上你就可以用滚轮放大缩小了。 希望大家喜欢。… 查看全部问答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 介绍同步整流的工作原理,选择与之适应的有源钳位正激励变换器并对其工作进行分析。有需要的可以看下。 … 查看全部问答∨ |
这两本书对VGA控制器有详细的说明,有图形和字符显示方式一本是 FPGA Prototyping by Verilog Examples 还有FPGA Prototyping by VHDL Examples 还有一本是Rapid Prototyping of Digital Systems… 查看全部问答∨ |
fedora11下,打开终端运行make后,提示错误:stream.h找不到那个目录或文件; 不知道怎么解决? 也想知道stream.h存放在哪里? 谢谢大虾们 … 查看全部问答∨ |
extern POBJECT_TYPE IoDriverObjectType链接错误? 根据某位著名的驱动大师的说法:IoDriverObjectType是一个全局变量,只需要声明即可使用。但是声明后提示错误: extern POBJECT_TYPE IoDriverObjectType; 1>driver2005.obj() : error LNK2001: unresolved external symbol "struct _OBJECT_ ...… 查看全部问答∨ |
|
使用的是华恒AT91ARM9200的板子,测试flash读写时出的问题。在修改/devices/mtd/maps/at91arm9200加入新的分区后,open成功,第一次调用write()可以成功,但之后再调用read()则不成功,并会显示"waiting for chip to be ready timed out in read. ...… 查看全部问答∨ |