STC12C5A60SAD转换及LCD1602显示.pdf
《STC12C5A60SAD转换及LCD1602显示.pdf》由会员分享,可在线阅读,更多相关《STC12C5A60SAD转换及LCD1602显示.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、/*我写的 51AD 转换程序,LED 灯显示,随着外部电压升高,亮的小灯数会逐渐增加*/#include/包含单片机寄存器的头文件#include/包含_nop_()函数定义的头文件 unsigned char result;/A/D 转换结果变量 void main(void)unsigned long i;unsigned char status;ADC_CONTR|=0 x80;/开 A/D 转换电源,第一次使用时要打开内部模拟电源 for(i=0;i10000;i+);/适当延时 P1ASF=0 x04;/选择 P1.2 作为 A/D 转换通道 ADC_CONTR=0 xE2;for
2、(i=0;i10000;i+);/适当延时 while(1)/循环进行 A/D 转换 ADC_CONTR|=0 x08;/启动 A/D 转换 status=0;while(status=0)/等待 A/D 转换结束 status=ADC_CONTR&0 x10;ADC_CONTR&=0 xE7;/将 ADC_FLAG 清 0 result=ADC_RES;/保存 A/D 转换结果 if(result32)P0=0 xff;else if(result64)P0=0 xfe;else if(result96)P0=0 xfc;else if(result128)P0=0 xf8;else if(
3、result160)P0=0 xf0;else if(result192)P0=0 xe0;else if(result214)P0=0 xc0;else if(result236)P0=0 x80;else P0=0 x00;/*-*/*-*功能【AD 转换,液晶显示】*-*/*-*芯片:【STC12C5A60S2】*-*/*-*液晶:【LCD1602】*-*/*-*ADC 管脚:【P1.0P1.7】*-*/*-*检测范围:【0.004.99V】*-*/*-*/#include reg52.h#include intrins.h typedef unsigned char uchar;typ
4、edef unsigned int uint;#define _Nop()_nop_()/*-以下为 LCD1602 显示模块定义-*/unsigned char data_char_table=0123456789ABCDEF;/LCD 数据 unsigned char Lcd_Dis1_table=Position:No.;/第一行显示框架 unsigned char pos_char_table=D;/显示位置 unsigned char Lcd_Dis2_table=Voltage:V;/第二行显示框架 unsigned char num_char_table=9A.CD V;/显示位
5、置 sbit lcd_rs_port=P27;/定义 LCD 控制端口,根据硬件调整 sbit lcd_rw_port=P26;sbit lcd_en_port=P24;#define lcd_data_port P0 void lcd_delay(uchar ms);/LCD1602 延时 void lcd_busy_wait();/LCD1602 忙等待 void lcd_command_write(uint command);/LCD1602 命令字写入 void lcd_system_reset();/LCD1602 初始化 void lcd_char_write(uint x_pos
6、,y_pos,lcd_dat);/LCD1602 字符写入 void lcd_bad_check();/LCD1602 坏点检查 void Num_to_Disp(uchar i,uint Num);/显示数据处理 void LcdDisp(uchar j,uint num);/液晶显示函数 /*-以下为 ADC 相应寄存器初始化及端口定义-*/*定义与 ADC 相关的特殊功能寄存器*/sfr ADC_CONTR=0 xBC;/ADC 控制寄存器 sfr ADC_RES=0 xBD;/ADC hight 8-bit result register sfr ADC_RESL=0 xBE;/ADC
7、 low 2-bit result register sfr P1ASF=0 x9D;/P1 口功能控制寄存器 P1ASF/*定义相应操作位*/#define ADC_POWER 0 x80/ADC 电源控制位,0:关闭,1:打开#define ADC_FLAG 0 x10/ADC 结束标志位#define ADC_START 0 x08/ADC 启动控制位#define ADC_SPEEDLL 0 x00/540 clocks_选择转换速度/*-以下为相关函数声明-*/void InitADC();uuuu GetADCResult(uchar ch);vvvv Delay(uint n);
8、void delay_1ms(uchar x);/*-主函数-*/void main()/ADC 初始化 /延时程序 uchar i;lcd_system_reset();/LCD1602 初始化 lcd_bad_check();/LCD1602 坏点检查 InitADC();/初始化 ADC 特殊功能寄存器 while(1)i=0;while(i 7)LcdDisp(i,GetADCResult(i);/液晶 1602 显示输入电压值(P1.0-P1.7)Delay(1000);i+;/*-ADC 取值-*/uint GetADCResult(uchar ch)ADC_CONTR=ADC_P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STC12C5A60SAD 转换 LCD1602 显示
限制150内