转换示例程序

上传人:桔**** 文档编号:512129412 上传时间:2024-01-23 格式:DOC 页数:8 大小:30KB
返回 下载 相关 举报
转换示例程序_第1页
第1页 / 共8页
转换示例程序_第2页
第2页 / 共8页
转换示例程序_第3页
第3页 / 共8页
转换示例程序_第4页
第4页 / 共8页
转换示例程序_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《转换示例程序》由会员分享,可在线阅读,更多相关《转换示例程序(8页珍藏版)》请在金锄头文库上搜索。

1、STC12C5A60S2 AD转换示例程序#include #define uint unsigned int #define uchar unsigned char sbit CS=P20; /LCD12864串行通信片选 sbit SID=P21; /LCD12864串行通信数据口 sbit SCLK=P22; /LCD12864串行通信同步时钟信号 sbit PSB=P25; /LCD12864并/串选择:H并行 L串行 unsigned int temp1,sh1,ge1,n1,m1; unsigned char ad_result_data10; /AD转换高八位 unsigned

2、char ad_result_low210; /AD转换低八位 unsigned char ad_result_total10; /AD转换总十位 unsigned char ad_average_result; /AD转换十次的平均值 unsigned char Ain,Vin; unsigned char b,t,R; char tp=0; unsigned char code ma16=0xb5,0xe7,0xd1,0xb9,0xa1,0xc3; /电压: unsigned char code ma2=.; uchar code disp1=提示: 按1 键进入; uchar code

3、disp2=功能选择界面. ; unsigned char code num0=0xa3,0xb0; unsigned char code num1=0xa3,0xb1; unsigned char code num2=0xa3,0xb2; unsigned char code num3=0xa3,0xb3; unsigned char code num4=0xa3,0xb4; unsigned char code num5=0xa3,0xb5; unsigned char code num6=0xa3,0xb6; unsigned char code num7=0xa3,0xb7; unsi

4、gned char code num8=0xa3,0xb8; unsigned char code num9=0xa3,0xb9; /-模块延时程序- 1ms void delay1ms(uint delay1ms) /STC11F60XE,22.1184M,延时1ms uint i,j; for(;delay1ms0;delay1ms-) for(i=0;i7;i+) for(j=0;j0;delay-) for(i=0;i124;i+); for(j=0;j124;j+); /* AD转换程序 */ void AD_initiate() /初始化函数 ES=0; TMOD=0x21; /定

5、时计数器方式控制寄存器,自动重装,16位计数器. SCON=0x50; /串行控制寄存器,方便在串口助手那观察 TH1=0xfa; TL1=0xfa; TR1=1; void ADC_Power_On() /AD转换电 ADC_CONTR|=0x80; delay(5); /必要的延时 void get_ad_result() /取AD结果函数,它是十位AD转换,每十次平均,最后取低八位作为AD采样数据 uint i,q=0; for(i=0;i4; /-电压采样程序- void caiyangP10() /测电压 P1M0|=0x01; /设P1_0为开漏模式 如: P1_0= #00000

6、000B P1M1|=0x01; ADC_CONTR=0xe0; /设置P1.0为输入AD转换口 delay(2); get_ad_result(); /取转换数据 Vin=ad_average_result; R=Vin; /*-写控制字到LCD-*/ void write_cmd(uchar cmd) uchar i; uchar i_data; i_data=0xf8; /命令控制字:写指令 写数据 读状态 读数据 CS=1; /片选置高,才能进行读写操作 SCLK=0; /*-写命令控制字-*/ for(i=0;i8;i+) /循环八次,每次读取一位数据 SID=(bit)(i_dat

7、a&0x80); /bit表示取其最高位 SCLK=0; SCLK=1; /正跳变写入指令 i_data=i_data1; /左移一位 /*-*/ /*-写指令高四位-*/ i_data=cmd; i_data=i_data&0xf0; /把低四位置0 for(i=0;i8;i+) /循环八次,每次读取一位数据 SID=(bit)(i_data&0x80); /bit表示取其最高位 SCLK=0; SCLK=1; /正跳变写入指令 i_data=i_data1; /左移一位 /*-*/ /*-写指令低四位-*/ i_data=cmd; i_data=i_data4; /左移四位,把低四位的数据

8、移到高四位,再把低四位置0 for(i=0;i8;i+) /循环八次,每次读取一位数据 SID=(bit)(i_data&0x80); /bit表示取其最高位 SCLK=0; SCLK=1; /正跳变写入指令 i_data=i_data1; /左移一位 /*-*/ CS=0; /把片选置低 delay1ms(5); /延时是因为没有进行忙检测,适当的延时可以不进行忙检测 /*-*/ /*-写数据到LCD-*/ void write_dat(uchar dat) uchar i; uchar i_data; i_data=0xfa; CS=1; for(i=0;i8;i+) SID=(bit)(

9、i_data&0x80); SCLK=0; SCLK=1; i_data=i_data1; i_data=dat; i_data=i_data&0xf0; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data1; i_data=dat; i_data=i_data4; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data1; CS=0; delay1ms(5); /*-*/ /*-显示坐标-*/ void lcd_pos(uchar x,uchar y) /汉字显示坐标,x为哪一行,y为哪一列 uchar pos; if(x=0) x=0x80; /第一行 else if(x=1) x=0x90; /第二行 else if

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号