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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
3D计步器的设计论文下载; K0 j0 p* }6 G* P4 I& g
7 M; m: x9 g/ D2 l

% r  L6 x4 ]  K3 K* ^6 w3D计步器部分程序:
4 {$ G/ M6 p. V) G3 G# X/ ~. E
' F  C  X2 [  c$ f4 |0 F

) a( t' b8 U  Q! K. |9 j( W#include "reg51.h" + _- P7 @1 i' B! u( C0 e7 k
#include "intrins.h"
) o/ R2 N- x* c" ]$ V- \#include <math.h>               
1 R% [- }! N: g& |* a#include <stdio.h>            % `5 Z  S( }0 ?* o" x. m
#define FOSC 18432000L $ m9 G/ L4 C9 y; z4 v
#define FOSC 11059200L          //晶振 11.0592M
  E5 ~# ~3 J& i! C#define BAUD 9600 typedef unsigned char BYTE; typedef unsigned int WORD;
2 \/ q9 a/ M/ I: K! I* D#define uchar unsigned char uint unsigned int( [& Y3 R; ]' s3 ^5 s
2 Z, e! d5 j- d4 j
/*Declare SFR associated with the ADC */# w" [* j7 y  ?( B
sfr AUXR1 = 0XA2; sfr ADC_CONTR = 0xBC; //ADC control register sfr ADC_RES = 0xBD; //ADC high 8-bit result register sfr ADC_RESL = 0xBE; 2 c4 O& F" e# V( N- y" }
sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register * }5 T) q8 [, m) ^6 R) g$ q0 f% D
sfr P1ASF = 0x9D; //P1 secondary function control register /*Define ADC operation const for ADC_CONTR*/
: L2 A. e" A1 p' j# M6 K! \# V2 O#define ADC_POWER 0x80 //ADC power control bit
- H/ Z& c8 \4 A& G: x3 r* B#define ADC_FLAG 0x10 //ADC complete flag
0 T! l/ s9 e2 h- x" T+ c#define ADC_START 0x08 //ADC start control bit
+ n$ ~4 T& O0 V* s# G#define ADC_SPEEDLL 0x00 //420 clocks
! u! _" V& g. |" h#define ADC_SPEEDL 0x20 //280 clocks
( k- v. M$ G3 Q* v% e3 `% g#define ADC_SPEEDH 0x40 //140 clocks #define ADC_SPEEDHH 0x60 //70 clocks void InitUart(); ) J& n$ Z4 I8 n# B
void InitADC(); , M& y7 S3 i9 b7 Z- g' f7 c
void SendData(BYTE dat);
9 X0 A% H- z; I4 zint GetADCResult(BYTE ch);) L0 w/ P) t8 E4 C% h" |
void Delay(WORD n);
" f5 a4 A( |8 C1 [# R: Nuchar ge,shi,bai,qian,wan;
2 a# f+ w2 d/ f  y" z2 NVoidconversion(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 S4 l: B2 ]: p2 T7 k2 c! x9 B7 Y4 I4 o8 y5 ]8 S
//显示变量( n8 {+ y: ], r* H
7 C. k- f  C! g% l0 H' Y2 I
//取余运算 //取余运算 //取余运算 //取余运算4 p( I! R! D/ ?" t9 ^

4 y' @  d4 n+ R/*---------------------------Get ADC result ----------------------------*/ # p8 T7 g+ }/ k7 [( s
int GetADCResult(BYTE ch) { int AD10bitResult; ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; _nop_(); //Must wait before inquiry _nop_(); _nop_(); _nop_();6 H+ B& W& M, o2 C, t  L
while (!(ADC_CONTR & ADC_FLAG));//Wait complete
/ }% w% J$ `/ a  F0 Xflag ADC_CONTR &= ~ADC_FLAG; //Close ADC AD10bitResult=ADC_RES;
8 o9 b! }1 l* P* JAD10bitResult<<=8; AD10bitResult|=ADC_RESL; return AD10bitResult;
5 s9 J' [! U( R6 W
$ F2 ?; Z8 W1 i& I/ M' y; A//Return 10BIT ADC result
) l0 |9 {3 j* K' ~8 I; a5 B3 }1 G- _5 u+ s0 t9 ?! e# v
} /*---------------------------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& a5 j4 z; ^' O6 \4 A7 m
$ p" N# }) ~: Y
" d2 u) |3 P- F7 K3 C6 ]/ M/*---------------------------Initial ADC sfr ----------------------------*/ void InitADC() { P1ASF = 0xff;) |" l7 _1 t' ]( r8 u: a

! k' c+ B/ z# y9 x) P( q; t0 _//Open 8 channels ADC function  X0 S$ _+ {# b4 G: ]# N0 b* g
, j* `6 N* q5 y+ n
AUXR1=AUXR1|0X04; //ad 值左对齐
7 B8 _3 j6 p: ]1 wADC_RES = 0; //Clear previous result
  i7 e! P/ m- ~) _ADC_CONTR = ADC_POWER | ADC_SPEEDLL; Delay(2); //ADC power-on and delay } /*---------------------------Send one byte data to PC Input: dat (UART data) Output:----------------------------*/
. S2 O& P! t  T# `void SendData(BYTE dat) { while (!TI); TI = 0; SBUF = dat; } /*---------------------------Software delay function ----------------------------*/
0 h9 ^, l; g" X' evoid Delay(WORD n) { WORD x; while (n--) { x = 5000; while (x--); } } //***************************************************************************** * void main()
/ u( o# w  W" c" O& c# r5 W
+ x5 T, y0 ~5 D* X0 W//Wait for the previous data is sent //Clear TI flag //Send current data
) k$ [6 |$ [0 w1 r/ D8 o4 {8 ]1 z' s. s
{* X* S% h( v( A! K' A' F

- s& U9 p( S: K) p# y' w…………限于本文篇幅 余下代码请从论坛下载附件…………
' I" z( ]6 E! @  }
, \" m! d# F3 q" W5 {" Y. ~  O
游客,如果您要查看本帖隐藏内容请回复
+ b/ J  `( V9 w5 R& `$ g/ B4 b( H

# A: o' y, i( {/ g- M' g1 ^) O/ `3 {
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 06:52 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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