標(biāo)題:
51單片機用LCD12864做的示波器程序和Proteus仿真
[打印本頁]
作者:
zhangyouxiu
時間:
2020-10-22 20:25
標(biāo)題:
51單片機用LCD12864做的示波器程序和Proteus仿真
用51單片機做的簡易示波器,利用proteus里的波形生成器在通過ADC轉(zhuǎn)換,就可以顯示在LCD12864上。正弦波,三角波,方波等都能顯示
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
示波器.png
(81.81 KB, 下載次數(shù): 101)
下載附件
2020-10-22 20:24 上傳
單片機源程序如下:
#include "reg51.h"
#include "LCD12864.h"
#include "font.h"
#define ADC_VALUE P0
sbit START = P3^4;
sbit OE = P3^6;
sbit EOC = P3^5;
#define COLLECT_NUM 64
uint8_t adc_collect[COLLECT_NUM];
uint8_t GatAdcValue()
{
uint8_t temp;
START = 1;
START = 0; // 下降沿觸發(fā)轉(zhuǎn)換
OE = 1;
while(EOC == 0); //等待轉(zhuǎn)換完成
temp = ADC_VALUE;
OE = 0;
return temp;
}
void main()
{
uint8_t i,j,k,row,col,page,Data;
uint8_t old_Data,old_page,temp_Data,temp_Data2,temp_page;
LCD12864_Init();
while(1)
{
for(i = 0;i<COLLECT_NUM;i++)
adc_collect[i] = GatAdcValue();
for(j = 0;j<COLLECT_NUM;j++)
{
col = j; // 列
row = adc_collect[j]/4; // 計算在第幾行
page = row/8;
Data = 0x01 <<(row-page*8);
refresh_one_list(col);
if(j!=0)
{
temp_Data2 = Data;
temp_page = page;
if(page == old_page) // 同一頁內(nèi)
{
if(Data > old_Data) //波形下降 向上補充
{
temp_Data = Data;
temp_Data = temp_Data>>1;
while(temp_Data!=old_Data)
{
temp_Data = temp_Data>>1;
Data = Data|(Data>>1); //向上補充
}
}
else if(Data < old_Data) // 波形上升 向下補充
{
temp_Data = Data;
temp_Data =temp_Data<<1;
while(temp_Data!=old_Data)
{
temp_Data =temp_Data<<1;
Data = Data|(Data<<1); //向下補充
}
}
} //end if(page == old_page) // 同一頁內(nèi)
else if(page > old_page) // 跨頁下降 應(yīng)該向上補充
{
temp_Data = Data;
for(k = 0;k<(row-page*8);k++) //向上補充到本頁頂部
temp_Data |= (temp_Data>>1); //向上補充
write_one_list(page,col,temp_Data); //填充本頁
page--; //往上一頁
while(page != old_page) //填充兩點之間的中間的頁
{
write_one_list(page,col,0xFF);
page --;
}
if(page == old_page) // 來到了同一頁
{
temp_Data = 0x80;
Data = 0x80;
if(Data>old_Data)
{
temp_Data = temp_Data>>1; // 上移一格
while(temp_Data != old_Data)
{
temp_Data = temp_Data>>1; // 上移一格
Data = Data|(Data>>1); // 向上補充
}
}
}
}//end else if(page > old_page) // 跨頁下降 應(yīng)該向上補充
else if(page < old_page) // 跨頁上升 應(yīng)該向下補充
{
temp_Data = Data;
for(k = 0;k<(7-(row-page*8));k++)
{ temp_Data|=(temp_Data<<1);}
write_one_list(page,col,temp_Data);
page++; //向下一頁
while(page != old_page)
{
write_one_list(page,col,0xFF);
page++ ; // 下降一頁
}
if(page == old_page)
{
Data = 0x01;
temp_Data = 0x01;
if(Data < old_Data)
{
temp_Data = temp_Data<<1; //向下移動一格
while(temp_Data != old_Data)
{
temp_Data = temp_Data<<1; //向下移動一格
Data |= (Data<<1); //向下補充
}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
示波器.rar
(124.61 KB, 下載次數(shù): 168)
2020-10-22 20:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
老舍233
時間:
2021-4-28 11:09
仿真圖在哪里啊,找不到
作者:
lqh_fairy
時間:
2021-10-24 21:06
請問有原理圖嗎,實物圖上12864怎么接,CS1,CS2改怎么接
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1