历史上的今天
今天是:2025年01月08日(星期三)
2020年01月08日 | 51单片机PCF8591四路AD数值LCD1602屏显示源码
2020-01-08 来源:51hei
单片机源程序:
/**********************BST-V51实验开发板例程************************
* 平台:BST-V51 + Keil U3 + STC89C52
* 名称:四路AD数值LCD1602屏显示
* 公司:深圳市亚博软件开发有限公司
* 晶振:11.0592MHZ
******************************************************************/
/*-----------------------------------------------
名称:IIC协议 PCF8591ADDA转换 显示有4个,注意只有2个可以调节电压的
内容:此程序通过IIC协议对DAAD芯片操作,读取电位器的电压通过液晶显示,并输出模拟量,用LED亮度渐变指示
------------------------------------------------*/
#include #include #include "LCD1602.h" #include "IIC.h" #include "stdio.h" unsigned char TempData[8]; unsigned char showtext[12]; /*------------------------------------------------ 延时程序 ------------------------------------------------*/ void mDelay(unsigned char j) { unsigned int i; for(;j>0;j--) { for(i=0;i<125;i++); } } /*------------------------------------------------ 初始化定时器1 ------------------------------------------------*/ void Init_Timer1(void) { TMOD |= 0x10; TH1=0xff; /* Init value */ TL1=0x00; EA=1; /* interupt enable */ ET1=1; /* enable timer1 interrupt */ TR1=1; } /*------------------------------------------------ 主程序 ------------------------------------------------*/ void main() { //unsigned char num; //DA数模输出变量 float ADtemp; //定义中间变量 LCD1602_init(); mDelay(20); Init_Timer1(); LCD_Write_String(0,0,"rank:"); //在第一行显示 while(1) { mDelay(20); //延时用于清晰看出变化 if(ADFlag) //定时采集输入模拟量 { ADFlag=0; ADtemp = ReadADC(0)*(5.0/256); // TempData[0]=(unsigned int)(ReadADC(0))*(5/256);//处理0通道电压显示 // TempData[1]=(unsigned int)(ReadADC(0))*50/256%10; // TempData[2]=(unsigned int)(ReadADC(0))*500/256%10; sprintf(showtext,"%1.2fV",ADtemp); LCD_Write_String(5,0,showtext); // LCD_Write_Char(5,0,TempData[0] + '0'); // LCD_Write_Char(6,0,'.'); // LCD_Write_Char(7,0,TempData[1] + '0'); // LCD_Write_Char(8,0,TempData[2] + '0'); // LCD_Write_Char(9,0,'V'); } } } /*------------------------------------------------ 定时器中断程序 ------------------------------------------------*/ void Timer1_isr(void) interrupt 3 using 1//定时器1执行数码管动态扫描 { static unsigned int j; TH1=0xfb; //重新赋值 TL1=0x00; j++; if(j==200) {j=0;ADFlag=1;} //定时置位AD采样标志位 ……………………
史海拾趣
|
定时/计数器都有定时或对外部事件计数的功能。通常,定时/计数器归纳起来一般有3种类型: 硬件计数器 可在简单软件控制下计数,特点是成本低,使用方便,但是专用性强,使用不广泛。 软件定时/计数器 特点是几乎没有硬件费用,但他占用cpu的 ...… 查看全部问答> |
|
前提:“我们在家里安装了红外幕帘探头、门磁感应传感器、燃气泄漏报警器、烟雾报警器等各种设备,形成了一个移动视频智能系统。” 早上出门前,开启安防报警系 ...… 查看全部问答> |
|
能不能用VC,根据无线网SSID和自己填写的密码,迅速验证密码是否正确 英特尔的无线网卡,能不能用VC做一个程序,根据无线网SSID(网名)和自己填写的密码,迅速验证密码是否正确呀? 初步设计的界面如下 无线网卡的管理工具也可以验证,但是太慢了,而且每次只能验证最多4个密码。不好 不知这个问题是不是应该在 ...… 查看全部问答> |
|
本月11日,中国嵌入式系统产业联盟“百家e坛”嵌入式技术主题论坛第三期如期召 开,延续前两期活动的火爆场面,本期活动同样吸引了众多嵌入式技术爱好者的热情参与。 本期活动可谓是名家云集,三位主讲嘉宾都是嵌入式业界知名的技术专家,因此吸引 ...… 查看全部问答> |
|
ARM芯片上有一些管脚没有寄存器对其进行控制,在WinCE驱动程序中,请问这样的管脚应该如何操作呢?如对扩展总线进行读写控制的nROE、nRWE,还有扩展的地址线RADDR(GPA有些管脚是RADDR,可以操作,但其它的应如何赋值并操作呢?)等。 … 查看全部问答> |
|
首先,我是新手,没有接触过网卡驱动程序开发,仅看过windows上一个中间层的驱动代码。 我有些问题: ndis仅仅是windows上的东西吗? windows上开发一个驱动程序必须按照ndis吗? 网卡制造商如果仅有wi ...… 查看全部问答> |
|
我们的ODM产品需要增加一个短信提示功能。客户的需求是,采取C/S架构的通信。Client端是若干个GPRS终端,Server端是一台拥有公网IP的PC。要求c、s能够双向通信。 在和客户的构图中,目前提出有3种方案: &n ...… 查看全部问答> |




