基于单片机的简易频率计设计内容摘要:
ain() { init_timer()。 //定时器配置 LED_number0 = 0。 LED_number1= 0。 LED_number2= 0。 LED_number3= 0。 while(1) { convert_LED()。 //将频率值转换成显示在 8 段数码管上的数据 LED_display()。 //将前面转换出来的数字显示在 LED 上 } } /****************************LED 显示函数 **************************/ void LED_display() { unchar index = 0。 unchar NOT_zero。 8 NOT_zero = 0。 for(index=0。 index8。 index++) { if(!(((LEDBUF[index]==0)amp。 (!NOT_zero))amp。 (index != point))) { NOT_zero = 1。 // P0 = index。 P1 = 0x00。 P0 amp。 = 0xf8。 P0 |= index。 if(point==index) P1 = led_point[LEDBUF[index]]。 else P1 = leddata[LEDBUF[index]]。 mult_delay(1)。 } } } /*基础延时函数 */ void delay() { unsigned int time_length。 time_length = 0x0a。 while(time_length)。 } /*//基础延时函 数整数倍延时 */ void mult_delay(unchar time) { while(time) {delay()。 } } /************************LED 结果转化函数 ***********************/ void convert_LED() { if(temp_add != 0) { LED_number_add(temp_add)。 temp_add = 0。 } if(LED_number0=100) { 9 LED_number1 += LED_number0/100。 LED_number0 = (LED_number0/100)*100。 } if(LED_number1=100) { LED_number2 += LED_number1/100。 LED_number1 = (LED_number1/100)*100。 } if(LED_number2=100) { LED_number3 += LED_number2/100。 LED_number2 = (LED_number2/100)*100。 } if(LED_number3=100) { LEDBUF[0] = 11。 LEDBUF[1] = 11。 LEDBUF[2] = 11。 LEDBUF[3] = 11。 LEDBUF[4] = 11。 LEDBUF[5] = 11。 LEDBUF[6] = 11。 LEDBUF[7] = 11。 while(1) { LED_display()。 } } LEDBUF[7] = LED_number0%10。 LEDBUF[6] = LED_number0/10。 LEDBUF[5] = LED_number1%10。 LEDBUF[4] = LED_number1/10。 LEDBUF[3] = LED_number2%10。 LEDBUF[2] = LED_number2/10。 LEDBUF[1] = LED_number3%10。 LEDBUF[0] = LED_number3/10。 } /**************************加法函数 *****************************/ void LED_number_add(unsigned int add) { unchar addH,addL。 addH = add/100。 addL = add%100。 LED_number0 += addL。 LED_number1 += addH。 } /***********************定时器初始化函数 ***************************/ void init_timer() { EA = 1。 //开总中断 10 ET0 = 1。 //允许定时器 0 中断 TMOD = 0x51。 //定时器工作方式选择 TL0 = 0x00。 TH0 = 0x4c。 //定时器赋予初值 /**/ TL1 = 0x00。 TH1 = 0x00。 //计数器赋予初值 /*。基于单片机的简易频率计设计
相关推荐
部物体时有高电平状态变为低电平状态,通过与单片机连接单片机 I/O 接收检测的高低电平 6 变化。 原理图如下: 单片机系统 单片机最小系统是此 设计的核心部位,红外传感器所产生的外部脉冲经单片机进行译码而计数的,并且通过对单片机内部进行编译,使外部中断信号通过数码管显示出来,并实现计数功能。 一 个典型的单片机最小系统一般由时钟电路、复位电路、片外 RAM、片外 ROM、按键、数码管
PEED1 和SPEED0 确定。 在使用之前,应先给 ADC 上电,也就是置位控制寄存器中的ADC_POWER 位。 STC12C5616AD 单片机的 A/D 转换功能的控制主要有 ADC_CONTR 控制寄存器 来实现 ,其各个位的功能如表 所示。 表 特殊功能寄存器 ADC_CONTR Address B7 B6 B5 B4 B3 B2~B0 C5H ADC_POWER SPEED1
缝的饱满度,对砌体的强度影响很大。 比如:根据试验研究,当水平灰缝满足 80%以上,竖缝饱满度满足 60%以上时,砌体强度较不饱满时,要提高 2- 3 倍,怎样保证灰缝饱满度呢。 A、支持使用所述的“三一“砌砖法,即“一块砖、一铲灰、一揉挤“。 B、水平缝用铺浆法(铺浆长度≤ 50cm)砌筑,竖缝用挤浆法砌筑,竖缝还要畏助以加浆法,以使竖向饱满,绝不可用水冲灌浆法。 C、砂浆使用时,如有淅水
完成一次显著的进步。 同时控制电路也实现了高度集成化,小型化,高可靠性及低成本。 以上技术的应用使得直流调速系统的性能指标大幅提高应用范围不断扩大 ,直流 调速技术不断发展。 随着微型计算机、超大规模集成电路、新型电力电子开关器件和新型传感器的出现及自动控制理论,电力电子技术,计算机控制技术的深入发展,直流电动机控制技术装置也不断向前发展。
AT89C52 单片机 AT89C52 是 51 系列的一个型号,它是 ATMEL 公司生产的。 AT89C52 是一个低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的 Flash 只读程序存储器和256 bytes 的随机存取数据存储器( RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS51 指令系 统,片内置通用 8
表 31 七段 LED显示器段码表 (共阴极 ) 显示字符 0 1 2 3 4 5 6 7 8 9 . 段码 3FH 06H 5BH 4FH 66H 6DH 07H 7DH 7EH 6FH 80H (2) 显示扫描电路。 LED 的每一种显示字符对应一个段码, CPU送出这个段码, LED 便显示这个段码所对应的字符。 在本 系统中由移位寄存器 74LS164 提供需要显示的段码。