久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 65|回復: 0
打印 上一主題 下一主題
收起左側

基于單片機的數字電壓表

[復制鏈接]
跳轉到指定樓層
樓主
ID:878163 發表于 2021-1-16 17:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>                                 
#include<intrins.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
sbit adcs=P3^2;                    //端口定義
sbit adwr=P3^6;
sbit adrd=P3^7;
sbit RS = P3^5;
sbit RW = P3^6;
sbit E= P3^4;
uint Result_ADC0804;        //轉換結果變量
uchar Display_Buffer[2][16] ={{"CurrentVoltage:"},{"(CH)=0.00V"}};    //函數聲明
uchar Get_Value_ADC0804();               //獲取指定通道A/D轉換結果
void Refesh_Disp_Buffer();            //刷新顯示緩沖
void LCD_Busy_Check();                     //忙檢查
void LCD_Write_Command(uchar cmd); //向lcd寫入命令
void Write_LCD_Data(uchar dat);    //向lcd寫入數據
void Initialize_LCD1602();              //液晶初始化函數
void LCD_Display(uchar str[]);        //在lcd上顯示字符串
void DelayMS(uint X);                     //延時
uchar Read_State();                          //讀取lcd的狀態
void main()                       //主程序
{uchar j;
Initialize_LCD1602();     //液晶初始化函數
while(1)                 //循環顯示
{
for(j=0;j<2;j++)     
{
Get_Value_ADC0804();   //A/D轉換
Refesh_Disp_Buffer();  //刷新顯示緩沖
if (j==0)
{
LCD_Write_Command(0x80);              //寫lcd命令,設置從第0行位置開始顯示
LCD_Display(Display_Buffer[j]);  //在lcd上顯示字符串
}
else
{
LCD_Write_Command(0xC0);             //寫命令,設置從第1行位置開始顯示
LCD_Display(Display_Buffer[j]); //在lcd上顯示字符串
}
}}}
uchar Get_Value_ADC0804() //獲取指定通道的A/D轉換結果
{adcs=0;                                  //片選信號輸入端,低電平有效
adwr=0;                                 //開始寫入信號
_nop_();_nop_();              //2個機器周期,將寫入的模擬信號轉換為數字信號         
adwr=1;                                    //關閉寫入
DelayMS(1);                                   //延時
adrd=0;                                    //輸出信號
_nop_();_nop_();              //2個機器周期,將轉換的信號輸出到P1端口
Result_ADC0804=P1;                 //將輸出的信號賦給Result_ADC0804
adrd=1;                                    //關閉輸出
DelayMS(1);                                   //延時
adcs=1;                                    
}
void Refesh_Disp_Buffer()                    //刷新顯示脈沖
{
uint t=(Result_ADC0804*500.0)/255;   //將A/D輸出的結果轉換為2進制數
Display_Buffer[1][5] = t/100+'0';   //顯示個位
Display_Buffer[1][7] = t/10%10+'0';     //顯示十分位
Display_Buffer[1][8] = t%10+'0';   //顯示百分位
}
void DelayMS(uint X)                      //延時程序
{
uchar i;
while(X--)
for(i=0;i<120;i++);                        //延時10us
}
uchar Read_State()                           //讀取lcd的狀態
{uchar state;
RS=0;                                                
RW=1;
E=1;                                                  //RS=0,RW=1,E=1 讀狀態
state=P0;                                          //輸出D0~D7
DelayMS(1);
E=0;
DelayMS(1);
return state;
}
void LCD_Busy_Check()                       //忙等待
{while(Read_State()&&0x80!=0x80);
DelayMS(1);
}
void LCD_Write_Command(uchar cmd)            //向lcd寫入命令
{
LCD_Busy_Check();                        //忙等待
RS=0;                  
RW=0;               
P0=cmd;                                            //將命令賦給P0端口
E=1;                                            //RS=0,RW=0,E=1 寫指令            
E=0;
}
void Write_LCD_Data(uchar dat)                //向lcd寫入數據
{
LCD_Busy_Check();
RS=1;                        
RW=0;
P0=dat;
E=1;                                                           //RS=1,RW=0,E=1 寫數據
DelayMS(1);
E=0;
}
void Initialize_LCD1602()                       //lcd初始化
{
LCD_Write_Command(0x38);DelayMS(1);             //功能設置,數據長度為8位,雙行顯示,5*7點陣
LCD_Write_Command(0x0C);DelayMS(1);            //顯示開,關光標
LCD_Write_Command(0x06);DelayMS(1);             //字符進入模式:屏幕不動,字符后移
LCD_Write_Command(0x01);DelayMS(1);             //清屏
}
void LCD_Display(uchar str[])                    //在lcd上顯示字符串
{
uchar k;
for(k=0;k<=strlen(str);k++)
{
Write_LCD_Data(str[k]);                            //依次在lcd上顯示字符串
DelayMS(1);
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区国产好的精 | 久久精品国产久精国产 | 成人精品鲁一区一区二区 | 亚洲欧美日韩在线不卡 | 久久99国产精品 | 成人在线播放网站 | 性网站免费 | 国产99久久精品一区二区永久免费 | 成人在线视频网 | 欧美成年人 | 国产一区二区三区在线免费 | 亚洲高清视频在线观看 | 色综合天天天天做夜夜夜夜做 | 国产91九色 | 欧美 中文字幕 | 中文字幕av在线一二三区 | 久久夜视频 | 日韩欧美手机在线 | 99久久精品免费看国产四区 | 国产欧美日韩一区二区三区在线观看 | 成人小视频在线观看 | 三极网站 | 玖玖综合网 | 伊人网99 | 日本特黄a级高清免费大片 成年人黄色小视频 | 911精品国产 | 欧美白人做受xxxx视频 | 国产精品激情在线 | 国产蜜臀97一区二区三区 | 91久久久久久 | 91人人爽 | 中文字幕亚洲在线 | 亚洲精品乱码久久久久久久久 | 国产免费看 | 亚洲成人精品 | 老子午夜影院 | 91久久精品国产91久久 | 欧美中文字幕一区 | 噜久寡妇噜噜久久寡妇 | 国产精品自产拍在线观看蜜 | 日本三级做a全过程在线观看 |