欧美视频综合-欧美视频中文字幕-欧美视频在线观在线看-欧美视频在线观看网站-直接观看黄网站免费视频-正在播放久久

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
電壓表(ADC0804控制程序)
電壓表(ADC0804控制程序)
 更新時間:2008-7-27 16:16:21  點擊數:2
【字體: 字體顏色
電壓表(ADC0804控制程序)

   ADc0804控制程序:轉動電位器,數碼管后三位依次顯示000-255

//定義ADC的連接端口
ad_cs equ P3.6 ;芯片選擇
ad_wr equ P2.0 ;轉換開始
ad_rd equ P3.7 ;RD=LOW,數字信號輸出
ad_input_port equ p1 ;定義數據位
Counter EQU 59H ;計數器,顯示程序通過它得知現正顯示哪個數碼管
FIRST EQU P2.4 ;第一位數碼管的位控制
SECOND EQU P2.5 ;第二位數碼管的位控制
THEER EQU P2.6 ; 第三位數碼管的位控制
DISPBUF EQU 5AH ;顯示緩沖區為5AH和5BH

org 0000h
ajmp main
ORG 000BH ;定時器T0的入口
AJMP DISP ;顯示程序
org 0030h
main:
MOV SP,#5FH ;設置堆棧
MOV P1,#0FFH
MOV P0,#0FFH
MOV P2,#0FFH ;初始化,所顯示器,LED滅
MOV TMOD,#00000001B ;定時器T0工作于模式1(16位定時/計數模式)
MOV TH0,#HIGH(65536-2000)
MOV TL0,#LOW(65536-2000)
SETB TR0 ;開定時器0
SETB EA ;開總中斷
SETB ET0 ;開定時器0中斷
MOV Counter,#0 ;計數器初始化
LOOP:
lcall adc_demo ;調用AD子程序
ajmp LOOP

;//==========================================
;// 啟動AD轉換
;//==========================================
Adc_Start:
clr ad_cs
nop
clr ad_wr
nop
setb ad_wr
nop
setb ad_cs
nop
ret
;//==========================================
;// 讀AD轉換
;//==========================================
Adc_Read:
MOV ad_input_port,#0ffh
clr ad_cs
nop
clr ad_rd
nop
nop
MOV a,AD_INPUT_PORT
nop
setb ad_rd
nop
setb ad_cs
ret
;//==========================================
;// AD轉換讀取延時程序,顯示讀到的數值
;//==========================================
Adc_Demo:
lcall Adc_Start
lcall delay1ms
lcall adc_read
MOV B,#100 ;AD轉換出的值除100商為百位數
DIV AB ; 取百位數 余數在B寄存器
MOV DISPBUF,A ;把百位存入百位寄存器DISPBUF
MOV A,B ;余數再送A
MOV B,#10 ;余數除10商為十位數
DIV AB ; 除法,余數在寄存器B
MOV DISPBUF+1,A ;A是十位數存第二位顯示寄存器
MOV DISPBUF+2,B ; B是個位數存第三位顯示寄存器
RET

DISP: ;定時器T0的中斷響應程序動態掃描
PUSH ACC ;ACC入棧
PUSH PSW ;PSW入棧
MOV TH0,#HIGH(65536-2000);定時時間為2000個周期,約2170微秒
MOV TL0,#LOW(65536-2000)
SETB FIRST
SETB SECOND ;關顯示
SETB THEER
MOV A,#DISPBUF ;顯示緩沖區首地址
ADD A,Counter
MOV R0,A
MOV A,@R0 ;根據計數器的值取相應的顯示緩沖區的值
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取字形碼
MOV P0,A ;將字形碼送P0位(段口)
MOV A,Counter ;取計數器的值
JZ DISPFIRST ;如果是0則顯示第一位
DEC A
JZ DISPSECOND ;如果是1顯示第二位
CLR THEER ;否則顯示第3位
AJMP DISPNEXT
DISPFIRST:
CLR FIRST ;顯示第一位
AJMP DISPNEXT
DISPSECOND:
CLR SECOND
DISPNEXT:
INC Counter ;計數器加1
MOV A,Counter
DEC A ;如果計數器計到3,則讓它回0
DEC A
DEC A
JZ RSTCOUNT
AJMP DISPEXIT
RSTCOUNT:
MOV Counter,#0 ;計數器的值回0
DISPEXIT:
POP PSW
POP ACC
RETI
DISPTAB:db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h ;字形代碼表
;0 1 2 3 4 5 6 7 8 9
delay1ms: ;延時子程序
MOV r7,#10
MM:MOV r6,#50
djnz r6,$ ;2us
djnz r7,MM
ret
end



(摘自www.51c51.com)

  • 上一篇: DS18B20驅動程序(C語言)
  • 下一篇: 廣告燈設計(利用取表方式)
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1