数字频率计的设计(4)

2025-08-03

单片机课程设计

}

/******************************************************************** * 名称 : Write_Pos

* 功能 : 确定输入数据的位置 * 输入 : x,y * 输出 : 无

***********************************************************************/ void Write_Pos(uchar x,uchar y) {

uchar pos;

if(x == 1) //第一行显示 x = 0x80;

else if(x == 2) //第二行显示 x = 0x90;

else if(x == 3) //第三行显示 x = 0x88;

else if(x == 4) //第四行显示 x = 0x98; pos = x + y-1;

Write_Instruction(pos);//显示地址 }

/******************************************************************** * 名称 : Write_Word_To_12864 * 功能 : 在坐标x,y处写入数据 * 输入 : x,y,*word * 输出 : 无

***********************************************************************/ void Write_Word_To_12864(uchar x,uchar y,uchar *word) {

uchar i; LCD_Init(); Write_Pos(x,y);

for(i = 0;*(word+i)!='\\0';i++) { }

Write_Data(word[i]);

}

void ShowInit() {

Write_Word_To_12864(1,1,\频率计:\_delay_cycles(50000);

15

单片机课程设计

Write_Pos(2,7); Write_Data('H'); Write_Data('z');

_delay_cycles(10000);

}

void ShowF() { Write_Pos(2,4); if(F >= 100000) { Write_Data(tab[F/100000]); Write_Data(tab[F0000/10000]); Write_Data(tab[F000/1000]); Write_Data(tab[F00/100]); Write_Data(tab[F0/10]);

Write_Data(tab[F]);

_delay_cycles(1000); }

else if(F >= 10000) { Write_Data(tab[F/10000]);

Write_Data(tab[F000/1000]); Write_Data(tab[F00/100]); Write_Data(tab[F0/10]); Write_Data(tab[F]); _delay_cycles(1000);

}

else if(F >= 1000) { Write_Data(tab[F/1000]); Write_Data(tab[F00/100]); Write_Data(tab[F0/10]); Write_Data(tab[F]);

_delay_cycles(1000);

}

else if(F >= 100) { Write_Data(tab[F/100]); Write_Data(tab[F0/10]); Write_Data(tab[F]); _delay_cycles(1000);

}

16

单片机课程设计

else if(F >= 10) { } else { }

Write_Data(tab[F]); _delay_cycles(1000); Write_Data(tab[F/10]); Write_Data(tab[F]); _delay_cycles(1000);

}

/******************************************************************** * 名称 : Init_uart0 * 功能 : 初始化串口 * 输入 : 无 * 输出 : 无

***********************************************************************/ void Init_uart0() {

UCA0CTL1|=UCSWRST; //UCA0软件复位 //UCA0CTL0&=~UC7BIT;//字符长度为8 UCA0CTL1|=UCSSEL_2;//选择系统时钟:SMCLK UCA0BR0=0x6D; //波特率为9600 UCA0BR1=0;

UCA0MCTL=0;//UCA0MCTL=UCBRS0; IE2=UCA0RXIE+UCA0TXIE;//开接收使能 UCA0CTL1&=~UCSWRST;

P1SEL|=BIT1+BIT2; //将P1.1 P1.2设为第二功能 P1SEL2|=BIT1+BIT2; }

/******************************************************************** * 名称 : Uart0Sends * 功能 : 串口发送数据 * 输入 : *s * 输出 : 无

***********************************************************************/ void Uart0SendsData(char *s) {

while(*s!='\\0') {

UCA0TXBUF=*s;

while((IFG2&UCA0TXIFG)==0); //查询发送是否结束

17

单片机课程设计

IFG2&=~UCA0TXIFG; //清除发送一标志位 s++; } }

/******************************************************************** * 名称 : Init_In

* 功能 :初始化外部终端 * 输入 : 无 * 输出 : 无

***********************************************************************/ void Init_In() { }

P1DIR |= BIT6; P1DIR &= ~BIT3; P1IES |= BIT3; P1IE |= BIT3; P1IFG &= ~BIT3; _EINT();

void Init_Timer() { }

TACCTL0 = CCIE; // CCR0 interrupt enabled TACCR0 = 1;

TACTL = TASSEL_1 + MC_1 + TAIE + TACLR; //up mode

/******************************************************************** * 名称 : Int_To_String

* 功能 :将一个int型数据转换为String型 * 输入 : now_f

* 输出 : 无

***********************************************************************/ void Int_To_String(unsigned long int now_f) {

int j = 0;

for(j = 0; ;j++) {

int_array[j] = now_f % 10 + 48 ; now_f = now_f / 10; if(now_f == 0) break;

18

单片机课程设计

}

void main() {

WDTCTL = WDTPW + WDTHOLD;

P1DIR |= BIT7; // P1.0 output P1DIR |= BIT0;

if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) {

while(1); // If calibration constants erased // do not load, trap CPU!! }

//1Mhz

BCSCTL1 = CALBC1_1MHZ; // Set range

DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */ } int i = j ;

for(i = j , j = 0; i >= 0; i--,j++) { }

int_to_string[j] = int_array[i];

LCD_Init(); Init_In(); Init_Timer(); Init_uart0(); ShowInit(); while(1) { }

ShowF();

}

#pragma vector=PORT1_VECTOR __interrupt void port_1() {

if(P1IFG & BIT3) {

P1OUT ^= BIT6; port_i++; if(port_i>=100) {

port_i = 0;

19


数字频率计的设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新人教版小学数学五年级上册《平行四边形的面积》精品教案[教育]

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

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