1樓:
原理圖如下,
程式如下:
;暫存器分配定義
led_buf equ 50h ;顯示資料首址
counter_int equ 3bh ;中斷計數器
second equ 3dh ;秒單元
;常數定義
cn_count_int equ 100 ;10ms * 100 = 1s
set_model equ 0ffh ;完全譯碼模式
set_bright equ 04h ;佔空比為15/32;顯示亮度;
set_limit equ 01h ;2位顯示方式;
set_normal equ 01h ;測試模式
set_start equ 01h ;進入啟動工作方式?
;管腳分配定義
m7219_din bit p3.0
m7219_load bit p3.1
m7219_clk bit p3.2
keystart bit p1.0
keyreset bit p1.1
;模擬主程式
org 0000h
ajmp main
org 000bh
ljmp timer0interrupt
org 0030h
main:
mov sp,#70h
lcall init_m7219
lcall inittimer0
; mov second,#95h ;test
loop:
call disp
key_reset:
setb keyreset
jb keyreset,key_start
; delay
nopnop
nopjb keyreset,key_start
jnb keyreset,$
clr tr0
mov a,#0
mov second,a
mov led_buf,a
mov led_buf+1,a
jmp key_scan_end
key_start:
setb keystart
jb keystart,key_scan_end
; delay
nopnop
nopjb keystart,key_scan_end
jnb keystart,$
setb tr0
key_scan_end:
jmp loop
inittimer0:;10ms一次中斷
mov tmod,#01h
mov th0,#0d8h
mov tl0,#0f0h
setb ea
setb et0
rettimer0interrupt:
push dph
push dpl
push acc
mov th0,#0d8h
mov tl0,#0f0h
inc counter_int
mov a,counter_int ;10ms 計數值加1
cjne a,#cn_count_int,timer0interrupt_exit
mov counter_int,#0
mov a,second
cjne a,#99h,timer0int_sec
clr tr0;關閉計時
jmp timer0interrupt_exit
timer0int_sec:
add a,#01 ;秒加1
da a
mov second,a
swap a
anl a,#0fh
mov led_buf,a
mov a,second
anl a,#0fh
mov led_buf+1,a
timer0interrupt_exit:
pop acc
pop dpl
pop dph
reti
; function:init_m7219 ;初始化max719
; input: ------------
; output: ----------
; usage: a,b
init_m7219: ;初始化max7219
mov a,#0bh ;設定掃描界限
mov b,#set_limit ;設定位數
lcall w_7219
mov a,#09h ;設定譯碼模式
mov b,#set_model ;00h非譯碼模式;ffh為bcd譯碼模式
lcall w_7219
mov a,#0ah ;設定亮度
mov b,#set_bright ;15/32亮度
lcall w_7219
mov a,#0fh ;設定工作方式
mov b,#set_normal ;正常工作方式
lcall w_7219
mov a,#0ch ;進入啟動工作方式
mov b,#set_start
lcall w_7219
ret; function:disp ;顯示子程式
; input: r0
; output: -----------
; usage: r0,r3,r4,a,b
disp:
mov r0,#led_buf
mov r4,#01h
mov r3,#set_limit
inc r3
disp1:
mov a,@r0
mov b,a
mov a,r4
lcall w_7219
inc r0
inc r4
djnz r3,disp1
ret; function:w_7219 ;顯示驅動程式;
; input: a ;傳送7219的地址
; b ;傳送7219的資料
; output:-------------
; usage: a,r2
w_7219:
clr m7219_clk
clr m7219_din
clr m7219_load ;置load=0
lcall sd_7219 ;傳送7219的地址
mov a,b
lcall sd_7219 ;傳送資料
setb m7219_load ;資料裝載
clr m7219_din
ret; function:sd_7219 ;向7219傳送資料或地址子程式
; input: a
; output: max7219
; usage: a, r2
sd_7219: ;向7219送地址或資料
mov r2,#08h
c_sd:
clr c
clr m7219_clk
rlc a
mov m7219_din,c ;準備資料
nopsetb m7219_clk ;上升沿將資料傳入
nopnop
clr m7219_clk
djnz r2,c_sd
retend
2樓:做而論道
已經過去好多天了,還需要答案嗎?
要求:一 課程設計內容:設計一個微控制器秒錶,該秒錶可顯示00.00到99.99秒的時間,進行相應的微控制器硬體電
3樓:順勢而為自信積累
首先明白有幾個模組:1、51最小系統 2、定時器10ms中斷一次 3、數碼管顯示(建兩個陣列,一個不帶小數的,一個帶小數的)3、按鍵掃描
就這幾個模組,心裡有個數,具體自己寫吧
核心部分是定時器部分,我寫一個:
//timer0
void timer0_init(void)void timer0(void) interrupt 1//主函式可以計t的值,10ms t自增1。 1秒t是多少,會算吧。
這些程式網上也可以找找,比較簡單。
希望對你有點幫助
4樓:匿名使用者
請把微控制器的型號以及開發板的電路圖給出給出,不然沒法做。你也可以找你們學校上屆的學長去要做好的程式。
5樓:匿名使用者
//timer0
void timer0_init(void)void timer0(void) interrupt 1{th0=(65535-10000)/256;
tl0=(65535-10000) %256;
t++;
6樓:匿名使用者
剛好做過一個,助人為快樂之本,不求分!已發到你郵箱了!
誰幫我做個微控制器的課程設計啊,求微控制器大神幫忙,幫做一個微控制器課程設計
2位led顯示當前時間?太不直觀了吧?呵呵.這個課題我可以幫助你 有人可以幫助我嗎?我們要做一個微控制器的課程設計 微控制器溫度測量 0809是adc0809把?那個應該是用來a d轉換的把!鍵盤介面是0809我倒沒聽說過。即是是有鍵盤擴充套件電路,一般都是跟i o口的數量有關的!你的顯示是用什麼顯...
求高手,求幫助,c51微控制器課程設計(微控制器密碼鎖)我的郵箱
先發張原理圖,採納後發程式。程式實現的功能 由密碼控制電鎖,密碼為123,當按下control鍵後,顯示屏上顯示control,輸入數字123,輸入密碼正確,顯示屏第二行顯示welcome,並且電鎖開10s 用發光二級管代替 否則顯示code wrong。當沒有按下control時候,在鍵盤上輸入數...
微控制器秒錶程式設計,用51微控制器做秒錶設計
這個問題我可以用51系列微控制器解決,不知是否可以。可以的話發個訊息或qq聯絡 103949436 用51微控制器做秒錶設計 遇到懶學生了,復這個不就制是一個定時器加顯示嗎,有什麼難的,自己翻翻微機原理書就可以做 了,也就四五十行組合語言就行了,用c就更加簡單,具體的方法 用定時器定時,定時到了就給...