基于億隆單片機的中低頻治療按摩儀全套設計資料:
元件清單:
下面是中低頻治療按摩儀的硬件設計資料pcb+原理圖等:
億隆EMC78P468L單片機源程序如下:
- ;/******************************************************
- ;// Copyright (C),SAIYI TECHNOLOGY Co.,Ltd
- ;// 文 件 名: 帶收音機功能的治療儀
- ;// 作 者: 陳智雄
- ;// 日 期:
- ;// IC 型 號: EM78P468N
- ;// 版 本 號:
- ;// 軟件平臺:
- ;// 編輯軟件: 義隆編譯器
- ;// 修改記錄:
- ;***********************
- ;=======================
- ; define system register
- ;=======================
- iar equ 0x00
- tcc equ 0x01
- pc equ 0x02
- psw equ 0x03
- rsr equ 0x04
- p5 equ 0x05
- p6 equ 0x06
- p7 equ 0x07
- p8 equ 0x08
- r9 equ 0x09
- ra equ 0x0a
- rb equ 0x0b
- rc equ 0x0c
- rd equ 0x0d
- re equ 0x0e
- rf equ 0x0f
- ;---------------------------- bc p5,0
- ioc50 equ 0x05
- ioc60 equ 0x06
- ioc70 equ 0x07
- ioc80 equ 0x08
- ioc90 equ 0x09
- ioca0 equ 0x0a
- iocb0 equ 0x0b
- iocc0 equ 0x0c
- iocd0 equ 0x0d
- ioce0 equ 0x0e
- iocf0 equ 0x0f
- ;---------------------------- bs p5,1
- ioc51 equ 0x05
- ioc61 equ 0x06
- ioc71 equ 0x07
- ioc81 equ 0x08
- ioc91 equ 0x09
- ioca1 equ 0x0a
- iocb1 equ 0x0b
- iocc1 equ 0x0c
- iocd1 equ 0x0d
- ioce1 equ 0x0e
- iocf1 equ 0x0f
- ;----------------------------
- ;=========================
- ; define system register flag
- ;=========================
- c == psw.0 ; 進/借標志位
- z == psw.2 ; 零標志位
- tcif == rf.0 ; 定時中斷標志位
- intf == rf.1 ; 外中斷0標志
- ;=========================
- ; define general register
- ;*************************
- ;**********
- acc_buf equ 0x10
- psw_buf equ 0x11
- cnt_1 equ 0x16
- cnt_2 equ 0x17
- cnt_3 equ 0x18
- cnt_4 equ 0x19
- cnt_5 equ 0x1a
- cnt_6 equ 0x1b
- cnt_7 equ 0x1c
- time_10ms_cnt equ 0x1d
- time_500ms_cnt equ 0x1e
- time_1min_cnt equ 0x1f
- key_cnt equ 0x20
- key_cnt1 equ 0x21
- key_cnt2 equ 0x22
- key_cnt3 equ 0x23
- key_cnt4 equ 0x24
- key_cnt5 equ 0x25
- DW_cnt equ 0x26
- QD_cnt equ 0x27
- time_20s_cnt equ 0x28
- time_cnt equ 0x29
- frs_count equ 0x2a
- mode_cnt equ 0x2b
- move equ 0x2c
- COUNT equ 0x2d
- COUNT1 equ 0x2e
- count_80us equ 0x2f
- charge_count_value equ 0x30
- count2 equ 0x31
- move_1 equ 0x32
- ;*******IO口*******
- io_led == p6.3
- ;*****充電口
- io_p62 == p6.2
- io_p61 == p6.1
- ;*****左右口
- io_p57 == p5.7
- io_p54 == p5.4
- ;*****左右口
- io_p60 == p6.0
- io_p55 == p5.5
- ;*****放電口
- io_p56 == p5.6
- ;*****按鍵掃描口
- io_p67 == p6.7
- io_p87 == p8.7
- power_key == p6.5
- mode_key == p6.6;4
- C_E_key == p6.4;6
- up_key == p6.6;4
- down_key == p6.4;6
- zhongpin_key == p6.5
- ;********初值********
- _TCC_BUF equ 190
- time_10ms_value equ 250
- time_500ms_value equ 50
- time_1min_value equ 120
- time_5ms_value equ 32
- time_200us_value equ 50
- time_1s_value equ 200
- time_20S_value equ 40
- time_15min_value equ 15
- ;********標志位*******
- flag_C_E equ 0x3f
- f_C_E_ok == flag_C_E.1
- flag equ 0x12
- f_power_ok == flag.0
- f_zhong_di == flag.2
- f_shangshuo == flag.3
- F_ALLOW_PUT == flag.4
- f_left_right == flag.5
- CHARGE_OVER == flag.6
- f_start_charge == flag.7
- flag1 equ 0x13
- f_500ms_2 == flag1.0
- f_500ms_1 == flag1.1
- f_500ms == flag1.2
- f_1min == flag1.3
- f_10ms == flag1.4
- start_stop_flag == flag1.5
- flag2 equ 0x14
- f_power_release == flag2.0
- f_mode_release == flag2.1
- f_C_E_release == flag2.2
- f_up_release == flag2.3
- f_down_release == flag2.4
- f_ZP_release == flag2.5
- f_cbc == flag2.6
- flag3 equ 0x15
- f_power_key == flag3.0
- f_mdoe_key == flag3.1
- f_C_E_key == flag3.2
- f_up_key == flag3.3
- f_down_key == flag3.4
- f_ZP_key == flag3.5
- ;`````````````````````````````
- ; 程序
- ;`````````````````````````````
- org 0x0000
- jmp reset
- org 0x0003 ; 定時中斷
- page 0
- jmp int_sever
- ;==================
- TAB_dipin:
- and a,@0x0f
- add pc,a
- retl @0 ;0
- retl @13 ;1
- retl @18 ;2
- retl @23 ;3
- retl @30 ;4
- retl @40;50 ;5
- retl @50;60 ;6
- retl @60;75 ;7
- retl @75;90 ;8
- retl @90;105 ;9
- retl @105;120 ;10
- retl @125;135 ;11
- retl @145;155 ;12
- retl @165;175 ;13
- retl @185;190 ;14
- retl @220;210 ;15
- TAB_zhongpin:
- and a,@0x0f
- add pc,a
- retl @0 ;0
- retl @7 ;1
- retl @13 ;2
- retl @18 ;3
- retl @23 ;4
- retl @30 ;5
- retl @37 ;6
- retl @45 ;7
- retl @55 ;8
- retl @65 ;9
- retl @75 ;10
- retl @85 ;11
- retl @100 ;12
- retl @115 ;13
- retl @130 ;14
- retl @160 ;15
- reset_00:
- MOV A,@0X10
- MOV RSR,A
- CLR_RAM0:
- CLR IAR
- INC RSR
- MOV A,RSR
- SUB A,@0X1F
- JBS z ;Z
- JMP CLR_RAM0
- CLR IAR
- ret
- CLR_RAM1:
- MOV A,@0X20
- MOV RSR,A
- CLR_RAM2:
- WDTC
- CLR IAR
- INC RSR
- MOV A,RSR
- SUB A,@0X3E
- JBS z ;Z
- JMP CLR_RAM2
- CLR IAR
- RET
- reset:
- nop
- call reset_00
- call CLR_RAM1
- ;------------------
- init_system:
- mov a,@00000000b ;p5 開始為低
- mov p5,a
- mov a,@00000000b ;p6 開始為低
- mov p6,a
- mov a,@00000000b ;p7 開始為低
- mov p7,a
- mov a,@00000000b ;p8 開始為低
- mov p8,a
- ;00000000b
- mov a,@11000100B ;BS DS1 DS0 LCDEN -- LCDTYPE LCDF1 LCDF0
- mov r9,a ;用于設置bais and duty lcd使能等、暫時禁用LCD顯示屏
- mov a,@00000000b ; 0 0 0 LCD_A4 LCD_A3 LCD_A2 LCD_A1 LCD_A0
- mov ra,a ;用于設置lcd 地址
- mov a,@00000000b ;-- -- -- -- LCD_D3 LCD_D2 LCD_D1 LCD_D0
- mov rb,a ;用于設置lcd 數據
- mov a,@00000000b ;-- -- -- -- LPWTEN HPWTEN CNT2EN CNT1EN
- mov rc,a ;用于打開 定時器1,2 和PWM 計數
- mov a,@00000001b ;-- CLK2 CLK1 CLK0 IDLE BF1 BF0 CPUS
- mov rd,a ;main-oscillator (Fs*130/4=1.065M) 指令周期1us
- mov a,@00000000b ;IRE HF LGP -- IROUTE TCCE EINT1 EINT0
- mov re,a ;禁止PWM功能,禁止PWM輸出
- mov a,@00000000b ;(清除中斷標志 ICIF LPWTF HPWTF CNT2F CNT1F INT1F INT0F TCIF)
- mov rf,a
- ;```````````````````
- bc p5,0
- mov a,@00000001b ;p54,p55,p56,p57 as output
- iow ioc50 ;p70-p77,p80-p87 as normal i/o
- mov a,@01110000b ;p6,7~p6,5 as output,p6,4~p6,0 as input
- iow ioc60
- mov a,@00000000b ;p7 as output
- iow ioc70
- mov a,@01111111b ;p8 as output
- iow ioc80
- mov a,@00000000b ;0 RAM_A6 RAM_A5 RAM_A4 RAM_A3 RAM_A2 RAM_A1 RAM_A0
- iow ioc90
- mov a,@00000000b ;RAM_D7 RAM_D6 RAM_D5 RAM_D4 RAM_D3 RAM_D2 RAM_D1 RAM_D0
- iow ioca0
- mov a,@00000000b ;Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- iow iocb0
- mov a,@00000000b ;Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- iow iocc0
- mov a,@00000000b ;Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- iow iocd0
- mov a,@00000000b ;Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- iow ioce0
- mov a,@00000000b ;(使能中斷)ICIE LPWTE HPWTE CNT2E CNT1E INT1E INT0E TCIE
- iow iocf0 ;使能P6,P8口狀態變化中斷
- ;```````````````````
- bs p5,0
- mov a,@00001100b ;IROCS -- -- -- /WUE8H /WUE8L /WUE6H /WUE6L
- iow ioc61 ;enable p60-p67 wake up
- mov a,@01000000b ;INT_EDGE INT TS TE PSRE TCCP2 TCCP1 TCCP0
- iow ioc71 ;timer is 1:1 --interrupt enable by ENI/RETI instructions
- mov a,@000000000b ;-- -- -- -- WDTE WDTP2 WDTP1 WDTP0
- iow ioc81 ;剛開始disable wdtc function ,wdtc rate is 1:4
- mov a,@00000000b ;CNT2S CNT2P2 CNT2P1 CNT2P0 CNT1S CNT1P2 CNT1P1 CNT1P0
- iow ioc91 ;count1 rate 1:2 used sub 用副頻
- mov a,@00000000b ;LPWTS LPWTP2 LPWTP1 LPWTP0 HPWTS HPWTP2 HPWTP1 HPWTP0
- iow ioca1
- mov a,@01110000b ;enable p6,0~p6,4 is pull_high
- iow iocb1
- mov a,@00000000b ;disabale port6 is open_drain
- iow iocc1
- mov a,@00000000b ;disable port8 is pull_high
- iow iocd1
- mov a,@00000000b ;disable port6 is pull_low
- iow ioce1
- clr rf ;(清除中斷標志 ICIF LPWTF HPWTF CNT2F CNT1F INT1F INT0F TCIF)
- clr flag_C_E
- bs f_C_E_ok
- clr cnt_1
- clr cnt_2
- clr cnt_3
- ;-------------------------
- ; 上電清屏
- ;-------------------------
- bs io_led
- MOV A,@0XD2 ;0;1;3
- MOV r9,A ; 1/3BIAS,1/4DUTY ENABLE LCD
- ;---------------------
- MOV A,@0XFF
- MOV cnt_1,A
- MOV A,@0X1F
- MOV ra,A
- MOV cnt_2,A
- DISPLAY_ALL: ; POWER ON DISPALY ALL 1S
- MOV A,cnt_2
- MOV ra,A
- MOV A,cnt_1
- MOV rb,A
- DJZ cnt_2
- JMP DISPLAY_ALL
- MOV A,cnt_2
- MOV ra,A
- MOV A,cnt_1
- MOV rb,A
- ;---------------------
- CALL DELAY_1S
- MOV A,@0X00
- MOV cnt_1,A
- MOV A,@0X1F
- MOV ra,A
- MOV cnt_2,A
- DISPLAY_OFF:
- MOV A,cnt_2
- MOV ra,A
- MOV A,cnt_1
- MOV rb,A
- DJZ cnt_2
- JMP DISPLAY_OFF
- MOV A,cnt_2
- MOV ra,A
- MOV A,cnt_1
- MOV rb,A
- shuimian:
- disi
- mov a,@0
- mov p5,a
- mov p6,a
- ;------
- bc r9,4
- bc io_led
- ;*****清RAM空間*******
- call reset_00
- call CLR_RAM1
- call F_DIS_CHARGE
- ;----------
- mov a,@time_10ms_value
- mov time_10ms_cnt,a
- mov a,@time_500ms_value
- mov time_500ms_cnt,a
- mov a,@time_1min_value
- mov time_1min_cnt,a
- shuimian_0:
- nop
- bs io_p67
- bc io_p87
- nop
- bc rd,3
- slep
- nop
- bs P5,0
- MOV A,@0x00
- iow ioc81
- nop
- nop
- bs io_p67
- bc io_p87
- nop
- shuimian_1:
- jbs power_key
- jmp $+3
- clr key_cnt
- jmp shuimian
- djz key_cnt
- jmp shuimian_1
-
- MOV A,@_TCC_BUF
- MOV TCC,A
- BC P5,0
- MOV A,@0B00000001 ;開啟定時中斷
- IOW iocf0
- bs r9,4
- bs io_led
- clr rf
- bs F_ALLOW_PUT
- bs f_cbc
- ;--------
- eni
- ;******************
- ; 主程序
- ;******************
- main:
- wdtc
- page 0
- nop
- call time_dis
- call key_scan
- call key_dis
- call F_MODE_DISCHARGE
- page 2
- call LCD_dis
- page 0
- mov a,DW_cnt
- sub a,@0
- jbs z
- jmp main_00
- jbs f_500ms_2
- jmp main_00
- bc f_500ms_2
- djz time_20s_cnt
- jmp main_00
- bc f_power_ok
- main_00:
- jbs f_cbc
- jmp main_01
- jmp main
- main_01:
- jbs f_power_ok
- jmp shuimian
- jbs f_1min
- jmp main
- bc f_1min
- …………
- …………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
中低頻按摩儀(SY_Y_022).zip
(4.24 MB, 下載次數: 169)
2018-6-18 18:43 上傳
點擊文件名下載附件
中低頻
|