找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1808|回复: 0
打印 上一主题 下一主题
收起左侧

单片机stc89c52 lcd1602 9999秒倒计时 可按键控制

[复制链接]
跳转到指定楼层
楼主
ID:692206 发表于 2020-2-11 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
kr51开发板 stc89c52 lcd1602 废话不多说 看代
  1. #include "reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit rs=P2^0;//H数据,L命令
  5. sbit lcden=P2^2;//高脉冲使能,使能脉宽最小150ns
  6. sbit rw=P2^1;
  7. uchar code table[]= "welcome to use";
  8. uchar code table1[]="press the key";
  9. uchar code table3[]="Time remaining";
  10. sbit key1=P3^2;
  11. sbit key2=P3^3;
  12. sbit key3=P3^4;
  13. sbit key4=P3^5;
  14. uchar qian;
  15. uchar bai;
  16. uchar shi;
  17. uchar ge;
  18. int num=9999;//变量控制时间
  19. int a=0;
  20. int c=0;
  21. int d=0;//这三个变量请读者自行体会作用
  22. void anjian();//按键函数声明
  23. /********************************************************************
  24. * 名称 : delay(uchar x)
  25. * 功能 : 延时函数
  26. * 输入 : x
  27. * 输出 : 无
  28. ***********************************************************************/
  29. void delay(uchar x)
  30. { uint y;
  31. for(;x>0;x--)
  32.   {         
  33.   for(y=110;y>0;y--)
  34.     {};
  35.   }
  36. }
  37. /********************************************************************
  38. * 名称 : lcdwrcom(uchar cdat)
  39. * 功能 : LCD1602写数据到LCD1602
  40. * 输入 : cdat
  41. * 输出 : 无
  42. ***********************************************************************/
  43. void lcdwrdata(uchar dat)
  44. {
  45.    // dat = ((dat&0x01)<<7)|((dat&0x02)<<5)|((dat&0x04)<<3)|((dat&0x08)<<1)|((dat&0x10)>>1)|((dat&0x20)>>3)|((dat&0x40)>>5)|((dat&0x80)>>7);
  46. rs=1;//写数据时RS拉高
  47. lcden=1;
  48. P0=dat;
  49. delay(6);
  50. lcden=0;
  51. delay(6);
  52. }
  53. /********************************************************************
  54. * 名称 : lcdwrcom(uchar cdat)
  55. * 功能 : LCD1602写命令到LCD1602
  56. * 输入 : cdat
  57. * 输出 : 无
  58. ***********************************************************************/
  59. void lcdwrcom(uchar cdat)//写指令数据到LCD  
  60. {
  61.    // cdat = ((cdat&0x01)<<7)|((cdat&0x02)<<5)|((cdat&0x04)<<3)|((cdat&0x08)<<1)|((cdat&0x10)>>1)|((cdat&0x20)>>3)|((cdat&0x40)>>5)|((cdat&0x80)>>7);
  62.     rs=0;//写指令时RS拉低
  63. lcden=1;
  64.     P0=cdat;//
  65. delay(6);//不加此延时将导致不能写入指令,但能写入显示数据
  66. lcden=0;
  67. delay(6);
  68. }
  69. /********************************************************************
  70. * 名称 : lcd_init()
  71. * 功能 : LCD1602初始化
  72. * 输入 : 无
  73. * 输出 : 无
  74. ***********************************************************************/
  75. void lcd_init()
  76. {
  77. lcdwrcom(0x38);//0x38设置显示模式为:16X2 显示,5X7 点阵,8 位数据接口
  78. lcdwrcom(0x0c);//打开显示光标闪烁
  79. lcdwrcom(0x06);
  80. lcdwrcom(0x01);
  81. }
  82. void display(int numdis)//显示时间函数
  83. {
  84. qian=numdis/1000;
  85. bai=(numdis%1000)/100;
  86. shi=(numdis%100)/10;
  87. ge=numdis%10;
  88. }
  89. void init()//定时器初始化
  90. {
  91. TMOD=0X01;
  92. TH0=(65536-50000)/256;
  93. TL0=(65536-50000)%256;
  94. TR0=1;
  95. ET0=1;
  96. EA=1;
  97. }
复制代码







LCD1602 (1).zip

1.44 KB, 下载次数: 26, 下载积分: 黑币 -5

此为c文件,直接烧录就好

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表