基于51单片机的频率合成设计论文(7)

2020-04-03 13:11

山东轻工业学院2006届本科生毕业设计(论文)

附 录

设计程序源代码:

#include #include

#define COM8155 XBYTE[0x2100] //8155 #define PB8155 XBYTE[0x2102]

#define COM8279 XBYTE[0x7fff] //8279 #define DAT8279 XBYTE[0x7ffe] #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar code keytab[]={0xc1,0xc8,0xc9,0xd0,0xd8,0xe0,0xc2,0xca,0xd1,0xd9,0xda,0xc3,0xcb,0xd2,0xd3,0xdb}; uchar code dispcode[]={0x0c,0x9f,0x4a,0x0b,0x99,0x29,0x28,0x8f,0x08,0x09,0x88,0x38,0x6c,0x1a,0x68,0xe8};

uchar code hello[]={0x98,0x68,0x7c,0x7c,0x0c}; uchar k=0,a[8],add=0,dec=0; sbit clearflag=ACC^7; sbit W_CLK=P1^6; sbit FQ_UD=P1^4; sbit reset=P1^2;

ulong x0=0xfd72,frequency=0xfd72,pa=1,seem;

void reset1() //9850复位 (1) {uchar i,j;

for(i=0;i<125;i++) for(j=0;j<125;j++) P1=0xff; P1=0; }

void again(ulong x0) //写9850控制字 {

uchar i;

for(i=0;i<32;i++) {

W_CLK=0; FQ_UD=0; PB8155=0x00; W_CLK=1; W_CLK=0;

26

山东轻工业学院2006届本科生毕业设计(论文)

PB8155=(x0/65535)/255; W_CLK=1; W_CLK=0;

PB8155=(x0/65535)%5; W_CLK=1; W_CLK=0;

PB8155=(x0e535)/255; W_CLK=1; W_CLK=0;

PB8155=(x0e535)%5; W_CLK=1; W_CLK=0; }

FQ_UD=1; }

void intial() {

reset1(); COM8279=0xdf; do{ACC=COM8279;} while(clearflag==1);

COM8279=0x10; COM8279=0x2a; COM8279=0x80;

COM8155=0x03; again(x0); }

uchar keyboard() {

uchar i,j;

i= COM8279; if((i&07)!=0) {

j= DAT8279; for(i=0;i<16;i++) if(j==keytab[i]) return i; }

return 0; }

void hellome() {

uchar i;

//系统初始化 (3) //复位

//初始化8279 //初始化8155 a b输出 c输入 //9850初始化 产生1kHZ正弦波 //键盘检测 //0键显示 27

(4)

山东轻工业学院2006届本科生毕业设计(论文)

for(i=0;i<5;i++)

{ COM8279=0x82+i; DAT8279=hello[i]; } }

void caution() { uchar i,j,m,n;

COM8279=0xdf; do{ACC=COM8279;} while(clearflag==1);

while(1) {

j=COM8279; if((j&07)!=0) {

n=DAT8279;

for(m=0;m<10;m++) if(n==keytab[m]) {

{ COM8279=0x80+k; DAT8279=dispcode[m]; a[k]=m; k++; if(k>8) { k=0;

COM8279=0xdf; do{ACC=COM8279;} while(clearflag==1); } } } }

if(n==0xc3) break; } }

void dispfre(ulong x ) //频率显示{

uchar i;

COM8279=0x80;

28

(5) 山东轻工业学院2006届本科生毕业设计(论文)

i=x/10000000;

DAT8279=dispcode[i]; COM8279=0x81;

i=(x000000)/1000000; DAT8279=dispcode[i]; COM8279=0x82;

i=(x00000)/100000; DAT8279=dispcode[i]; COM8279=0x83; i=(x0000)/10000; DAT8279=dispcode[i]; COM8279=0x84; i=(x000)/1000; DAT8279=dispcode[i]; COM8279=0x85; i=(x00)/100;

DAT8279=dispcode[i]; COM8279=0x86; i=(x0)/10;

DAT8279=dispcode[i]; COM8279=0x87; i=x;

DAT8279=dispcode[i]; }

void disp() {

switch(k=k-1) {

case 7:

frequency=a[0]*10000000+a[1]*1000000+a[2]*100000+a[3]*10000+a[4]*1000+a[5]*100+a[6]*10+a[7];break; case 6:

frequency=a[0]*1000000+a[1]*100000+a[2]*10000+a[3]*1000+a[4]*100+a[6]*10+a[6];break; case 5:

frequency=a[0]*100000+a[1]*10000+a[2]*1000+a[3]*100+a[4]*10+a[5];break; case 4:

frequency=a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];break; case 3:

frequency=a[0]*1000+a[1]*100+a[2]*10+a[3];break; case 2:

frequency=a[0]*100+a[1]*10+a[2];break; case 1:

29

山东轻工业学院2006届本科生毕业设计(论文)

frequency=a[0]*10+a[1];break; case 0:

frequency=a[0];break; } k=0;

seem=frequency*65; again(seem); }

void addtion() {

if(seem<0x27000000) seem+=0x19ca; else add=1;

dispfre(seem/65); again(seem); }

void decrease() {

if(seem>0x19ca) seem-=0x19ca; else dec=1;

dispfre(seem/65); again(seem); }

main() { uchar i; reset1(); intial(); hellome(); while(1) {

i=keyboard(); if(i==0x0a) {

caution(); disp(); }

if(i==0x0c) {

add++;

30


基于51单片机的频率合成设计论文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:专题08 第二次工业革命-学易试题君之课时同步君2017-2018学年高

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: