单片机C语言应用100例
单片机C语言应用100例,单片机,语言,应用,利用,运用
/实例84:液晶时钟设计#include /包含单片机寄存器的头文件#include /包含随机函数rand()的定义文件#include /包含_nop_()函数定义的头文件sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚unsigned char code digit =“0123456789“; /定义字符数组显示数字unsigned char code string =“BeiJing Time“; /定义字符数组显示提示信息unsigned char count; /定义变量统计中断累计次数unsigned char s,m,h; /定义变量储存秒、分钟和小时/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms()unsigned char i,j;for(i=0;i10;i+)for(j=0;j33;j+); /*函数功能:延时若干毫秒入口参数:n*/void delay(unsigned char n)unsigned char i;for(i=0;in;i+)delay1ms();/*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/unsigned char BusyTest(void)bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1; /E=1,才允许读写_nop_(); /空操作_nop_();_nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间result=BF; /将忙碌标志电平赋给resultE=0; /将E恢复低电平return result;/*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高 ,/ 就是 E 0 1 变, 以应 置“0“_nop_();_nop_(); /空操作 个机器周期,给硬件反应时间P0=dictate; /将数据 入P0口, 写入指令或地址_nop_();_nop_();_nop_();_nop_(); /空操作四个机器周期,给硬件反应时间E=1; /E置高电平_nop_();_nop_();_nop_();_nop_(); /空操作四个机器周期,给硬件反应时间E=0; / E 高电平 变 低电平时,液晶模块 令/*函数功能:指定字符显示的实 地址入口参数:x*/void WriteAddress(unsigned char x)WriteInstruction(x|0x80); /显示位置的 定 规定为“80H+地址 x“/*函数功能:将数据(字符的标 ASCII )写入液晶模块入口参数:y(为字符 量)*/void WriteData(unsigned char y)while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据RW=0;E=0; /E置低电平(根据表8-6,写指令时,E为高 ,/ 就是 E 0 1 变, 以应 置“0“P0=y; /将数据 入P0口, 将数据写入液晶模块_nop_();_nop_();_nop_();_nop_(); /空操作四个机器周期,给硬件反应时间E=1; /E置高电平_nop_();_nop_();_nop_();_nop_(); /空操作四个机器周期,给硬件反应时间E=0; / E 高电平 变 低电平时,液晶模块 令/*函数功能: LCD的显示模式 设置*/void LcdInitiate(void)delay(15); /延时15ms,次写指令时应给LCD的反应时间WriteInstruction(0x38); /显示模式设置:162显示,57,8位数据currency1口delay(5); /延时5ms,给硬件反应时间WriteInstruction(0x38);delay(5);WriteInstruction(0x38); /“次, 功delay(5);WriteInstruction(0x0c); /显示模式设置:显示 ,fifl标,fl标不 delay(5);WriteInstruction(0x06); /显示模式设置:fl标,字符不delay(5);WriteInstruction(0x01); / 指令,将以的显示”delay(5);/*函数功能:显示小时 */void DisplayHour()unsigned char i,j;i=h/10; / , 位数字j=h%10; / , 位数字WriteAddress(0x44); /写显示地址,将位数字显示2 5WriteData(digiti); /将位数字的字符 量写入LCDWriteData(digitj); /将个位数字的字符 量写入LCD/*函数功能:显示分钟 */void DisplayMinute()unsigned char i,j;i=m/10; / , 位数字j=m%10; / , 位数字WriteAddress(0x47); /写显示地址,将位数字显示2 8WriteData(digiti); /将位数字的字符 量写入LCDWriteData(digitj); /将个位数字的字符 量写入LCD/*函数功能:显示秒 */void DisplaySecond()unsigned char i,j;i=s/10; / , 位数字j=s%10; / , 位数字WriteAddress(0x4a); /写显示地址,将位数字显示2 11WriteData(digiti); /将位数字的字符 量写入LCDWriteData(digitj); /将个位数字的字符 量写入LCD/*main function*/void main(void)unsigned char i;LcdInitiate(); /LCD 函数TMOD=0x01; /使定时器T0的模式1TH0=(65536-46083)/256; /定时器T0的高8位设置 值TL0=(65536-46083)%256; /定时器T0的低8位设置 值EA=1; / 中断ET0=1; /定时器T0中断允许TR0=1; /定时器T0count=0; /中断次数 为0s=0; /秒 为0m=0; /分钟 为0h=0; /小时 为0WriteAddress(0x03); /写地址, 1 4 显示i=0; / 字符数组的1个 显示while(stringi!=0) / 显示 字符 的 标志0,就 WriteData(stringi); /将i个字符数组 写入LCDi+; /指 个数组 WriteAddress(0x46); /写地址,将 个分号显示2 7WriteData(:); /将分号的字符 量写入LCDWriteAddress(0x49); /写地址,将 个分号显示2 10WriteData(:); /将分号的字符 量写入LCD while(1) /fi DisplayHour(); /显示小时delay(5); /给硬件反应时间DisplayMinute(); /显示分钟delay(5); /给硬件反应时间DisplaySecond(); /显示秒delay(5); /给硬件反应时间/*函数功能:定时器T0的中断 函数*/void Time0(void ) interrupt 1 using 1 /定时器T0的中断 号为1,使1组 作寄存器count+; / 1次中断,中断累计次数 1if(count=20) /如果中断次数计20次count=0; /中断累计次数0s+; /秒 1 if(s=60) /如果计60秒s=0; /秒0m+; /分钟 1if(m=60) /如果计60分m=0; /分钟0 h+; /小时 1if(h=24) /如果计24小时h=0; /小时0TH0=(65536-46083)/256; /定时器T0高8位 赋 值TL0=(65536-46083)%256; /定时器T0低8位 赋 值
收藏
编号:520475
类型:共享资源
大小:99.15KB
格式:RAR
上传时间:2019-03-08
10
积分
- 关 键 词:
-
单片机
语言
应用
利用
运用
- 资源描述:
-
单片机C语言应用100例,单片机,语言,应用,利用,运用
展开阅读全文
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。