|
新人咋到,貢獻(xiàn)一個(gè)
ADC模數(shù)轉(zhuǎn)換顯示.rar
(24.38 KB, 下載次數(shù): 52)
2019-4-17 09:11 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
- #include <reg51.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit ST= P1^3; //啟動(dòng)信號(hào)
- sbit EOC=P1^4; //轉(zhuǎn)換結(jié)束信號(hào)
- sbit OE= P1^5; //輸出使能
- sbit CLK=P1^6; //時(shí)鐘信號(hào)
- //0~9字型碼
- uchar code seg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- /**************************************************
- 函數(shù)功能:軟件延時(shí)
- 入口參數(shù):類型uint x為1ms的倍數(shù)
- 出口參數(shù):無
- ****************************************************/
- void delay(uint x)
- {
- uchar i;
- while(x--)
- for(i=0;i<115;i++); //1ms
- }
- /**************************************************
- 函數(shù)功能:數(shù)碼管顯示
- 入口參數(shù):seg_data[]為0~9字型碼
- 出口參數(shù):uint x 要顯示的數(shù)字
- ****************************************************/
- void display(uint x)
- {
- uchar i,disp[3];
- disp[0]=seg_data[x/100]; //百位
- disp[1]=seg_data[(x%100)/10]; //十位
- disp[2]=seg_data[x%10]; //個(gè)位
- for(i=0;i<3;i++)
- {
- P0=disp[i]; //數(shù)碼管段碼
- P2=~(1<<i); //數(shù)碼管位碼移位,片選
- delay(20); //延時(shí)2ms
- P2=0xff; //關(guān)閉數(shù)碼管顯示
- }
- }
- main()
- {
- TMOD=0x02; //T0工作模式2
- TH0=0x14;
- TL0=0x14;
- ET0=1;
- EA=1;
- TR0=1;
- P1=0; //選擇ADC0808的通道0
- while(1){
- ST=0;
- EOC=1; //高電平有效
- OE=0;
- ST=1; //上升沿清零、鎖存地址
- ST=0; //下降沿開始A/D轉(zhuǎn)換
- while(EOC==1); //等待轉(zhuǎn)換完成
- OE=1; //輸出允許信號(hào)
- display(P3); //顯示轉(zhuǎn)換的數(shù)據(jù)
- }
- }
- /**************************************************
- T0定時(shí)器中斷給ADC0808提供時(shí)鐘信號(hào)
- ****************************************************/
- void Timer0_INT() interrupt 1
- {
- CLK=~CLK;
- }
復(fù)制代碼
|
|