山东轻工业学院2006届本科生毕业设计(论文)
附 录
设计程序源代码:
#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