久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STC12C5A60S2兩路AD采集用LCD1602顯示程序源碼
[打印本頁]
作者:
a1234a5678a
時間:
2017-8-9 11:22
標題:
STC12C5A60S2兩路AD采集用LCD1602顯示程序源碼
測試可行。
全部資料下載地址:
STC12C5A60S2兩路AD采集用LCD1602顯示.doc
(36.5 KB, 下載次數: 59)
2017-8-9 11:15 上傳
點擊文件名下載附件
STC12兩路ad采樣1602顯示
下載積分: 黑幣 -5
單片機源程序:
#include <STC12C5A.H>
#include<intrins.h>
#include "stdio.h"
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
uchar data adc _at_ 0x30;
uchar data adc1 _at_ 0x31;
sbit E=P2^7; //1602使能引腳
sbit RW=P2^6; //1602讀寫引腳
sbit RS=P2^5; //1602數據/命令選擇引腳
void SendByte(unsigned char dat);
void SendStr(unsigned char *s);
void L1602_string(uchar hang,uchar lie,uchar *p);
void L1602_char(uchar hang,uchar lie,char sign);
uchar AD();
uchar AD1();
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void delay()
{
_nop_();
_nop_();
}
void Delay(uint del)
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=148;j++)
{
}
}
/********************************************************************
* 名稱 : bit Busy(void)
* 功能 : 這個是一個讀狀態函數,讀出函數是否處在忙狀態
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
void Busy(void)
{
bit busy_flag = 1;
P0 = 0xff;
RS = 0;
delay();
RW = 1;
delay();
E = 1;
//Delay(1);
while(1)
{
busy_flag = (bit)(P0 & 0x80);
if(busy_flag == 0)
{
break;
}
}
E = 0;
}
/********************************************************************
* 名稱 : wcmd(uchar del)
* 功能 : 1602命令函數
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
void wcmd(uchar del)
{
RS = 0;
delay();
RW = 0;
delay();
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}
/********************************************************************
* 名稱 : wdata(uchar del)
* 功能 : 1602寫數據函數
* 輸入 : 需要寫入1602的數據
* 輸出 : 無
***********************************************************************/
void wdata(uchar del)
{
delay();
RS = 1;
delay();
RW = 0;
delay();
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}
/********************************************************************
* 名稱 : L1602_init()
* 功能 : 1602初始化,請參考1602的資料
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void L1602_init(void)
{
Delay(15);
wcmd(0x38);
Delay(5);
wcmd(0x38);
Delay(5);
wcmd(0x38);
wcmd(0x38);
Busy();
wcmd(0x08);
Busy();
wcmd(0x01);
Busy();
wcmd(0x06);
Busy();
wcmd(0x0c);
}
/********************************************************************
* 名稱 : L1602_char(uchar hang,uchar lie,char sign)
* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b" ,調用該函數如下
L1602_char(1,5,'b')
* 輸入 : 行,列,需要輸入1602的數據
* 輸出 : 無
***********************************************************************/
void L1602_char(uchar hang,uchar lie,char sign)
{
uchar a;
if(hang == 1)
{
a = 0x80;
}
if(hang == 2)
{
a = 0xc0;
}
a = a + lie - 1;
Busy();
wcmd(a);
Busy();
wdata(sign);
}
/********************************************************************
* 名稱 : L1602_string(uchar hang,uchar lie,uchar *p)
* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調用該函數如下
L1602_string(1,5,"ab cd ef;")
* 輸入 : 行,列,需要輸入1602的數據
* 輸出 : 無
***********************************************************************/
void L1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a;
if(hang == 1)
{
a = 0x80;
}
if(hang == 2)
{
a = 0xc0;
}
a = a + lie - 1;
while(1)
{
Busy();
wcmd(a);
Busy();
wdata(*p);
a++;
p++;
if((*p == '\0')||(a==0x90)||(a==0xd0))
{
break;
}
}
}
uchar AD()
{
ulong i;
uchar star;
ADC_CONTR|=0x80;
for(i=0;i<10000;i++);
P1ASF=0x01;
ADC_CONTR|=0XE1;
for(i=0;i<10000;i++);
while(1)
{
ADC_CONTR|=0x08;
star=0;
while(star==0)
{
star=ADC_CONTR&0x10;
}
ADC_CONTR&=0x00;
adc=ADC_RES;
//adc<<=2;
//adc+=ADC_RESL;
return adc;
}
}
uchar AD1()
{
ulong i;
uchar star;
ADC_CONTR|=0x80;
for(i=0;i<10000;i++);
P1ASF=0;
ADC_CONTR|=0XE0;
for(i=0;i<10000;i++);
while(1)
{
ADC_CONTR|=0x08;
star=0;
while(star==0)
{
star=ADC_CONTR&0x10;
}
ADC_CONTR&=0x00;
adc1=ADC_RES;
// adc1<<=2;
// adc1+=ADC_RESL;
return adc1;
}
}
void main()
{
float i,j;
unsigned char a[16];
unsigned char b[16];
L1602_init();
while(1)
{
{
i=AD()*5/256;
sprintf(a," DA1=%4.2f v",i);
L1602_string(2,0,a);
DelayMs(1);
j=AD1()*5/256;
sprintf(b," DC2=%4.2f v",j);
L1602_string(1,0,b);
}
}
}
復制代碼
作者:
狼牙小帥
時間:
2018-2-25 14:30
謝謝樓主分享
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲成人精品免费
|
国产有码
|
www日本在线
|
91视频国产精品
|
中文区中文字幕免费看
|
欧美日韩一区二区在线
|
成人高清在线
|
欧美精品一区二区在线观看
|
九九热在线观看视频
|
韩日一区二区
|
国产黄色在线
|
欧美久久国产
|
a级片在线观看
|
欧美日韩一区二区三区视频
|
国产乱码精品1区2区3区
|
国产一区
|
久久久久成人精品免费播放动漫
|
精品中文字幕久久
|
久久精品16
|
国产成人99久久亚洲综合精品
|
婷婷不卡
|
国产99视频精品免费播放照片
|
欧美精品一区在线发布
|
久久国
|
日韩综合在线视频
|
国产高潮好爽受不了了夜色
|
成人在线精品
|
国产精品毛片一区二区三区
|
99精品免费视频
|
久久久精品网
|
国产www.
|
www.成人.com
|
一区二区三区四区在线视频
|
美国黄色毛片
|
国产精品视频在线免费观看
|
久久新
|
成人午夜在线
|
婷婷在线视频
|
97精品国产
|
日本一区二区高清视频
|
精品久久久久久亚洲精品
|