stc12频率计经过验证

上传人:我*** 文档编号:135986659 上传时间:2020-06-22 格式:DOC 页数:5 大小:19.50KB
返回 下载 相关 举报
stc12频率计经过验证_第1页
第1页 / 共5页
stc12频率计经过验证_第2页
第2页 / 共5页
stc12频率计经过验证_第3页
第3页 / 共5页
stc12频率计经过验证_第4页
第4页 / 共5页
stc12频率计经过验证_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《stc12频率计经过验证》由会员分享,可在线阅读,更多相关《stc12频率计经过验证(5页珍藏版)》请在金锄头文库上搜索。

1、#include #include unsigned char code cdis1 = MOTOR SPEED ;unsigned char code cdis2 = R/S;unsigned char code cdis3 = FRICTION POWER ;sbit LCD_RS = P2 6;sbit LCD_RW = P2 5;sbit LCD_EN = P2 7;unsigned char Hdata = 0, Ldata = 0, Count = 0;unsigned char msec;unsigned long temp = 0;unsigned char data disp

2、lay = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00;char code reserve3_at_ 0x3b; /保留0x3b开始的3个字节void delayNOP(unsigned int dwTime)dwTime=250;while (dwTime-); void delayms(unsigned int ms)unsigned int x, y;for (x=0; xms; x+)for (y=0; y300; y+); bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delay

3、NOP(); result = (bit)(P0 &0x80); LCD_EN = 0; return (result);void lcd_wcmd(unsigned char cmd) while (lcd_busy() ; LCD_RS = 0; LCD_RW = 0; LCD_EN = 1; P0 = cmd; delayNOP(); LCD_EN = 0;void lcd_wdat(unsigned char dat) while (lcd_busy() ; LCD_RS = 1; LCD_RW = 0; LCD_EN = 1; P0 = dat; delayNOP(); LCD_EN

4、 = 0;void lcd_init() / delayms(15); lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据 / delayms(5); lcd_wcmd(0x38); / delayms(5); lcd_wcmd(0x38); / delayms(5); lcd_wcmd(0x0c); /开显示,不显示光标 / delayms(5); lcd_wcmd(0x06); / /delayms(5); lcd_wcmd(0x01); /清除LCD的显示内容 / delayms(5);void lcd_pos(unsigned char pos) lcd_wcmd(p

5、os | 0x80); /数据指针=80+地址变量 void play() unsigned char n; for (n = 0; n 0; n-) /高位为0不显示 if (displayn = 0x30) displayn = 0x20; else break; lcd_pos(0x46); /显示实际频率值 for (n = 5; n != 0xff; n-) lcd_wdat(displayn);/* * * * 主函数 * * * */void main() unsigned char m; unsigned long frq_num; P3 = 0xff; lcd_init();

6、 lcd_pos(0x00); /设置显示位置为第一行 for (m = 0; m 16; m+) lcd_wdat(cdis1m); /显示字符 lcd_pos(0x40); /设置显示位置为第二行 for (m = 0; m 16; m+) lcd_wdat(cdis2m); /显示字符 TMOD = 0x51; /定时器0工作在定时方式,定时器1工作在计数方式 TH0 = 0x3c; /50ms定时 TL0 = 0xb0; TH1 = 0x00; /计数初值 TL1 = 0x00; ET1 = 1; /使能TIMER1中断 PT1 = 1; /定义TIMER1中断优先 TR0 = 1;

7、TR1 = 1; ET0 = 1; /使能TIMER0中断 EA = 1; /允许中断 while (1) if (msec=20) TR0 = 0; /关闭TIMER0 TR1 = 0; /关闭TIMER1 msec = 0;Hdata = TH1; /取计数值 Ldata = TL1; frq_num = Count *65535+Hdata * 256+Ldata ; / frq_num = Hdata * 256+Ldata ; TH1 = 0; TL1 = 0; Count = 0; TR1 = 1; TR0 = 1; temp = frq_num/6; play(); void Time0()interrupt 1 TF0=0; TH0 = 0x3c; /50ms定时 TL0 = 0xb0; msec+; void Time1()interrupt 3 Count+;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号