|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
C0~E[B[@A~T6QO$}%9([P@P.png (77.75 KB, 下載次數(shù): 40)
下載附件
Proteus仿真圖
2019-6-5 19:47 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #include <stdio.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define ADC_PORT P0
- #define DATA_PORT P1
- sbit START=P3^6;
- sbit OE=P3^7;
- sbit AD_ALE=P2^0;
- sbit EOC=P3^3;
- sbit LCDRW = P2^2; //定義LCD引腳
- sbit LCDRS = P2^3;
- sbit LCDEN = P2^1;
- sbit CLK = P3^5;
- uint dat;
- //--------------------------------------------
- // 延時(shí)函數(shù)
- //--------------------------------------------
- void delay_ms(uint t)
- {
- int j;
- for(;t!=0;t--)
- for (j=0;j<110;j++);
- }
- //--------------------------------------------
- // 寫數(shù)據(jù)函數(shù) _可用于顯示一個(gè)字符
- //--------------------------------------------
- void write_data(uint dat)
- {
- LCDRS=1; //數(shù)據(jù)
- DATA_PORT=dat; //把數(shù)據(jù)總到P口
- delay_ms(1); //當(dāng)晶振較高時(shí)加延時(shí)
- LCDEN=1;
- delay_ms(1); //當(dāng)晶振較高時(shí)加延時(shí)
- LCDEN=0; //關(guān)使能
- }
- //--------------------------------------------
- // 寫命令函數(shù) ——可用于定位顯示地址
- //--------------------------------------------
- void write_com(uint com)
- {
- LCDRS=0; //命令
- DATA_PORT=com;
- delay_ms(1); //當(dāng)晶振較高時(shí)加延時(shí)
- LCDEN=1;
- delay_ms(1); //當(dāng)晶振較高時(shí)加延時(shí)
- LCDEN=0;
- }
- //--------------------------------------------
- // 1602初始化
- //--------------------------------------------
- void lcd_init()
- {
- LCDEN=0;
- LCDRW=0;
- LCDRS=0;
- write_com(0x36); //set text home address
- write_com(0x38);
- write_com(0x0c); //開顯示,不顯示光標(biāo) 0x0f為開顯示,開光標(biāo)
- write_com(0x06); //寫一個(gè)字符后地址加一
- write_com(0x01); //顯示清零,數(shù)據(jù)指針清零
- write_com(0x80+0); //定位到,第一行開頭
- }
- //--------------------------------------------
- // 打印函數(shù)——字符串
- //--------------------------------------------
- void print_string(uchar* str)
- {
- int i;
- for(i=0;str[i]!=0;i++)
- {
- write_data(str[i]);
- }
- }
- //--------------------------------------------------------------
- //字符串——打印函數(shù),自行定位 x:列 y:行(y=1:第1行:y=2:第2行)
- //--------------------------------------------------------------
- void print_string_location(uint x,uint y,uchar* str)
- {
- int i;
- if(y==1) //第1行
- {
- for(i=0;str[i]!=0;i++)
- {
- write_com(0x80+(x++)); //定位到,第1行 +x 處顯示
- write_data(str[i]);
- }
- }
- else if(y==2) //第2行
- {
- for(i=0;str[i]!=0;i++)
- {
- write_com(0x80+0x40+(x++)); //定位到,第2行 +x 處顯示
- write_data(str[i]);
- }
- }
- }
- //--------------------------------------------
- // AD0809初始化-端口3
- //--------------------------------------------
- void Ad0809Init3(void)
- {
-
- AD_ALE=0;
- START=1;
- OE=1;
- START=0;delay_ms(5);START=1;
-
- while(EOC==1);
- OE=0;
- dat=ADC_PORT;
- OE=1;
- }
- void print_data0()
- {
- char z[18];
- print_string_location(0,1,"DATA:"); //顯示DATA:字符串
- sprintf((char*)z,"%d ",dat);//合并參數(shù)字符串
- print_string_location(0,2,z); //顯示電阻值
- }
- void main()
- {
- lcd_init();
- while(1)
- {
- P0=0xf3;
- Ad0809Init3();
- dat=dat*19.60784;
- print_data0();
- }
- }
復(fù)制代碼
0.png (4.45 KB, 下載次數(shù): 39)
下載附件
2019-6-6 04:39 上傳
所有資料51hei提供下載:
ADC0809.rar
(75.01 KB, 下載次數(shù): 96)
2019-6-5 19:48 上傳
點(diǎn)擊文件名下載附件
源碼加仿真 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|