找回密码
 注册
关于网站域名变更的通知
查看: 686|回复: 1
打印 上一主题 下一主题

[毕业设计] 3D计步器的设计论文下载

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-26 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
3D计步器的设计论文下载% T8 M- h: y( j3 c

, w  x2 d/ J0 i$ d& i7 \' ~

+ R  l, F4 {: X) [- Z* z3D计步器部分程序:
; Z$ v5 i4 U% q; x" R+ k( K* ~
% s. r/ i8 ^& k) s% N/ F4 ?
+ F: ?3 _# a% |( p( U8 p: K
#include "reg51.h"   q+ @( d6 _- [
#include "intrins.h"
3 ?6 H$ u' v  ~" W0 O! @) S#include <math.h>               ' T; `" N- e' _4 X& O' q" |
#include <stdio.h>            
; `5 _6 c8 N  m) L5 U  S! y#define FOSC 18432000L
. t5 {/ ?3 ~2 c- c1 T! D#define FOSC 11059200L          //晶振 11.0592M 6 ~7 _7 X7 _/ l  m
#define BAUD 9600 typedef unsigned char BYTE; typedef unsigned int WORD;
; l9 ?% F: s+ X) @#define uchar unsigned char uint unsigned int. s9 N% b* Z+ x  `+ K" [

+ \# T4 p# s' `# L/*Declare SFR associated with the ADC */
; W$ ]& N9 u, g0 X2 ~. v sfr AUXR1 = 0XA2; sfr ADC_CONTR = 0xBC; //ADC control register sfr ADC_RES = 0xBD; //ADC high 8-bit result register sfr ADC_RESL = 0xBE;
$ n5 B' g; O% {7 O8 ?5 tsfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
( n$ a0 h' S7 P) ^' d  @) fsfr P1ASF = 0x9D; //P1 secondary function control register /*Define ADC operation const for ADC_CONTR*/ $ T5 ~2 ?+ V  o* }
#define ADC_POWER 0x80 //ADC power control bit
7 t; z) L# i7 f. i. P, X& Q+ _" A, K#define ADC_FLAG 0x10 //ADC complete flag
- ^2 J. |% z8 Y5 |#define ADC_START 0x08 //ADC start control bit
$ |  \5 N, G3 B; J& t& e/ }#define ADC_SPEEDLL 0x00 //420 clocks
7 W; t- c! ?: Z- z#define ADC_SPEEDL 0x20 //280 clocks / S) m7 i. t9 L6 H: W1 X+ M
#define ADC_SPEEDH 0x40 //140 clocks #define ADC_SPEEDHH 0x60 //70 clocks void InitUart(); + ?. [% U! [- s  M/ Q3 ^; o
void InitADC(); 2 P3 ~/ f: ^) E) Q& `$ D( D+ p
void SendData(BYTE dat);
3 U2 _, L  Z- c6 n8 Nint GetADCResult(BYTE ch);& B" ?2 o" n: ~  N+ P
void Delay(WORD n); 6 P! p. Q! K/ H" Z% s' t
uchar ge,shi,bai,qian,wan;
: u, J- K" j2 ]- W9 o' s3 J/ E4 PVoidconversion(uint temp_data) { wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; qian=temp_data/1000+0x30 ; temp_data=temp_data%1000; bai=temp_data/100+0x30 ; temp_data=temp_data%100; shi=temp_data/10+0x30 ; temp_data=temp_data%10; ge=temp_data+0x30; }2 j7 C, O3 n7 s  O* R+ `
' ^1 Z, W7 b0 W* ^3 x8 ^; B" F
//显示变量! _, g1 r: y8 u4 c

. n+ Q9 Q5 k3 D! O. Y0 l//取余运算 //取余运算 //取余运算 //取余运算3 k  G. ^3 v5 y" ]
4 K8 e# B' \) p' B* X( X2 e
/*---------------------------Get ADC result ----------------------------*/
. x9 ~* v: @9 n& K6 l; t; ^int GetADCResult(BYTE ch) { int AD10bitResult; ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; _nop_(); //Must wait before inquiry _nop_(); _nop_(); _nop_();) J! B0 h" P3 F0 z- ^6 r! F1 P
while (!(ADC_CONTR & ADC_FLAG));//Wait complete 9 W6 E' ?7 e' o! y' ^( L
flag ADC_CONTR &= ~ADC_FLAG; //Close ADC AD10bitResult=ADC_RES;
2 @0 m$ G. s" B# I! SAD10bitResult<<=8; AD10bitResult|=ADC_RESL; return AD10bitResult;
2 L( U7 N& L5 W( M
" d) M2 K& o, S& a# ~: v//Return 10BIT ADC result0 S" q  w0 S% \- N& `3 E

- i, O1 v& W- O; S7 e} /*---------------------------Initial UART ----------------------------*/ void InitUart() { SCON = 0x5a; //8 bit data ,no parity bit TMOD = 0x20; //T1 as 8-bit auto reload TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate TR1 = 1; //T1 start running }* ^: h: q" I; b. }2 G: \

8 V% g3 Z1 C7 s: L9 }% C
4 r% K* P, O3 L. C" T; u/*---------------------------Initial ADC sfr ----------------------------*/ void InitADC() { P1ASF = 0xff;
. u7 X8 w2 Q; j* H# u* ^  {4 J0 N& ?' C5 W
//Open 8 channels ADC function
0 Y: e4 g! c: i9 O( q5 }9 A  l4 x, ~+ z! Q5 s
AUXR1=AUXR1|0X04; //ad 值左对齐
) ?' F6 ^. e$ {0 yADC_RES = 0; //Clear previous result   ^9 r6 q$ Y$ l3 Q% w- d
ADC_CONTR = ADC_POWER | ADC_SPEEDLL; Delay(2); //ADC power-on and delay } /*---------------------------Send one byte data to PC Input: dat (UART data) Output:----------------------------*/
$ K* m* [1 ?- [% n  V) Q6 ~void SendData(BYTE dat) { while (!TI); TI = 0; SBUF = dat; } /*---------------------------Software delay function ----------------------------*/ 9 F2 c+ f, z1 `0 N
void Delay(WORD n) { WORD x; while (n--) { x = 5000; while (x--); } } //***************************************************************************** * void main()
, M8 I0 O0 }6 x5 i0 Z3 y" D9 {9 ?" I  ~0 S/ A8 ^6 e# s+ P
//Wait for the previous data is sent //Clear TI flag //Send current data  n  B' o/ h6 e$ G4 z- c
$ Y& y; C/ u& D
{
; z9 O- K/ x. ^- ]3 q! x% j/ o! F7 f; ^
…………限于本文篇幅 余下代码请从论坛下载附件…………$ [) t' M- _$ \0 ?: L- ?# C) M

' Q% M9 T( R' C( Q+ B# J  g
游客,如果您要查看本帖隐藏内容请回复

# P, h$ D( c6 H& [1 h" l
7 P/ B5 j' T+ I. W" w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-28 05:11 , Processed in 0.078125 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表