标题: [原创]将模拟信号的频率和幅度经单片机显示在液晶屏上 [打印本页]

作者: yjl78564321    时间: 2013-5-11 22:45
标题: [原创]将模拟信号的频率和幅度经单片机显示在液晶屏上
#include #include typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL; sbit rs=P1^0; //液晶模块接口 sbit rw=P1^1; sbit ep=P1^2; sbit cf=P1^3; delay(BYTE ms) { BYTE i; //延时子程序 while(ms--) { for(i=0;i<250;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } BOOL lcd_bz() { BOOL result; //测试LCD忙碌状态 rs=0; rw=1; ep=1; _nop_(); _nop_(); _nop_(); _nop_(); result=(BOOL)(P0&0x80); ep=0; return result; } lcd_wcmd(BYTE cmd) //写入指令数据到LCD { while(lcd_bz()); rs="0; " rw="0; " ep="0; " _nop_(); _nop_(); p0="cmd; " _nop_(); _nop_(); _nop_(); _nop_(); ep="1; " _nop_(); _nop_(); _nop_(); _nop_(); ep="0; } " extern void lcd_pos(BYTE pos) { //设置显示位置 lcd_wcmd(pos|0x80); } extern void lcd_wdat(BYTE dat) { //写入字符显示数据到LCD while(lcd_bz()); rs="1; " rw="0; " ep="0; " p0="dat; " _nop_(); _nop_(); _nop_(); _nop_(); ep="1; " _nop_(); _nop_(); _nop_(); _nop_(); ep="0; " } extern void lcd_init() { ep="0;" //LCD初始化设定 lcd_wcmd(0x38); //8位数据接口,2行显示,5*7 delay(1); lcd_wcmd(0x0c); //显示开,光标关 ,闪烁关 delay(1); lcd_wcmd(0x06); //数据读写AC加1,画面不移动 delay(1); lcd_wcmd(0x01); //清除LCD的显示内容 delay(1); } extern void lcd_init(); extern void lcd_wdat(BYTE dat); extern void lcd_pos(BYTE pos); void main() { lcd_init(); P0=0xFF; P1=0xFF; TMOD=0x01; TH0=0x3C; TL0=0xB0; IE=0x82; TR0=1; while(1); } void time0(void) interrupt 1 { static BYTE count="0; TH0=0x3C; TL0=0xB0; if(count==19) { count++; } else { BYTE" GE,SHI,BAI,QIAN,WAN; WORD SHU; SHU=P3;//P3高位 SHU<<=8; SHU+=P2;//P2低位 SHU&=0xFFF9; //关闭定时器 TR0=0; //输出shu到lcd GE=SHU%10; SHI=SHU/10%10; BAI=SHU/100%10; qian="SHU/1000%10; WAN=SHU/10000; lcd_pos(0x00); lcd_wdat(WAN+0x30); lcd_wdat(QIAN+0x30); lcd_wdat(BAI+0x30); lcd_wdat(SHI+0x30); lcd_wdat(GE+0x30); lcd_wdat('" '); lcd_wdat('H'); lcd_wdat('Z'); //初始化 count=0; TH0=0x3C; TL0=0xB0; cf=1; TR0=1; cf=0; } }




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1