|
最近看網(wǎng)上有很少的ADC0804的設(shè)計(jì)了,都由0809代替,但是有個(gè)別因?yàn)槌杀驹蚝蛯W(xué)校課程設(shè)計(jì)要求需要ADC0804的,可以看此程序,仿真一并配齊,全套資料請(qǐng)打包下載:
0.png (46.69 KB, 下載次數(shù): 86)
下載附件
2017-7-24 16:55 上傳
ADC0804.png (32.45 KB, 下載次數(shù): 69)
下載附件
2017-7-24 11:20 上傳
QQ截圖20170701211521.png (33.07 KB, 下載次數(shù): 57)
下載附件
2017-7-24 16:55 上傳
QQ截圖20170701211620.png (9.62 KB, 下載次數(shù): 79)
下載附件
2017-7-24 16:55 上傳
QQ截圖20170701211630.png (12.88 KB, 下載次數(shù): 56)
下載附件
2017-7-24 16:55 上傳
QQ截圖20170701211641.png (7.92 KB, 下載次數(shù): 72)
下載附件
2017-7-24 16:55 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit rd=P3^6; //ADC0804IO口定義
- sbit wr=P3^5;
- sbit cs=P3^7;
- sbit int1=P3^4;
- //液晶LCD1602定義
- sbit rs=P2^5;
- sbit rw=P2^6;
- sbit e=P2^7;
- //0804轉(zhuǎn)換變量
- unsigned int date;
- uchar Vol;
- uint V;
- void delay_uint(uint z) //液晶驅(qū)動(dòng)延遲
- {
- while(z--);
- }
- /********************************************************************
- * 名稱 : write_com(uchar com)
- * 功能 : 1602命令函數(shù)
- * 輸入 : 輸入的命令值
- * 輸出 : 無(wú)
- ***********************************************************************/
- void write_com(uchar com)
- {
- e=0;
- rs=0;
- rw=0;
- P0=com;
- delay_uint(25);
- e=1;
- delay_uint(100);
- e=0;
- }
- /********************************************************************
- * 名稱 : write_data(uchar dat)
- * 功能 : 1602寫數(shù)據(jù)函數(shù)
- * 輸入 : 需要寫入1602的數(shù)據(jù)
- * 輸出 : 無(wú)
- ***********************************************************************/
- void write_data(uchar dat)
- {
- e=0;
- rs=1;
- rw=0;
- P0=dat;
- delay_uint(25);
- e=1;
- delay_uint(100);
- e=0;
- }
- /***********************lcd1602上顯示字符函數(shù)************************/
- void write_string(uchar hang,uchar add,uchar *p)
- {
- if(hang==1)
- write_com(0x80+add);
- else
- write_com(0x80+0x40+add);
- while(1)
- {
- if(*p == '\0') break;
- write_data(*p);
- p++;
- }
- }
- /***********************lcd1602上顯示兩位十進(jìn)制數(shù)************************/
- void write_sfm2(uchar hang,uchar add,uint date)
- {
- if(hang==1)
- write_com(0x80+add);
- else
- write_com(0x80+0x40+add);
- write_data(0x30+date/100);
- write_string(2,8,".");
- write_data(0x30+date/10%10);
- write_data(0x30+date%10);
- }
- /***********************lcd1602初始化設(shè)置************************/
- void init_1602() //lcd1602初始化
- {
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- delay_uint(1000);
- write_string(1,0,"The Voltage is: ");
- write_string(2,8,".");
- write_string(2,11,"V ");
- write_sfm2(2,7,date);
- }
- void delay(uint z)
- {
- uint x;
- while(z--)
- for(x=0;x<120;x++);
- }
- uchar read_0804()
- {
- wr=0; //在片選信號(hào)CS為低電平情況下(由于CS接地,所以始終為低電平),
- _nop_(); //WR由低電平到高電平時(shí),即上升沿時(shí),AD開始采樣轉(zhuǎn)換
- wr=1;
- delay(1); //延時(shí)1ms,等待采樣轉(zhuǎn)換結(jié)束
- P1=0xff; //這條語(yǔ)句不能少,我也還不知道為什么
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
056-ADC0804電壓表.zip
(2.83 MB, 下載次數(shù): 126)
2017-7-24 11:20 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|